💾 Archived View for logdog.flounder.online › tutorials › gemini.gmi captured on 2024-05-26 at 14:38:06. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-12-28)

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

Cómo publico esta cápsula gemini

2023-12-11

#tutoriales #gemini

Requisitos

Preparación

mkdir -p gemini/{content,certificate}
 # Este es el Título
 ## Esta Cápsula funciona!
 Hello world

Aquí puedes ver una introducción a la sintaxis 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 update
sudo apt install molly-brown 

Generar el certificado

Entramos al directorio /certificate:

cd gemini/certificate

y lo generamos:

openssl req -new -subj "/CN=gmi.manugallego.es" -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 vim /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 = "/home/user/gemini/certificate/cert.pem"
 KeyPath = "/home/user/gemini/certificate/key.pem"
 DocBase = "/home/user/gemini/content/"
 AccessLog = "/home/user/gemini/server/access.log
 ErrorLog = "/home/user/gemini/server/errors.log"
 Port = 1965
 Hostname = "gmi.manugallego.es"

Configuración del servicio con Systemd

sudo vim /etc/systemd/system/molly-brown.service

Ejemplo:

[Unit]
Description=Molly Brown gemini server
After=network.target

[Service]
Type=simple
Restart=always
User=USERNAME
ExecStart=/usr/bin/molly-brown

[Install]
WantedBy=multi-user.target

Habilitamos y activamos el servicio:

sudo systemctl enable molly-brown.service
sudo systemctl start molly-brown.service

Publicación

Repositorio Git

En mi caso tengo  un repositorio Git en Codeberg que utilizo como backup y control de versiones
y un script que se ejecuta con el hook de git pre-push que publica directamente con rsync y ssh

Script pre-push en .git/hooks/pre-push:

 #!/bin/bash

 SCRIPT_PATH="/home/path/to/upload_script/upload.sh"

 if [ -x "$SCRIPT_PATH" ]; then
    $SCRIPT_PATH
else
    echo "El script de subida no existe o no es ejecutable."
fi
echo "Fin de pre-push" >> /path/to/pre-push.log

Script de subida

#!/bin/bash

local_dir="./content"
remote_user="USERNAME"
remote_host="HOST"
remote_path="/home/path/to/content_dir"

rsync -avz -e "ssh $local_dir $remote_user@$remote_host:$remote_path

if [ $? -eq 0 ]; then
    echo "¡Copia correcta!"
else
    echo "Error al copiar. Código de salida: $?"
fi

Referencias

*Codeberg

Instalación de Molly-Brown

Introducción a Gemtext

Back

Inicio