💾 Archived View for gmi.dioniso.com.br › gmi › hospedar.gmi captured on 2024-05-10 at 10:38:18. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Hospedar um Servidor Gemini em casa

Neste HOWTO mostrarei as etapas para hospedagem de um servidor Gemini enquanto se tem a Vivo como Internet Service Provider em sua casa. Deve funcionar para outros ISPs, diferindo na parte de configuração da página do roteador.

Este tutorial não cobre a configuração do firewall. Saiba mais:

ufw

---

Visão Geral

[0] Requisitos para este tutorial

[1] Configuração do DDNS

[2] Configuração na página do roteador da Vivo

[3] Preparação do ambiente

---

Requisitos para este tutorial

Configuração do DDNS (Dynamic Domain Name System)

Com um DDNS você pode associar um endereço IP dinâmico a um domínio.

Uso o DuckDNS para este fim:

duckdns

1. Na página principal do DuckDNS, depois de ter logado, aparece domínios para registro. O DuckDNS possibilita a criação de 5 domínios.

Os domínios vão ser como: subdomínio.duckdns.org

2. Enfim, escolha qualquer palavra existente ou não existente para substituir o 'subdomínio' - desde que esteja disponível para uso. Após a escolha, clique em 'add domain'

3. Não precisamos associar um endereço IP até então - vamos criar um trabalho para o Cron mais para frente do tutorial que vai atribuir o endereço IP ao domínio de maneira constante.

Configuração na página do roteador da Vivo

1. Entre no endereço do seu roteador, comumente: 192.168.15.1

2. Coloque as credenciais e logue - vide informações em baixo do roteador para credenciais.

3. Em Rede Local na seção Redirecionar Portas crie uma regra como seguinte:

4. Clique em ADICIONAR

Preparação do ambiente

gemini

Método de configuração do ambiente Gemini no servidor conforme o tutorial presente em LandChad.net: (com algumas alterações)

Criar um usuário e logar com ele.

# useradd -m -s /bin/bash gemini
# su -l gemini

Criar a estrutura de diretórios.

$ mkdir -p ~/capsule/{content,certificate,server}

Entrar na pasta de certificados e criar um certificado. Note: alterar example.duckdns.org para o seu domínio (use o DNS a DDNS, se tiver).

$ cd ~/capsule/certificate
$ openssl req -new -subj "/CN=example.duckdns.org" -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 3650 -nodes -out cert.pem -keyout key.pem

Nesta etapa: o uso de software de hospedagem Gemini. No exemplo é usado o Agate, mas pode escolher outros:

servers

Entrar na pasta server, baixar o binário do Agate (no exemplo: x86_64 v3.3.6) empacotado, descomprimir, alterar o nome do arquivo de saída e dar permissão de execução ao mesmo.

$ cd ~/capsule/server
$ wget https://github.com/mbrubeck/agate/releases/download/v3.3.6/agate.x86_64-unknown-linux-gnu.gz
$ gunzip agate.x86_64-unknown-linux-gnu.gz
$ mv agate.x86_64-unknown-linux-gnu agate
$ chmod u+x agate

Entrar na pasta capsule e criar um arquivo chamado agate.service, esse arquivo está instruindo a iniciação do servidor Agate - como serviço do systemd.

$ cd ~/capsule 
$ cat << EOF > agate.service
[Unit]
Description=agate
After=network.target

[Service]
User=gemini
Type=simple
ExecStart=/home/gemini/capsule/server/agate --content /home/gemini/capsule/content --certs /home/gemini/capsule/certificate --hostname example.duckdns.org 

[Install]
WantedBy=default.target
EOF

Alterar example.duckdns.org para seu domínio.

$ sed -i s/example.duckdns.org/foobar.duckdns.org/g agate.service

Retornar ao ~ (home) e criar pasta para o DuckDNS. 'ls' para mostrar.

$ cd ~
$ mkdir duckdns
$ ls
capsule  duckdns

Entrar na pasta duckdns e criar um script para atualização do endereço IP. Substitua as variáveis subDomain e token para os seus valores respectivos com algum editor de texto: o token é o mostrado na página principal do DuckDNS, depois de ter logado, e o subDomain é subdomínio que você configurou. Depois de tudo, dê uma permissão razoável ao arquivo (700).

$ cd duckdns
$ cat << EOF > duck.sh
#!/bin/sh
# update ip address

subDomain=""
token=""

echo url="https://www.duckdns.org/update?domains=${subDomain}&token=${token}&ip=" | curl -k -o ~/duckdns/duck.log -K -
EOF
$ chmod 700 duck.sh

Criar um trabalho ao Cron para cada 5 minutos na tabela do usuário gemini e retornar como root.

$ crontab -e

$ exit

Criar um link simbólico do serviço Agate na pasta que aloca serviços do systemd e iniciar/habilitar o Agate. Também permitir tráfico pela porta 1965.

# ln -s /home/gemini/capsule/agate.service /etc/systemd/system/agate.service
# systemctl enable --now agate
# ufw allow 1965

A pasta ~/capsule/content do usuário gemini é o conteúdo fornecido pela sua cápsula.

Para começar, crie um arquivo index.gmi nesta pasta, isto é a página principal.

Para saber sobre a formatação de arquivo Gemini:

introdução rápida ao gemtext