n8n con Docker: instalar y autoalojar gratuitamente
n8n con Docker es la forma más rápida de obtener una instancia de automatización autoalojada que sobreviva a los reinicios y las actualizaciones. Esta guía se detiene deliberadamente en los cimientos: un archivo Docker Compose, un volumen para los datos, una clave de cifrado bajo tu control, un procedimiento de copia de seguridad y actualización, y una exposición HTTPS prudente. Los nodos de IA y la conexión con Ollama se tratan en una guía aparte; aquí, el objetivo es una instalación limpia que no tengas que rehacer.
#Por qué instalar n8n con Docker en lugar de npm
n8n es una aplicación de Node.js. Se puede ejecutar con npm o npx, y la documentación lo propone para una prueba rápida. Para una instancia que funcione de forma continua, la imagen oficial de Docker es la opción recomendada por el proyecto: incluye la versión correcta de Node.js, aísla n8n del resto de la máquina y simplifica la actualización tanto como cambiar de imagen. También es el formato en el que la documentación de alojamiento de n8n presenta todos sus ejemplos de servidor.
La segunda ventaja es la reproducibilidad. Un archivo docker-compose.yml describe toda la configuración: imagen, puerto, variables de entorno y volumen de datos. Puede versionarlo, copiarlo a otra máquina o volver a leerlo dentro de seis meses para saber exactamente qué se está ejecutando. Con una instalación mediante npm, esta información está dispersa entre el sistema, el perfil de usuario y el gestor de servicios.
- Qué cubre esta guía
- Instalación local o en un servidor pequeño, persistencia de los datos, clave de cifrado, copia de seguridad, actualización y acceso HTTPS.
- Lo que no cubre
- Los nodos de IA de n8n, la conexión con Ollama, el servidor MCP y el escalado en modo de cola. Los dos primeros puntos tienen su propia guía, enlazada al final del artículo.
- Lo que no afirmamos
- No se especifica ninguna duración de instalación, ningún consumo medido ni ningún número de versión fijado. Estos valores cambian de una release a otra y deben consultarse en las fuentes oficiales en el momento de la instalación.
#Licencia y límites de la edición comunitaria
Agentes que actúan en tu máquina: Cline agéntico, MCP, n8n + Ollama, automatizaciones locales.
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 d
n8n no está bajo una licencia de código abierto en el sentido de la OSI. El código se publica bajo la Sustainable Use License, un modelo que el editor denomina «fair-code». En líneas generales, puede utilizar, modificar y alojar n8n libremente para sus necesidades internas, personales o empresariales. Lo que está restringido es la reventa: ofrecer n8n como servicio alojado a terceros o integrarlo en un producto comercial requiere un acuerdo con el editor. El texto completo y sus preguntas frecuentes están en docs.n8n.io/sustainable-use-license/; léalos si su uso va más allá de la automatización interna.
La versión que instala con Docker es la edición comunitaria. Contiene el editor completo, cientos de nodos de integración, webhooks, desencadenadores programados, nodos de IA y gestión de usuarios. Algunas funciones están reservadas para las ofertas de pago autoalojadas: el inicio de sesión único (SSO), los entornos con sincronización de Git, los secretos externos, el envío de registros a una herramienta externa y parte de las funciones de colaboración. Además, el editor ofrece una clave gratuita denominada «comunidad registrada», que se obtiene indicando una dirección de correo electrónico en los ajustes y desbloquea algunas funciones adicionales. La lista exacta evoluciona: prevalece la página docs.n8n.io/hosting/community-edition-features/.
#Prerrequisitos
- Docker y Docker Compose
- Docker Engine con el complemento Compose en Linux, o Docker Desktop en Windows y macOS. Compruébelo con docker compose version: el comando debe responder con un número de versión, en dos palabras (docker compose), no con el guion de la herramienta antigua.
- Una máquina que permanece encendida
- n8n ejecuta sus flujos de trabajo a la hora prevista o cuando recibe un webhook. Un PC que se apaga por la noche no detectará las ejecuciones nocturnas. Un mini-PC, un NAS compatible con Docker o un VPS pequeño son adecuados; las necesidades de memoria siguen siendo modestas para unos pocos flujos de trabajo sencillos.
- Un puerto libre
- n8n escucha en el puerto 5678 dentro del contenedor. Lo publicamos con el mismo número en el host; cámbialo si ya lo utiliza otro servicio.
- Solo para el paso de HTTPS
- Un nombre de dominio que apunte a la máquina y los puertos 80 y 443 accesibles desde Internet. Sin eso, mantén el acceso local o utiliza una VPN: la sección HTTPS detalla ambas opciones.
#Instalar n8n con Docker Compose paso a paso
La documentación de n8n ofrece primero un comando docker run de una sola línea, útil para una prueba. Nosotros pasamos directamente a Compose: el archivo es apenas más largo y se convierte en la referencia de su instalación. Todos los valores siguientes son los documentados por n8n; solo los valores de zona horaria y de puerto son decisiones de esta guía.
- 01Crear la carpeta del proyectoUna carpeta dedicada contiene el archivo Compose, el archivo .env y, más adelante, sus copias de seguridad. Los propios datos de n8n irán en un volumen de Docker con nombre, no en esta carpeta.
- 02Generar la clave de cifradoAntes del primer inicio, genere una clave aleatoria y colóquela en el archivo .env. La sección siguiente explica por qué este orden es importante.
- 03Escribir el docker-compose.ymlCopie el archivo siguiente. Publica n8n en el puerto 5678 de la máquina, limitado a la dirección local 127.0.0.1, y monta el volumen n8n_data en la carpeta /home/node/.n8n del contenedor, que es donde n8n almacena su base de datos SQLite, su configuración y sus archivos.
- 04Iniciardocker compose up -d télécharge l'image et lance le conteneur en arrière-plan. La première exécution prend le temps du téléchargement de l'image; les suivantes sont immédiates.
- 05Crear la cuenta propietariaAbra http://localhost:5678 en un navegador. n8n le pide crear la primera cuenta, que se convierte en propietaria de la instancia. Desde la versión 1.0, esta cuenta es la que protege el acceso; la antigua autenticación básica mediante variables de entorno ya no existe.
Algunas explicaciones sobre las variables. GENERIC_TIMEZONE establece la zona horaria utilizada por el nodo Schedule Trigger y por las expresiones de fecha; TZ sincroniza el reloj del sistema dentro del contenedor. N8N_RUNNERS_ENABLED activa los task runners, el mecanismo que ejecuta el código de los nodos Code en un proceso separado; la documentación lo recomienda y las versiones recientes muestran una advertencia si está ausente. N8N_DIAGNOSTICS_ENABLED=false desactiva el envío de datos de telemetría al editor. Las dos variables EXECUTIONS_DATA_* indican a n8n que elimine el historial de ejecuciones que supere 336 horas, es decir, catorce días, para evitar que la base de datos crezca indefinidamente.
El montaje ./local-files:/files es opcional. Proporciona a n8n una carpeta compartida con la máquina anfitriona, práctica para los nodos que leen o escriben archivos. Elimine la línea si no la necesita.
#La clave de cifrado: la variable que no debes perder
n8n cifra todas las credenciales que guarda en la interfaz, es decir, los tokens de API, las contraseñas y las claves OAuth de sus integraciones. La clave de cifrado utilizada es N8N_ENCRYPTION_KEY. Si no la define, n8n genera una durante el primer inicio y la escribe en el archivo config de la carpeta /home/node/.n8n, es decir, en el volumen. Funciona, pero la clave vive entonces únicamente en ese volumen: si lo pierde o recrea la instancia sin él, todas las credenciales se vuelven ilegibles y deben volver a introducirse.
Por eso esta guía fija la clave en el archivo .env antes del primer inicio. Usted mantiene el control sobre ella, se guarda junto con el archivo Compose y permite restaurar la base de datos en otra máquina sin perder las credenciales. De ahí se derivan dos reglas.
- No cambie nunca la clave después
- Una clave distinta de la utilizada para cifrar vuelve inutilizables todos los identificadores existentes. Si necesita sustituirla, exporte primero sus identificadores descifrados con el comando export:credentials y vuelva a importarlos después del cambio.
- Guarde el archivo .env por separado
- Guarde una copia de la clave en su gestor de contraseñas. Una copia de seguridad del volumen sin la clave no sirve de nada para las credenciales, aunque los flujos de trabajo sigan siendo legibles.
#Persistencia y copia de seguridad de los datos
Todo lo que n8n debe conservar se encuentra en /home/node/.n8n: la base de datos SQLite que contiene los flujos de trabajo, las credenciales cifradas y el historial de ejecuciones, el archivo config, los nodos comunitarios instalados y los archivos binarios en el modo de almacenamiento en disco. El volumen con nombre n8n_data sobrevive a docker compose down y a la eliminación del contenedor. No sobrevive a docker compose down -v ni a docker volume rm: ambos comandos borran los datos.
Para una copia de seguridad, dos enfoques se complementan. El primero archiva el volumen completo: se detiene n8n mientras se copian los archivos, para evitar capturar una base de datos SQLite en proceso de escritura. El segundo utiliza la herramienta de línea de comandos de n8n para exportar los flujos de trabajo y las credenciales en JSON, legibles y reimportables individualmente.
La opción --backup de los comandos de exportación agrupa las opciones que producen un archivo por elemento, en un formato legible. Los identificadores exportados permanecen cifrados con su clave, salvo que añada --decrypted; en ese caso, trate el archivo como un secreto. Para restaurar, los comandos import:workflow e import:credentials aceptan la misma carpeta con la opción --separate. La referencia completa de la CLI se encuentra en docs.n8n.io/hosting/cli-commands/.
Para una restauración completa en otra máquina: vuelve a crear la carpeta con el mismo docker-compose.yml y el mismo .env, crea el volumen vacío con docker compose up -d y luego docker compose stop, descomprime el archivo en el volumen con el comando inverso al de la copia de seguridad y reinicia. La misma clave de cifrado es imprescindible para recuperar las credenciales.
#Actualizar n8n sin romper la instancia
n8n publica versiones con frecuencia. La etiqueta latest de la imagen apunta a la última versión estable y la etiqueta next a la versión de prueba; las etiquetas numeradas permiten fijar una versión concreta. Con Compose, la actualización se resume en tres comandos: obtener la nueva imagen, detener el contenedor antiguo y crear otro con la misma configuración. Los datos permanecen en el volumen y no se modifican. Las migraciones del esquema de la base de datos, cuando las hay, se realizan automáticamente al iniciar.
Tres precauciones evitan la mayoría de las sorpresas desagradables. Haga una copia de seguridad antes: una migración de base de datos no se puede deshacer. Lea las notas de versión en github.com/n8n-io/n8n/releases y la página de actualización de la documentación, docs.n8n.io/hosting/installation/updating/: las versiones principales eliminan variables de entorno o cambian comportamientos predeterminados, y la documentación mantiene una página específica sobre los cambios incompatibles. Por último, si la instancia es importante para usted, prefiera una etiqueta numerada a latest: elige cuándo actualizar en lugar de sufrirlo en el próximo pull.
#Exponer n8n mediante HTTPS con prudencia
Mientras utilice n8n desde la máquina que lo aloja o desde su red local, la instalación anterior es suficiente. La necesidad de exponerlo aparece con los webhooks: un servicio de terceros que debe llamar a su instancia, o un acceso desde el exterior. Existen dos vías, y la primera suele ser la adecuada.
- Una VPN en lugar de una exposición
- Tailscale, WireGuard o la VPN de su router permiten acceder a n8n desde cualquier lugar sin abrir ningún puerto en Internet. Para uso personal sin un webhook público, es la solución más segura y sencilla. La instancia permanece en HTTP dentro de la red privada, y N8N_SECURE_COOKIE=false es necesario si accede a ella mediante la dirección VPN.
- Un proxy inverso con certificado
- Para recibir webhooks públicos, necesita un nombre de dominio, un proxy inverso que termine TLS y un certificado. El ejemplo oficial de n8n utiliza Traefik; nosotros mostramos Caddy, cuya configuración ocupa tres líneas y que obtiene por sí solo los certificados de Let's Encrypt.
En la configuración siguiente, n8n ya no publica ningún puerto: solo se puede acceder a Caddy, en los puertos 80 y 443, y este reenvía las solicitudes al contenedor de n8n a través de la red interna de Compose. Las variables N8N_HOST, N8N_PROTOCOL y WEBHOOK_URL indican a n8n la dirección pública desde la que se sirve; sin ellas, las URL de webhook que se muestran en el editor apuntarían a localhost y las redirecciones de OAuth fallarían.
Antes de ejecutar docker compose up -d, el registro DNS de n8n.votre-domaine.fr debe apuntar a la dirección pública de la máquina y los puertos 80 y 443 deben redirigirse hacia ella. Caddy solicitará entonces un certificado a Let's Encrypt y lo renovará sin intervención. Los volúmenes caddy_data y caddy_config conservan los certificados y el estado entre reinicios.
#Solución de problemas: los bloqueos más frecuentes
- Mensaje sobre la cookie segura al abrir
- Accede a n8n mediante HTTP desde una dirección que no es localhost. Puede pasar a HTTPS o añadir N8N_SECURE_COOKIE=false, únicamente en una red privada.
- Error de permisos en /home/node/.n8n
- El contenedor se ejecuta con el usuario node, no como root. Esto ocurre cuando se sustituye el volumen con nombre por una carpeta del host cuyos permisos no coinciden. Conserva el volumen con nombre o ajusta el propietario de la carpeta al identificador de usuario 1000, que es el de node en la imagen.
- Los flujos programados se ejecutan a la hora equivocada
- GENERIC_TIMEZONE está ausente o mal escrito. El valor esperado es un nombre de zona horaria IANA, como Europe/Paris. Cada workflow también puede establecer su propia zona horaria en sus ajustes.
- Los webhooks muestran una dirección localhost
- WEBHOOK_URL no está definida o no corresponde a la dirección mediante la que el servicio de terceros se conecta con usted. El valor debe terminar con una barra oblicua e incluir el protocolo.
- La base de datos crece sin parar
- La purga de las ejecuciones está desactivada o tarda demasiado. Compruebe EXECUTIONS_DATA_PRUNE y EXECUTIONS_DATA_MAX_AGE, y tenga en cuenta también la opción que conserva los datos de las ejecuciones correctas, que se puede desactivar flujo por flujo.
- Después de una actualización, n8n se niega a iniciar
- Lee el registro con docker compose logs n8n: el mensaje suele indicar una variable eliminada o una migración fallida. Compáralo con las notas de la versión y restaura la copia de seguridad si es necesario.
- n8n no ve Ollama en la misma máquina
- Desde un contenedor, localhost designa el propio contenedor, no el host. La dirección que debe utilizar depende del sistema y de cómo se ejecute Ollama; ese es el objeto de la guía sobre n8n y Ollama que se cita a continuación.
Para las preguntas que no encuentran respuesta en la documentación, el foro community.n8n.io está activo y el editor responde allí. Indique la versión exacta, el modo de instalación y las líneas del registro: son las tres primeras cosas que le pedirán.
#Para ir más allá
La instancia está instalada, respaldada y actualizada. El siguiente paso lógico es conectarla a un modelo local y, después, integrarla en una pila más amplia. Fuentes oficiales consultadas para esta guía: la sección de alojamiento de la documentación de n8n (docs.n8n.io/hosting/), la página de instalación de Docker (docs.n8n.io/hosting/installation/docker/), la página de actualización, la página sobre la licencia y la de las funciones de la edición comunitaria. Estas páginas evolucionan con las versiones: en caso de discrepancia con esta guía, prevalece su contenido.
- n8n + Ollama: automatizar con una IA 100 % local
- La guía que continúa: nodos de IA, conexión a Ollama desde el contenedor y primeros flujos de traducción y resumen. https://quelllm.fr/guide/n8n-ollama-automatisation-workflow
- Ollama con Docker
- Si también quiere ejecutar Ollama en un contenedor, junto a n8n, con acceso a la GPU. https://quelllm.fr/guide/ollama-docker-installation-guide
- Desplegar un LLM en producción con Docker Compose
- La pila completa Ollama, Open WebUI, Qdrant, n8n y Traefik en un solo archivo Compose, para ir más allá de la instancia aislada. https://quelllm.fr/guide/deployer-llm-docker-compose-production
- Proteger tu servidor Ollama
- Autenticación, cortafuegos y proxy inverso: las reglas de exposición se aplican a cualquier servicio autoalojado, incluido n8n. https://quelllm.fr/guide/securiser-serveur-ollama
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.