Operación y estándares

Backups & Base de datos

  • PostgreSQL central (futuro PgBouncer).
  • Dumps diarios locales + (opcional) subida a S3.
  • Retención sugerida: 7 días locales + 30 en remoto.

Dump manual

PGPASSWORD=*** pg_dump -h localhost -U user dbname | gzip > /var/backups/dbname-$(date +%F).sql.gz

status.json

Documento JSON consumido por el infra-monitor para pintar el estado. Debe incluir cada servicio con systemd y HTTP (local/público) cuando aplique.

Debugging rápido

¿Qué falla? Comando Pista
Servicio down systemctl status <slug> Logs de run.py/gunicorn/uvicorn
HTTP down curl -I 127.0.0.1:PORT/health ¿Escucha el backend?
502 journalctl -u caddy -n 50 Proxy/backend mal
TLS caddy validate Token Cloudflare
Ports ss -ltnp | grep :PORT Conflictos

Troubleshooting

systemd en loop (restart storm)

sudo systemctl status <slug> -l --no-pager
sudo journalctl -u <slug> -n 200 --no-pager

Revisar StartLimit*, excepciones en run.py y que se usen módulos (-m) para gunicorn/uvicorn.

Gunicorn no encontrado

Usar sys.executable -m gunicorn (respeta venv) o instalar en el venv:

sudo -u <slug> /srv/projects/<slug>/venv/bin/pip install --upgrade gunicorn

Copiar TODOS los docs

Este botón carga cada documento, los concatena con separadores y los copia al portapapeles para pegarlos directo en el LLM.

Cargar & Copiar