Cómo instalar un servidor para el protocolo Gemini
En el artículo anterior comentaba acerca del protocolo Gemini y como navegar por sus cápsulas. Todo esto puede resultar simplemente una curiosidad o despertar mucho interés en personas que les guste encontrar cosas interesantes enterradas en las profundidades del ciberespacio.
Hay quienes quieran entrar de lleno en el tema y generar contenido en modo texto mediante este protocolo. Y que decirles, tener una de estas cápsulas no es muy complicado:
Requisitos antes de comenzar
- Un servidor (Raspberry, VPS, NAS, etc)
- Un nombre de dominio (apuntando al servidor)
- Puerto TCP 1965 abierto en el servidor y en el router
Preparación
a. En el servidor necesitaremos crear un directorio /gemini y subdirectorios /content y /certificate:
mkdir -p gemini/{content,certificate}
b. Crearemos una pequeña cápsula de ejemplo:
nano gemini/content/index.gmi
# Este es el Título
## Esta Cápsula funciona!
Hello world
El contenido en este archivo es texto plano, con un lenguaje de marcado similar a Markdown llamado Gemtext. Aquí tienes una breve introducción a Gemtext.
Instalación del servidor Gemini
Hay muchos servidores disponibles. Yo elegí uno llamado Molly-Brown que está disponible para arquitectura ARM desde los repositorios de Ubuntu.
sudo apt install molly-brown
Esta es la página del proyecto con la respectiva documentación.
Creación del certificado
Entramos al directorio /certificate:
cd gemini/certificate
y lo creamos:
openssl req -new -subj "/CN=capsula.milangaelectronica.com.ar" -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 3650 -nodes -out cert.pem -keyout key.pem
Configuración
El archivo de configuración por defecto esta ubicado en /etc/molly.conf
sudo nano /etc/molly.conf
y configuramos los respectivos campos como en el ejemplo de abajo, cambiando las rutas y el nombre de dominio por los que hayamos elegido:
# Molly Brown localhost server config using snakeoil certificates
CertPath = "~/gemini/certificate/cert.pem"
KeyPath = "~/gemini/certificate/key.pem"
DocBase = "~/gemini/content/"
AccessLog = "-"
ErrorLog = "/home/ubuntu/oracle-arm/gemini/server/errors.log"
Port = 1965
Hostname = "capsula.milangaelectronica.com.ar"
Configuración del servicio con Systemd
sudo nano /etc/systemd/system/molly-brown.service
Y usamos el contenido de este ejemplo:
[Unit]
Description=Molly Brown gemini server
After=network.target
[Service]
Type=simple
Restart=always
User=ubuntu
ExecStart=/usr/bin/molly-brown
[Install]
WantedBy=multi-user.target
Activamos el el servicio:
sudo systemctl enable molly-brown.service
sudo systemctl start molly-brown.service
En caso de tener un proxy inverso en el servidor:
Yo suelo utilizar Caddy, por lo que poniendo el siguiente registro al final del archivo Caddyfile funcionó sin problemas:
capsula.milangaelectronica.com.ar {
reverse_proxy 127.0.0.1:1965
}
Referencias
- https://gemini.circumlunar.space/
- https://www.makeuseof.com/build-a-gemini-server-linux/
- https://tildegit.org/solderpunk/molly-brown
- https://www.ochobitshacenunbyte.com/2021/11/15/como-crear-una-capsula-gemini-en-linux/
- https://victorhckinthefreeworld.com/2021/11/01/introduccion-rapida-del-lenguaje-de-marcado-para-el-protocolo-gemini/
- https://es.wikipedia.org/wiki/Gemini_(protocolo)
- https://www.ochobitshacenunbyte.com/2021/10/27/conociendo-el-protocolo-gemini/
Suscríbete en Spotify, iVoox, Google Podcast o en Apple Podcast.