💾 Archived View for tilde.pink › ~imbrica › pt › log › 2022-03-28-gemini-local.gmi captured on 2024-02-05 at 11:11:19. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
seg 28 mar 2022 14:51:57 -03
Até hoje eu atualizava essa página através de uma conexão ssh. Isso me limitava de algumas formas:
A primeira coisa que tentei fazer foi usar os navegadores Gemini como o Lagrange e o Amfora para visualizar as páginas. Mas isso não deu tão certo, pelo menos não da mesma forma que um navegador convencional consegue abrir arquivos HTML.
Como já sabia que os servidores Gemini prezam pela simplicidade, decidi tentar instalar e executar um localmente.
Agora posso trabalhar nele a partir da minha máquina local, enviar as mudanças para um repositório Git e deixar que o servidor clone ele automaticamente!
Passar o dia fazendo estudos técnicos do tipo é uma das coisas que mais me absorve nessa vida.
Se você tiver interesse em fazer algo parecido, vou detalhar um pouco melhor como fazer isso:
Por falta de tempo, esse texto não é um tutorial minucioso. Ele presume que você já tenha algum conhecimento sobre Linux e Git.
Saber algo de Python pode ajudar para você guardar suas configurações do servidor em um arquivo, mas isso não é um requisito para que ele funcione.
Esses foram os passos que eu precisei seguir:
Na página oficial do projeto há uma lista com servidores e clientes:
Escolhi trabalhar com o Jetforce por ele ser escrito em Python e parecer ser simples de usar.
Instalar o Jetforce foi bastante fácil usando o pip:
$ pip install jetforce
Se você não tem familiaridade com o pip pode encontrar a documentação traduzida nos links abaixo:
A documentação do Jetforce você encontra no repositório:
Uma vez tendo ele instalado, você já pode rodar um servidor Gemini local:
$ jetforce --host "127.0.0.1" --dir /seu/diretorio
Isso inicializa o Jetforce com configurações mínimas. Aponte o parâmetro --dir para a raiz das suas páginas Gemini.
Tenha cuidado ao rodar um servidor, já que ele pode expor sua conexão para a internet pública! Usando o parâmetro acima, --host "127.0.0.1", você não deve correr risco de fazer isso. O parâmetro que permite o acesso público é --host 0.0.0.0.
Outra forma é criando um arquivo Python que já tenha suas configurações. Assim você pode apenas executá-lo para iniciar o servidor.
Neste exemplo você pode ver o arquivo Python que escrevi me baseando nos exemplos do repositório do Jetforce no GitHub:
from jetforce import GeminiServer, StaticDirectoryApplication app = StaticDirectoryApplication("public_gemini") if __name__ == "__main__": server = GeminiServer(app, host="127.0.0.1", hostname="localhost") server.run()
Substitua "public_gemini" pela pasta onde estão seus arquivos gmi.
Arquivos gmi são arquivos de texto plano com uma formatação muito básica, parecida com uma versão simplificada da sintaxe Markdown.
Você pode criar um arquivo index.gmi e criar links para seus outros arquivos assim:
=> arquivo.gmi Texto do seu link
Uma vez que seu servidor esteja rodando ele irá procurar por um arquivo index.gmi na pasta que você indicou pelo argumento --dir ou no seu arquivo Python.
Agora você pode abrir seu navegador Gemini (como o Lagrange ou o Amfora) e abrir o endereço "localhost".
Eu tentei por um bom tempo abrir o endereço "127.0.0.1" sem sucesso, e recebia o erro "This server does not allow proxy requests".
Pesquisando descobri que o Jetforce bloqueia o acesso por qualquer endereço diferente do hostname configurado, neste caso, "localhost".
Outra coisa curiosa é que não é necessário especificar a porta padrão do Jetforce (1965). Você aponta o navegador apenas para "localhost", que é o mesmo que "gemini://localhost/".
Agora você pode criar e vincular um repositório Git onde guardar sua pasta com textos gmi e demais arquivos relacionados.
Para fazer um servidor Linux clonar esse repositório regularmente você pode usar um cron job.
Espero que esse texto possa ter ajudado você a rodar um servidor Gemini de forma local. Infelizmente não há quase nenhum conteúdo sobre Gemini em português, então se você ficou com alguma dúvida sobre o processo não há problema em entrar em contato.