[ PLAYBOOK · 06 ] · 9 DE MAYO DE 2026 · 3 min
Autohospeda n8n en un Hetzner CX23 en una tarde.
Un stack de dos horas: Docker Compose con Postgres 16 y Caddy. El riesgo no está en el setup; está en los defaults de retención que aceptas sin leer y los respaldos que olvidas probar.
La postura
Un n8n autohospedado en un Hetzner CX23 con Postgres y Caddy es un trabajo de dos horas para un ingeniero que ya tocó Docker antes. El riesgo no está en el setup. El riesgo está en los defaults de retención que aceptas sin leerlos y en los respaldos que nunca pruebas restaurando.
Por qué este stack
El CX23 de Hetzner cuesta alrededor de 4 euros al mes por dos vCPU, cuatro gigabytes de RAM y cuarenta gigabytes de disco. La mayoría de las cargas de automatización de una pyme entran cómodas dentro de ese sobre. Una arquitectura de referencia común, replicada en los ejemplos oficiales de hosting de n8n, es la que usamos aquí: n8n en un contenedor, Postgres 16 en otro y Caddy como reverse proxy en un tercero. Caddy entrega TLS gratis vía Let's Encrypt sin ceremonia de certbot. Postgres aguanta ejecuciones concurrentes; el SQLite por defecto no.
Cuándo se rompe
n8n en un solo nodo se rompe cuando necesitas redundancia o queue mode para alta concurrencia. Los despliegues solo con SQLite se rompen bajo cualquier carga real. Perder la encryption key de n8n rompe cada credencial guardada en tu bóveda, y no hay camino de recuperación. Si no puedes comprometerte con respaldos fuera de la instancia y una ventana mensual de actualización, no eres dueño de esto. Estás alquilando una caída.
Qué hacer esta tarde
- Levanta un CX23 (Ubuntu 24.04 LTS) en Hetzner Cloud. Cinco minutos.
- Apunta un subdominio a la IP pública. Espera la propagación de DNS.
- Instala Docker Engine y el plugin Compose.
- Genera tres secretos: una contraseña para Postgres, una encryption key para n8n y una contraseña para basic-auth. Guarda la encryption key en un gestor de contraseñas con respaldo. Sin ella, cada credencial guardada se vuelve basura.
- Usa el archivo Docker Compose oficial de n8n. En el servicio n8n, define
EXECUTIONS_DATA_PRUNE=trueyEXECUTIONS_DATA_MAX_AGE=168para conservar una semana de historial de ejecuciones. Versiones recientes de n8n activan la poda por defecto con una ventana de 14 días; las variables explícitas ajustan la retención y sobreviven a futuros cambios de defaults. docker compose up -d. Caddy negocia el certificado en la primera solicitud.- Instala restic. Respalda el volumen de Postgres todas las noches a un Storage Box de Hetzner o a cualquier almacenamiento fuera de la instancia. Corre una restauración de prueba antes de confiar en el cron.
- Agenda en el calendario una ventana mensual de actualización: respaldo, después
docker compose pull && docker compose up -d.