n8n self-hosted conforme a la DSGVO 2026: guía paso a paso con Hetzner
Opera n8n conforme a la DSGVO en servidores europeos: configura un Hetzner Cloud CX22 en 30 minutos, con Docker Compose, TLS automático mediante Caddy, backups diarios en una Hetzner Storage Box y monitorización continua, desde 5 EUR al mes y sin dependencia de la nube estadounidense.
El self-hosting de n8n significa operar la plataforma open source de automatización de flujos de trabajo n8n en tu propio servidor: bajo tu control total, en un centro de datos de la UE y sin que los datos de tus flujos ni las credenciales abandonen jamás el servidor de un tercero.
¿Por qué alojar n8n por tu cuenta? DSGVO, costes y control de los datos
Para las empresas que canalizan datos personales a través de automatizaciones (contactos de clientes, facturas, datos de RR. HH.), la cuestión del alojamiento no es meramente técnica: es una cuestión de cumplimiento. n8n Cloud y plataformas SaaS competidoras como Zapier o Make.com almacenan los datos de ejecución de los flujos en servidores fuera de la UE, lo que, con datos sensibles, exige un contrato de encargo de tratamiento conforme al art. 28 de la DSGVO y, en algunos casos, puede resultar problemático.
El self-hosting resuelve este problema por completo: todos los datos de los flujos, las credenciales y los registros de ejecución permanecen en tu servidor, en un centro de datos europeo de Hetzner Cloud, certificado según la ISO 27001 y conforme a la DSGVO. El Compendio BSI IT-Grundschutz, módulo OPS.1.1.7 (automatización de procesos operativos) recomienda expresamente operar los procesos automatizados que manejan datos personales o relevantes para la seguridad bajo control organizativo pleno e introducir conceptos de autorización separados.
La segunda ventaja es de naturaleza económica: la n8n Community Edition no tiene costes de licencia (licencia MIT). Solo pagas el servidor de Hetzner, desde 5 EUR al mes por un Hetzner CX22. Con él puedes operar hasta 100 flujos activos con cientos de ejecuciones diarias. En comparación, Zapier cuesta entre 99 y 299 USD al mes para un volumen de ejecución equivalente.
El control total de los datos es el tercer aspecto: tú decides cuánto tiempo se conservan los datos de ejecución, qué personas tienen acceso a las credenciales y cómo se configuran los backups y los planes de contingencia. Según el art. 32 de la DSGVO (seguridad del tratamiento), estas medidas técnicas y organizativas son en cualquier caso obligatorias, y el self-hosting facilita su aplicación y su demostrabilidad.
Coste de infraestructura para un setup de n8n listo para producción (Hetzner CX22)
Quelle: Lista de precios de Hetzner Cloud 2025, 2025De un servidor vacío a una instancia de n8n en funcionamiento con TLS
Quelle: Valor empírico de Wito AI (n=12 proyectos self-hosted), 2025con self-hosting, frente al 61 % de un uso de la nube sin regular
Quelle: Guía Bitkom sobre uso de la nube conforme a la DSGVO 2024, 2024con self-hosting: sin tratamiento de datos por terceros (art. 28 de la DSGVO)
Quelle: Art. 28 de la DSGVO — Encargado del tratamiento, 2024Requisitos de hardware: ¿qué servidor de Hetzner es suficiente?
Para la mayoría de los entornos de pyme con hasta 100 flujos activos, un Hetzner CX22 (2 vCPU, 4 GB de RAM, 40 GB de SSD) es totalmente suficiente. Este tipo de servidor cuesta 5 EUR al mes y gestiona sin problemas varios miles de ejecuciones de flujos al día, sin degradación del rendimiento.
Los requisitos mínimos para n8n con backend de PostgreSQL y cola de Redis en modo queue son: 2 vCPU, 4 GB de RAM y 40 GB de SSD. Con entre 50 y 100 ejecuciones simultáneas de flujos conviene ampliar a un Hetzner CX32 (4 vCPU, 8 GB de RAM, 80 GB de SSD, aprox. 10 EUR/mes). Una instancia de Redis para el modo queue ocupa entre 50 y 100 MB de RAM, y PostgreSQL, normalmente, entre 300 y 500 MB.
Recomendación sobre la ubicación del servidor: nbg1 (Núremberg) o fsn1 (Falkenstein), ambos centros de datos situados en Alemania, certificados según la ISO 27001 y sujetos exclusivamente al derecho alemán y de la UE. Al aprovisionar, evita las ubicaciones estadounidenses como los centros de datos de Hetzner en Ashburn (us-east), aunque parezcan más económicos: están sujetos al derecho estadounidense y a la Cloud Act.
- Hetzner CX22 (2 vCPU / 4 GB / 40 GB): 5 EUR/mes — hasta 100 flujos, ~5.000 ejecuciones/día
- Hetzner CX32 (4 vCPU / 8 GB / 80 GB): 10 EUR/mes — hasta 300 flujos, ~50.000 ejecuciones/día
- Hetzner CCX23 (4 vCPU dedicadas / 16 GB): 22 EUR/mes — para setups críticos de producción y alto volumen
Instalación de n8n self-hosted en 6 pasos: del aprovisionamiento a la monitorización
Paso 1: aprovisionar el servidor de Hetzner
Abre la consola de Hetzner Cloud (console.hetzner.cloud) y crea un nuevo proyecto. Elige el tipo de servidor CX22, la imagen "Ubuntu 24.04 LTS" y la ubicación "nbg1" (Núremberg, Alemania). Añade tu clave SSH. Crea reglas de firewall: puerto 22 (SSH, solo desde tu propia IP), puertos 80 y 443 (HTTP/HTTPS, públicos). La IP flotante es opcional, para una dirección fija. Duración: 5 minutos.
Paso 2: instalar Docker y Docker Compose
Conéctate al servidor por SSH. Instala Docker Engine mediante el script de instalación oficial de pkg.docker.com (curl -fsSL https://get.docker.com | sh). El plugin de Docker Compose viene incluido desde Docker 23 (docker compose en lugar de docker-compose). Añade tu usuario al grupo docker (usermod -aG docker $USER). Aplica las actualizaciones del sistema (apt update && apt upgrade). Activa el servicio de Docker (systemctl enable docker). Duración: 10 minutos.
Paso 3: arrancar los contenedores de n8n y PostgreSQL
Utiliza como plantilla el docker-compose.yml de la documentación oficial de n8n (docs.n8n.io/hosting/installation/server-setups/docker-compose/). Servicios: n8n (última versión), postgres:16-alpine, redis:7-alpine. Externaliza las variables de entorno a un archivo .env: N8N_ENCRYPTION_KEY (cadena aleatoria de 32 bytes), DB_TYPE=postgresdb, DB_POSTGRESDB_*, QUEUE_BULL_REDIS_HOST. El puerto de n8n queda interno en el 5678, sin mapeo directo de puertos al exterior (de ello se encarga el proxy inverso). Duración: 10 minutos.
Paso 4: TLS mediante Caddy o Traefik
Caddy es la opción más sencilla para TLS automático mediante Let's Encrypt: basta un Caddyfile de dos líneas (dominio + reverse_proxy n8n:5678). Como alternativa, Traefik como otro servicio de Docker con etiquetas en el contenedor de n8n. Configura el registro DNS del dominio de n8n apuntando a la IP del servidor de Hetzner. Caddy o Traefik solicitan automáticamente un certificado de Let's Encrypt y lo renuevan cada 60 días. Importante: sin TLS no deben almacenarse credenciales reales en n8n. Duración: 10 minutos.
Paso 5: configurar los backups (Hetzner Storage Box)
Configura una Hetzner Storage Box BX11 (1 TB, 3,81 EUR/mes) como destino de los backups. Cronjob diario en el servidor: volcado de PostgreSQL mediante pg_dump más compresión, y subida vía rclone o rsync a la Hetzner Storage Box por SFTP/Samba. Asegura además la carpeta /home/node/.n8n (puede contener datos locales). Política de retención: 7 días a diario y 4 semanas de forma semanal. El BSI IT-Grundschutz OPS.1.1.7 recomienda un RPO máximo de 24 horas para automatizaciones críticas para el negocio. Duración: 15 minutos.
Paso 6: monitorización y actualizaciones automáticas
Uptime Kuma (gratuito, self-hosted, también mediante Docker) para la monitorización de disponibilidad: comprobación HTTP de la URL de n8n cada 60 segundos y alerta por correo electrónico o Telegram en caso de caída. Activa el error workflow propio de n8n: ante cada flujo de producción fallido, un mensaje de Slack o un correo a los responsables. Actualizaciones: un contenedor Watchtower para actualizar de forma automática las imágenes de Docker, o un script de actualización manual (docker compose pull && docker compose up -d) mensual, dentro de la ventana de mantenimiento. Duración: 15 minutos.
Configuración de Docker Compose: el setup completo
La documentación oficial de n8n en docs.n8n.io/hosting/installation/server-setups/docker-compose/ proporciona una plantilla completa de `docker-compose.yml`. El setup listo para producción para pymes incluye cuatro servicios: n8n (motor de flujos), postgres (almacenamiento persistente de datos), redis (backend de cola para ejecuciones en paralelo) y caddy (proxy inverso con TLS automático).
El elemento más crítico de la configuración es la N8N_ENCRYPTION_KEY: esta clave de 32 bytes cifra todas las credenciales almacenadas en n8n (claves de API, tokens de OAuth, contraseñas) dentro de la base de datos de PostgreSQL. Debe generarse antes del primer arranque (`openssl rand -hex 32`), guardarse de forma segura en el archivo `.env` y respaldarse por separado, idealmente en un gestor de contraseñas como Bitwarden o 1Password. Sin esta clave, las credenciales almacenadas quedan inservibles tras un cambio de servidor.
Para la configuración de protección de datos conforme a la DSGVO, dos variables de entorno de n8n son especialmente relevantes: `N8N_EXECUTIONS_DATA_PRUNE=true` limita el almacenamiento de los datos de ejecución de los flujos, y `N8N_EXECUTIONS_DATA_MAX_AGE=720` fija el tiempo máximo de conservación en 30 días. Para flujos con datos especialmente sensibles (datos de salud, datos financieros) se recomienda además `N8N_EXECUTIONS_DATA_SAVE_ON_SUCCESS=none`, para no persistir las ejecuciones correctas.
Ejemplo de configuración del archivo `.env` (campos obligatorios):
N8N_ENCRYPTION_KEY=<cadena-hex-de-32-bytes> | DB_TYPE=postgresdb | DB_POSTGRESDB_HOST=postgres | DB_POSTGRESDB_DATABASE=n8n | DB_POSTGRESDB_USER=n8n | DB_POSTGRESDB_PASSWORD=<contraseña-segura> | QUEUE_BULL_REDIS_HOST=redis | N8N_HOST=n8n.tu-dominio.es | N8N_PROTOCOL=https | N8N_EXECUTIONS_DATA_PRUNE=true | N8N_EXECUTIONS_DATA_MAX_AGE=720
Todas las imágenes de Docker deberían fijarse a etiquetas de versión explícitas (p. ej., `n8nio/n8n:1.85.0` en lugar de `n8nio/n8n:latest`) para evitar breaking changes inesperados por actualizaciones automáticas. Una ventana de actualización mensual y manual, con verificación previa de los backups, es la estrategia de mantenimiento recomendada.
Los flujos de trabajo automatizados requieren conceptos de autorización separados y auditorías periódicas. En los sistemas que tratan de forma automatizada datos personales o confidenciales, el registro, el control de acceso y un plan de contingencia documentado son componentes obligatorios del concepto de seguridad.
TLS, backups y monitorización: las tres partes obligatorias
TLS automático mediante Caddy o Traefik
Caddy es la opción más sencilla para quien se inicia en el self-hosting: un `Caddyfile` de dos líneas (`n8n.tu-dominio.es { reverse_proxy n8n:5678 }`) basta para un TLS automático completo mediante Let's Encrypt. Caddy renueva los certificados de forma automática antes de que caduquen. Traefik es la alternativa para setups más complejos con varios servicios en el mismo servidor, configurable exclusivamente mediante etiquetas de Docker en el contenedor de n8n. Ambas soluciones son gratuitas, están muy extendidas y están documentadas en la comunidad de n8n.
Backups diarios de PostgreSQL en la Hetzner Storage Box
Los datos más críticos de un setup de n8n son la base de datos de PostgreSQL (definiciones de los flujos, historial de ejecuciones, credenciales) y el archivo `.env` con la clave de cifrado. Un cronjob diario (`pg_dump | gzip | rclone copy`) respalda la base de datos en la Hetzner Storage Box BX11 (1 TB, 3,81 EUR/mes). Retención: 7 backups diarios y 4 semanales. Nunca dejes la clave de cifrado únicamente en el servidor: guárdala siempre por separado en un gestor de contraseñas.
Monitorización mediante Uptime Kuma
Uptime Kuma es un servicio de monitorización gratuito y self-hosted que se ejecuta como contenedor de Docker en el mismo servidor de Hetzner. Comprobación HTTP de la URL de n8n cada 60 segundos y alerta por correo electrónico, Telegram o Slack en caso de caída. Combinado con el error workflow propio de n8n (mensaje de Slack ante flujos de producción fallidos), se obtiene un setup de monitorización completo sin costes adicionales de SaaS.
Lista de verificación de cumplimiento antes del go-live
Antes de que la primera instancia de n8n con datos personales pase a producción, deberían cumplirse todos los puntos de esta lista de verificación. Se orienta a los requisitos del art. 32 de la DSGVO (medidas técnicas y organizativas) y a las recomendaciones del BSI IT-Grundschutz OPS.1.1.7.
- Contrato de encargo de tratamiento firmado con Hetzner — conforme al art. 28 de la DSGVO (gratuito, disponible en el área de cliente de Hetzner)
- Clave de cifrado de n8n guardada de forma segura — en un gestor de contraseñas (Bitwarden, 1Password), no solo en el archivo .env del servidor
- TLS activo y verificado — el test de SSL Labs (ssllabs.com/ssltest) da al menos una calificación A
- Restauración de backup probada — al menos una restauración manual ejecutada y verificada la integridad del backup
- Historial de ejecuciones limitado — N8N_EXECUTIONS_DATA_PRUNE=true, tiempo de conservación fijado en 30 días
- Formación del personal documentada — quién puede acceder a n8n y quién no; gestión de credenciales regulada
- Plan de contingencia disponible — por escrito: ¿qué ocurre ante una caída del servidor? ¿Cuánto dura la recuperación? ¿Quién es responsable?
- Evaluación de impacto relativa a la protección de datos revisada — en flujos con datos especialmente sensibles (salud, finanzas, datos de empleados) puede ser necesaria una EIPD conforme al art. 35 de la DSGVO