Files
SKEEN-Proyecto/infra/ops
..

infra/ops — backups automáticos y panel multi-instancia

Operación comercial de la VPS: backups verificados por instancia y un panel/CLI para administrar todas las instancias SKEEN. Guía completa: ../../docs/producto/operacion-instancia.md.

Las instancias no se hardcodean: se descubren desde las unidades odoo-*.service (leyendo de cada una su -c <conf>). Una instancia nueva creada con infra/provision/ entra sola.

Comandos rápidos

cd /root/skeen-proyecto/infra/ops

# ---- Backups ----
./backup_instancias.sh                    # todas las instancias (dump + config + rotación)
./backup_instancias.sh --instancia skeen  # solo una
./backup_instancias.sh --verificar        # + prueba de restauración real
./backup_instancias.sh --solo-db          # sin respaldar configuración
./backup_instancias.sh --dry-run          # simular (incluye plan de rotación)

# ---- Panel ----
./admin_instancias.py listar              # tabla de instancias (por defecto)
./admin_instancias.py estado skeen
./admin_instancias.py version
./admin_instancias.py uso
./admin_instancias.py instalacion clinica2
./admin_instancias.py logs clinica2 -n 30
./admin_instancias.py credenciales skeen            # solo la ruta
./admin_instancias.py credenciales skeen --mostrar  # incluye passwords
./admin_instancias.py backup skeen --yes            # acción que cambia estado
./admin_instancias.py --json listar                 # salida JSON

# ---- Estado de los timers ----
systemctl list-timers | grep skeen
journalctl -u skeen-backup.service -n 50
tail -f /var/log/skeen-backup.log

Retención (en backup.env)

Por defecto 14 diarios / 8 semanales / 6 mensuales (esquema abuelo-padre-hijo con buckets exclusivos). El backup más reciente y el representante mensual nunca se borran. Cambiar RETAIN_* en backup.env para ajustar.

Instalación de las unidades

cp systemd/*.service systemd/*.timer /etc/systemd/system/
cp logrotate/skeen-backup /etc/logrotate.d/skeen-backup
systemctl daemon-reload
systemctl enable --now skeen-backup.timer skeen-backup-verify.timer

Estructura

Archivo Para qué
backup_instancias.sh Backup por instancia (dump + config, integridad, rotación, --verificar).
backup.env Destinos, credenciales de DB, retención, log.
admin_instancias.py Panel/CLI multi-instancia (stdlib, read-only por defecto).
systemd/ skeen-backup* (diario + verificación semanal) y backup-instancia@ (por instancia).
logrotate/skeen-backup Rotación de /var/log/skeen-backup.log.