← Volver al blog

Cómo hacer caber un portafolio completo en 512 MB de RAM

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.

  • #DigitalOcean
  • #Docker
  • #Optimización