n8n es una herramienta de automatización de código abierto que conecta aplicaciones y servicios mediante workflows visuales. En lugar de instalar paquetes en tu sistema, en este tutorial lo ejecutamos dentro de un contenedor Docker, lo que lo mantiene aislado y fácil de actualizar o eliminar.
Qué vamos a instalar
n8n ofrece un editor visual con el que se construyen procesos de automatización conectando nodos: leer un correo, consultar una API, escribir en una base de datos o enviar una notificación. Cada flujo se compone de nodos que representan un paso.
Al ejecutarlo con Docker, el entorno queda encapsulado: la aplicación y sus dependencias viven dentro del contenedor, y los datos se guardan en un volumen. El resultado es una instancia de n8n accesible desde el navegador en tu propia máquina o servidor.
Requisitos previos
Antes de empezar necesitas:
- Un servidor o PC con Linux.
- Docker instalado en el sistema.
- Docker Compose disponible (
docker compose versionlo confirma). - Acceso a un terminal.
- El puerto 5678 libre, que es el que usa n8n por defecto.
Esta guía usa los comandos clásicos de Docker. Si tu usuario no está en el grupo docker, deberás prefijarlos con sudo.
Crear el directorio de trabajo
Crea una carpeta donde vivirán la configuración y los datos de n8n:
mkdir -p ~/n8n
cd ~/n8n
Trabajar dentro de una carpeta propia del servicio te facilita localizar su archivo de configuración, realizar backups y saber qué volumen pertenece a qué aplicación.
Crear el archivo compose.yml
Docker Compose permite definir el servicio en un solo archivo y arrancarlo con un comando. Crea un archivo compose.yml en la carpeta ~/n8n con este contenido:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
volumes:
- n8n-data:/home/node/.n8n
volumes:
n8n-data:
Cada línea tiene una función:
image: la imagen oficial de n8n publicada por el equipo del proyecto.container_name: fija un nombre de contenedor legible (n8n) para usar en los comandos.restart: unless-stopped: política de reinicio del contenedor. Con ella, n8n se inicia solo al arrancar el servidor, salvo que lo detengas explícitamente. Puedes profundizar en cómo reiniciar automáticamente contenedores Docker.ports: expone el puerto 5678 del contenedor en el host. El primero es el puerto del host y el segundo el del contenedor.volumes: monta el volumenn8n-dataen la ruta de datos interna de n8n.
Actualiza el puerto si el 5678 ya está ocupado en tu sistema.
Persistencia de datos
n8n guarda sus datos en el directorio /home/node/.n8n, dentro del contenedor. Sin un volumen persistente, esos datos quedan ligados a la capa escribible del contenedor y pueden perderse cuando el contenedor se elimina o se recrea.
El volumen n8n-data monta ese directorio en un espacio gestionado por Docker, independiente del ciclo de vida del contenedor. Puedes eliminar el contenedor y recrearlo con el mismo compose.yml sin perder workflows, credenciales ni configuración. Detener o reiniciar el contenedor no borra los datos: estos solo se pierden si el contenedor se elimina o se recrea sin un volumen que los conserve.
Iniciar n8n
Desde la carpeta donde está tu compose.yml, arranca el servicio:
docker compose up -d
Este comando hace dos cosas:
up: crea y arranca los servicios definidos en el archivo. La primera vez descarga la imagen de n8n, así que puede tardar unos segundos.-d(de detached): ejecuta los contenedores en segundo plano, sin bloquear el terminal.
Cuando termine, el contenedor queda corriendo y puedes cerrar el terminal con tranquilidad.
Comprobar que el contenedor funciona
Para ver el estado del servicio:
docker compose ps
Deberías ver el contenedor n8n con estado Up y el puerto mapeado. Si prefieres la vista general de todos los contenedores:
docker ps
En la columna STATUS debe aparecer Up (o un tiempo de actividad) y en PORTS el 0.0.0.0:5678->5678/tcp. Si en su lugar ves Restarting o Exited, consulta la sección de problemas frecuentes.
Acceder a n8n
Abre el navegador y entra en:
http://localhost:5678
La primera vez, n8n te pedirá crear la cuenta de administrador local: un correo, una contraseña y el nombre de la instancia. Esa cuenta vive en el volumen, así que la conservarás aunque reinicies el contenedor.
Si la instalación es en un servidor remoto, sustituye localhost por la dirección de tu servidor (http://IP_DEL_SERVIDOR:5678). Ten en cuenta que, tal como se explica en la sección de seguridad, exponer n8n a internet sin protección previa no es recomendable.
Ver los logs
Para comprobar que n8n arranca sin errores o diagnosticar un fallo:
docker logs n8n
Con docker compose logs desde la carpeta del proyecto puedes ver los logs de todos los servicios configurados. Añade -f para seguirlos en tiempo real. Si quieres dominar estas opciones, en el blog tienes la guía de cómo ver los logs de un contenedor Docker.
Detener n8n
Para parar el servicio sin borrar sus datos:
docker compose stop
El contenedor se detiene, pero el volumen con tu configuración y workflows se conserva intacto. Para continuar más tarde, usa docker compose start.
Reiniciar n8n
Si haces cambios de configuración o simplemente quieres reiniciar el servicio:
docker compose restart
docker compose restart detiene el proceso del contenedor y lo vuelve a lanzar, sin eliminarlo. Reinicia el servicio o contenedor existente tal y como está: no aplica necesariamente los cambios realizados en compose.yml. Para que los cambios del archivo surtan efecto lo indicado es docker compose up -d. Distingue bien los dos casos:
docker compose start: inicia un servicio que estaba detenido.docker compose restart: reinicia un servicio que ya estaba en marcha, sin recrear el contenedor.
Actualizar n8n
Actualizar con Docker consiste en descargar la imagen más reciente y hacer que el servicio la utilice:
docker compose pull
docker compose up -d
pull descarga la imagen más reciente y up -d aplica la configuración y recrea el servicio cuando sea necesario para utilizar la nueva imagen. Antes de actualizar, ten en cuenta dos cosas:
- Las actualizaciones pueden incluir cambios que requieran migrar los datos. Revisa las notas de la versión cuando salte de una versión mayor o menor importante.
- No es seguro actualizar siempre: una versión nueva puede introducir incompatibilidades con tu configuración. Por eso, haz backup de los datos antes de actualizaciones relevantes.
Si algo falla tras la actualización, docker logs n8n es el primer lugar donde mirar.
Backup
Lo que merece respaldo es el volumen n8n-data: ahí se guardan los workflows, la configuración y las credenciales de las integraciones. El procedimiento general de copia de volúmenes sirve igual para este caso; puedes seguirlo en cómo hacer backup de volúmenes Docker.
Dos apuntes prácticos:
- Detén el contenedor antes de copiar el volumen para que el backup sea consistente.
- Haz copias periódicas en una ubicación fuera del servidor. Un volumen soluciona los reinicios, pero no un fallo de disco o un borrado accidental.
Problemas frecuentes
El puerto ya está ocupado
Si al ejecutar docker compose up -d aparece un error indicando que el puerto ya está en uso, cambia el mapeo en compose.yml a otro puerto del host, por ejemplo "5679:5678". Después accede por http://localhost:5679.
El contenedor no arranca o se reinicia en bucle
Comprueba su estado con docker compose ps y revisa los logs. Un contenedor en Restarting casi siempre deja pistas en su salida:
docker logs n8n
No se puede acceder a la interfaz
Verifica que el contenedor está en marcha con docker ps y que el puerto aparece mapeado. Si la instalación es remota, comprueba también que el firewall del servidor permite el tráfico entrante en ese puerto.
Permisos o volumen mal configurado
El contenedor corre como el usuario node (UID 1000) y espera sus datos en /home/node/.n8n. Si cambias la ruta de montaje del volumen, n8n creará un entorno nuevo y no verás tus workflows anteriores. Mantén la ruta tal y como aparece en el compose.yml de esta guía.
Seguridad
Una advertencia importante: no publiques esta instancia de n8n directamente en internet sin protección. Publicar directamente el puerto 5678 aumenta innecesariamente la superficie de exposición y no es una configuración recomendable para producción.
Para publicar n8n de forma segura necesitas, como mínimo:
- HTTPS mediante un certificado válido.
- Un proxy inverso que enrute el tráfico hacia el contenedor.
- La configuración de autenticación correspondiente de n8n para entornos de producción.
- Un firewall que limite qué puertos quedan abiertos.
Este tutorial cubre la instalación local. Lo relativo a exponer n8n de forma segura se tratará en un artículo específico más adelante.
Conclusión
Con Docker Compose tienes n8n funcionando en tu propia máquina o servidor: un archivo define el servicio, un volumen conserva tus datos y unos pocos comandos gestionan el ciclo de vida completo.
El siguiente paso natural es crear tu primer workflow desde el editor: conectar un nodo de entrada, añadir una acción y ver cómo se ejecuta. A partir de ahí, automatizarás tareas repetitivas sin tocar más el contenedor.