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