EN | ES

Ritual de Mantenimiento de Yunohost

Actualmente, nuestro servidor de yunohost en Lima tiene una copia de seguridad automatizada diaria a borgbase. Borgbase nos notificará si pasan más de 10 días sin que se suba nuevo contenido, lo cual es una buena salvaguarda para asegurar que las copias de seguridad continúen funcionando, pero no verifica la integridad de las copias de seguridad (que las aplicaciones en funcionamiento realmente puedan ser restauradas a partir de las copias de seguridad).

Este ritual tiene la intención de hacer dos cosas:

Este ritual requiere la existencia de dos (o más) servidores corriendo yunohost, así como acceso a la copia de seguridad de borgbase.

Si no tienes las credenciales para todo esto, entonces envía un mensaje a alguien en Signal que las tenga, y te enviarán un pastebin de "quemar después de leer" con las credenciales necesarias.

Pasos

En este procedimiento, estamos migrando un conjunto de aplicaciones de un servidor yunohost a otro, a través de las copias de seguridad que se toman a borgbase. También cambiaremos todos los dominios asociados con estas aplicaciones para que apunten a la dirección IP de tailscale del nuevo servidor en lugar del viejo servidor en el proceso. En los siguientes pasos, el servidor del cual estamos migrando se llamará "servidor viejo" y el servidor al cual estamos migrando se llamará "servidor nuevo", aunque el "servidor viejo" estará "activo" hasta que terminemos de activar el "servidor nuevo".

  1. Antes de empezar, actualiza todas las aplicaciones y el sistema del servidor viejo y del servidor nuevo a la última versión. Esto se puede hacer a través de la sección "Actualización del Sistema" de la interfaz web de administración de yunohost en ambos servidores. Antes de migrar, es útil asegurar que ambos servidores estén corriendo la misma versión de yunohost (a través de esta actualización), y actualizar a la última versión es una buena práctica de mantenimiento de todos modos, por lo que también tiene sentido incluir esta tarea al inicio de esta receta.
  2. Para cada una de las aplicaciones que vamos a migrar del servidor viejo al servidor nuevo, accede a la interfaz web de administración del gateway y cambia la dirección IP de su dominio asociado de la IP de tailscale del servidor viejo a la IP de tailscale del servidor nuevo (después de actualizar esto en el gateway, en este momento, todas estas aplicaciones estarán temporalmente fuera de servicio, hasta que terminemos la migración).
  3. Inicia una copia de seguridad de todas las aplicaciones en el servidor viejo
    • Haz ssh en el servidor viejo (por ejemplo, ssh insun@lima-tailscale-ip), y luego ejecuta systemctl start borg, lo cual inicia una nueva copia de seguridad. Puedes confirmar que la copia de seguridad terminó ingresando a https://borgbase.com.
  4. En el servidor viejo, en la interfaz web de administración de yunohost, en la aplicación borg, puedes encontrar instrucciones sobre cómo descargar las copias de seguridad de borgbase (pero no las ejecutes aún). Se verá algo como lo siguiente:
app=borg
PATH="/var/www/$app/venv/bin/:$PATH"
export BORG_PASSPHRASE="$(sudo yunohost app setting $app passphrase)" 
export BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes"
repository="$(sudo yunohost app setting $app repository)"

Entonces ejecuta, por ejemplo:

    Listar archivos: borg list "$repository" | less
    Listar archivos de un archivo específico: borg list "$repository::ARCHIVE_NAME" | less
    Ver información del archivo: borg info "$repository::ARCHIVE_NAME"
    Verificar la integridad de los datos: borg check "$repository::ARCHIVE_NAME" --verify-data
  1. Para cada uno de los dominios asociados a las aplicaciones que estamos migrando, en el servidor nuevo, en la interfaz web de administración de yunohost, asegúrate de que el dominio esté creado en el servidor nuevo, que tenga un certificado https y que no haya ninguna aplicación instalada allí.
  2. Haz ssh en el servidor nuevo y utiliza los comandos de borg que encontramos en el paso 2 para descargar los archivos que necesitamos para todas las aplicaciones que estamos migrando al servidor nuevo.
  3. Después de descargar los archivos en el servidor nuevo, usa mv para colocarlos en el lugar correcto donde yunohost busca las copias de seguridad (/home/yunohost.backup/archives).
  4. En la interfaz web de administración de yunohost del servidor nuevo, ve a la sección de copias de seguridad y encuentra las copias de seguridad que descargaste. Haz clic en "restaurar" para restaurar cada una de las copias de seguridad (o todas a la vez si las descargaste juntas).
  5. Para cada una de las aplicaciones que se migraron, ahora puedes ir a su nuevo dominio y ver que se están ejecutando correctamente en el servidor nuevo. La migración ahora está completa.
  6. Si algo no funciona en el servidor nuevo, puedes revertirlo a la versión antigua, volviendo a ingresar a la interfaz de administración del gateway y cambiando su dominio para que apunte nuevamente a la IP de tailscale del servidor viejo.
  7. Por último, registra en el registro de mantenimiento las acciones de mantenimiento que realizaste para que otros puedan seguirlas.

Nota: Quizás en el futuro, alguna o toda esta receta podría ser automatizada a través de scripts bash, pero descomponerla en partes manuales también podría ser útil para entender y colectivizar el conocimiento.

*Otra idea: podría ser interesante tener siempre ambas servidores con algunas aplicaciones en funcionamiento, de modo que ningún servidor sea "la copia de seguridad". En su lugar, a través de este ritual, se intercambian qué aplicaciones están en qué servidor.