El presupuesto
Un droplet de 512 MB no es un servidor pequeño: es un servidor lleno antes de que despliegues nada.
| Componente | RAM |
|---|---|
| Ubuntu 24.04 | ~130 MB |
| Docker daemon | ~70 MB |
| Gunicorn + Django | ~150 MB |
| Nginx | ~15 MB |
| Total | ~365 MB |
Quedan unos 145 MB de margen. Todo lo que sigue se deriva de ese número.
Regla 1: el servidor no compila
Un build de Astro pide entre 400 y 800 MB de pico. Ejecutarlo aquí significa thrashing de swap durante diez minutos o, directamente, un OOM kill.
# Esto es lo único que corre el servidor:
docker compose pull && docker compose up -d
El build vive en GitHub Actions, que además es gratis para repos públicos.
Regla 2: nada de Redis, ni Postgres, ni Node
Cada uno cuesta entre 40 y 120 MB. En su lugar: caché en memoria del proceso, SQLite en modo WAL y HTML estático servido por Nginx.
Regla 3: rotar los logs de Docker
La causa de caída más común en droplets pequeños no es la RAM: es el disco lleno de logs JSON que nadie configuró para rotar.
{ "log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" } }
El dashboard de métricas de este sitio muestra el resultado en vivo.