💾 Archived View for logdog.flounder.online › tutorials › gemini.gmi captured on 2024-05-10 at 10:44:03. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-12-28)
-=-=-=-=-=-=-
2023-12-11
#tutoriales #gemini
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
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
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
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"
sudo vim /etc/systemd/system/molly-brown.service
[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
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
#!/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
#!/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