# 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`](../../docs/producto/operacion-instancia.md). Las instancias **no se hardcodean**: se descubren desde las unidades `odoo-*.service` (leyendo de cada una su `-c `). Una instancia nueva creada con `infra/provision/` entra sola. ## Comandos rápidos ```bash 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 ```bash 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`. |