Cómo crear una cápsula Gemini en Linux

Os explico cómo crear vuestra propia cápsula Gemini. Hay que recordar que hace no mucho os expliqué en que consistía este protocolo de Internet, que busca la simplicidad y la privacidad.

Debemos tener en cuenta que este protocolo utiliza el puerto 1965 de forma predeterminada. Por lo que podemos tener en el mismo lugar un servidor web clásico en el puerto 80 y 443, ya sea, por ejemplo, con Nginx o Apache, y a su vez cápsulas Gemini en el puerto 1965.

Imagen de una cápsula del programa Gemini de la nasa (Public Domain)

Crear una cápsula Gemini en Linux

Primero de todo tenemos que ir a nuestro a nuestro gestor de DNS en la web, y añadir un registro «A» que apunte a nuestro VPS. En mi caso, he creado un subdominio «sitio.bitsandlinux.com»

Una vez hecho esto accedemos a nuestro VPS, que en mi caso es uno ofrecido por la empresa Clouding.io, ubicada en mi ciudad, Barcelona.

Crear nuevo usuario

Como primer caso creamos un nuevo usuario:

useradd -m -s /bin/bash gemini

Empezamos a trabajar con el nuevo usuario:

su -l gemini

Creamos el árbol de carpetas que utiliza la nueva cápsula:

mkdir -p ~/gemini/{content,certificate,server}

Explico brevemente para qué es cada nueva carpeta:

  • content: Donde se ubicarán las páginas de nuestra cápsula.
  • certificate: Tal y como sugiere el nombre, aquí se guardarán los certificados TLS
  • server: Aquí guardaremos los binarios que hacen posible el funcionamiento de Gemini.

Contenido

En la carpeta «content» es donde ubicaremos todo el contenido de la cápsula. Gemini utiliza el lenguaje de marcas text/Gemini, en lugar de HTML. Es similar a Markdown. Como extensión de los ficheros utiliza .gmi

Para crear un archivo Gemini, debemos ir a este directorio y crear un fichero de índice llamado index.gmi

Para crear un archivo Gemini, debemos ir a este directorio y crear un fichero de índice llamado index.gmi

Y añadimos a modo de prueba:

# Esto es un ejemplo
## Con el header 1 y el header 2
Esto es una texto de prueba
# Linkeamos a la misma página
=> /index.gmi

Certificado TLS

Nos vamos al directorio «certificate» y creamos los certificados TLS

cd ~/gemini/certificate/
openssl req -new -subj "/CN=sitio.bitsandlinux.com" -x509 \
-newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 3650 \
-nodes -out cert.pem -keyout key.pem

El servidor Gemini

Hay muchas opciones de software de servidor Gemini disponible. Usaremos el servidor agate por ahora. Un servidor escrito en Rust.

Es una buena idea obtener siempre la versión más reciente, que podemos ver en la página de lanzamiento de agate. Lo descargamos en el directorio «server»

cd ~/gemini/server
wget https://github.com/mbrubeck/agate/releases/download/v3.1.0/agate.x86_64-unknown-linux-gnu.gz

Descomprimimos y cambiamos el nombre del fichero:

gunzip agate.x86_64-unknown-linux-gnu.gz
mv agate.x86_64-unknown-linux-gnu agate-server
chmod +x agate-server

Crear el servicio en Systemd

En esta parte creamos un servicio en systemd, para poder operar de forma fácil.

vim /etc/systemd/system/agate.service

Y añadimos:

[Unit]
Description=agate
After=network.target
 
[Service]
User=gemini
Type=simple
ExecStart=/home/gemini/gemini/server/agate-server --content /home/gemini/gemini/content \
--certs /home/gemini/gemini/certificate/ --hostname sitio.bitsandlinux.com --lang es-ES
 
[Install]
WantedBy=default.target

Añadimos al arranque y encendemos:

systemctl enable agate
systemctl start agate

Habilitar puerto en cortafuegos/

Si tenemos el cortafuegos habilitado en el propio nodo, tenemos que habilitar el puerto de Gemini, que como hemos dicho es el 1965

En Ubuntu con UFW lo haríamos así:

ufw allow 1965

Si todo ha ido bien ya tendríamos que poder acceder, utilizando algunos servidores proxy como mozz.us o Vulpes Proxy.

Consulta de cápsula utilizando proxy.vulpes.one

Podéis ampliar información como crear cápsulas Gemini en entos enlaces:

Landchat.net – Gemini

A quick introduction to «gemtext» markup