Instalación con Docker
n8n recomienda utilizar Docker en la mayoría de los escenarios de autohospedaje. Docker proporciona un entorno limpio y aislado que evita problemas de incompatibilidad con el sistema operativo y el conjunto de herramientas, además de simplificar la gestión de bases de datos y del entorno.
También puedes usar Docker Compose para ejecutar n8n en Docker. En el repositorio n8n-hosting encontrarás archivos de configuración de Docker Compose adaptados a distintas arquitecturas.
Conocimientos previos para el autohospedaje
El autohospedaje de n8n requiere ciertos conocimientos técnicos, entre ellos:
- Configuración y despliegue de servidores y contenedores
- Gestión y escalado de recursos de la aplicación
- Refuerzo de la seguridad del servidor y la aplicación
- Gestión de la configuración de n8n
n8n recomienda el autohospedaje únicamente a usuarios con experiencia. Errores en la configuración pueden provocar pérdida de datos, problemas de seguridad o interrupciones del servicio. Si no tienes experiencia en administración de servidores, te recomendamos utilizar n8n Cloud.
También puedes seguir nuestra guía en vídeo:
Requisitos previos
Antes de comenzar, instala Docker:
- Docker Desktop está disponible para Mac, Windows y Linux. Incluye Docker Engine y Docker Compose.
- También puedes instalar Docker Engine y Docker Compose como paquetes independientes en Linux. Esta opción es ideal para servidores Linux sin interfaz gráfica o si prefieres no usar la interfaz de Docker Desktop.
Versiones estable y beta
n8n publica casi semanalmente una nueva versión menor. La versión stable es adecuada para entornos de producción, mientras que la versión beta corresponde a la última versión lanzada y puede no ser completamente estable. Si deseas reportar algún problema, utiliza el foro comunitario.
Versión stable actual: 2.10.2
Versión beta actual: 2.11.1
Iniciar n8n
Ejecuta el siguiente comando en tu terminal, reemplazando el marcador de posición <YOUR_TIMEZONE> por tu zona horaria:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="`<YOUR_TIMEZONE>`" \
-e TZ="`<YOUR_TIMEZONE>`" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Este comando crea un volumen para almacenar datos persistentes, descarga la imagen de n8n necesaria e inicia el contenedor con las siguientes configuraciones:
- Mapea y expone el puerto
5678del contenedor al host. - Establece la zona horaria del contenedor:
- La variable de entorno
TZdefine la zona horaria del sistema, lo que afecta a comandos comodate. - La variable de entorno
GENERIC_TIMEZONEconfigura la zona horaria correcta para nodos orientados a programación, como el nodo Schedule Trigger.
- La variable de entorno
- Obliga a usar permisos seguros en los archivos de configuración de n8n.
- Habilita los ejecutores (runners), que son la forma recomendada de ejecutar tareas en n8n.
- Monta el volumen
n8n_dataen el directorio/home/node/.n8npara conservar los datos tras reiniciar el contenedor.
Una vez iniciado, abre tu navegador y accede a http://localhost:5678 para usar n8n.
Usar PostgreSQL
Por defecto, n8n utiliza SQLite para guardar credenciales, historial de ejecuciones y flujos de trabajo. Sin embargo, también admite PostgreSQL, que se puede configurar mediante variables de entorno, tal como se muestra a continuación.
Se recomienda persistir el directorio .n8n
Al usar PostgreSQL, n8n ya no necesita el directorio .n8n para almacenar la base de datos SQLite. No obstante, este directorio sigue conteniendo otros datos importantes, como claves de cifrado, registros de la instancia y activos relacionados con el control de código fuente. Aunque es posible evitar algunos requisitos (por ejemplo, definiendo la variable de entorno N8N_ENCRYPTION_KEY), es mejor seguir montando un volumen persistente para este directorio y así prevenir posibles problemas.
Para usar n8n con PostgreSQL, ejecuta el siguiente comando, reemplazando los marcadores entre corchetes angulares (por ejemplo, <nombre_base_datos>) por tus valores reales:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="`<YOUR_TIMEZONE>`" \
-e TZ="`<YOUR_TIMEZONE>`" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_DATABASE=<nombre_base_datos> \
-e DB_POSTGRESDB_HOST=<dirección_host> \
-e DB_POSTGRESDB_PORT=<número_puerto> \
-e DB_POSTGRESDB_USER=<usuario> \
-e DB_POSTGRESDB_SCHEMA=<nombre_esquema> \
-e DB_POSTGRESDB_PASSWORD=<contraseña> \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Puedes encontrar un archivo completo de docker-compose para PostgreSQL en el repositorio de hosting de n8n.
Actualización
Para actualizar n8n, en Docker Desktop ve a la pestaña Images y selecciona Pull en el menú contextual para descargar la imagen más reciente de n8n:

También puedes usar la línea de comandos para extraer la última versión o una versión específica:
# Extraer la última versión (stable)
docker pull docker.n8n.io/n8nio/n8n
# Extraer una versión específica
docker pull docker.n8n.io/n8nio/n8n:1.81.0
# Extraer la versión next (inestable)
docker pull docker.n8n.io/n8nio/n8n:next
Tras descargar la imagen actualizada, detén tu contenedor de n8n y vuelve a iniciarlo. Puedes hacerlo desde la terminal. En los siguientes comandos, reemplaza <ID_contenedor> por el ID que obtengas en el primer comando:
# Buscar el ID de tu contenedor
docker ps -a
# Detener el contenedor con <ID_contenedor>
docker stop <ID_contenedor>
# Eliminar el contenedor con <ID_contenedor>
docker rm <ID_contenedor>
# Iniciar el contenedor
docker run --name=<nombre_contenedor> [opciones] -d docker.n8n.io/n8nio/n8n
Actualizar con Docker Compose
Si ejecutas n8n mediante un archivo de Docker Compose, sigue estos pasos para actualizar:
# Cambia al directorio que contiene tu archivo docker-compose
cd <tu_directorio>
# Descargar la última versión
docker compose pull
# Detener y eliminar la versión anterior
docker compose down
# Iniciar los contenedores
docker compose up -d
Usar n8n con túnel
⚠️ Advertencia
Esta funcionalidad está pensada únicamente para desarrollo y pruebas locales. No es adecuada para entornos de producción.
Herramienta de desarrollo
La función de túnel es una herramienta útil para desarrollo local, pero su implementación interna puede cambiar en futuras versiones de n8n.
Para que nodos disparadores externos (como los de GitHub) puedan usar webhooks, n8n debe ser accesible desde Internet. n8n ofrece un servicio de túnel basado en cloudflared que redirige solicitudes de red a tu instancia local de n8n. Esta función requiere Docker.
Dependiendo de cómo ejecutes n8n, hay dos formas de usar el túnel:
Pila completa (Full stack)
Este método ejecuta n8n y cloudflared juntos en un contenedor. La URL del túnel se imprime al iniciar, y todo se conecta automáticamente:
pnpm stack --tunnel
Solo servicios (Services only)
Si prefieres ejecutar n8n localmente con pnpm dev o pnpm start, puedes iniciar cloudflared como un servicio independiente:
# Terminal 1: Iniciar el servicio de túnel cloudflared
pnpm --filter n8n-containers services --services cloudflared
# Terminal 2: Iniciar n8n localmente
pnpm dev
La función del comando services es la siguiente:
- Inicia cloudflared apuntando a
host.docker.internal:5678(tu instancia local de n8n). - Obtiene la URL pública del túnel desde el endpoint de métricas de cloudflared.
- Escribe un archivo
.envenpackages/cli/bin/.envcon las variablesWEBHOOK_URLyN8N_PROXY_HOPS=1. - Los comandos
pnpm devypnpm startleen automáticamente este archivo.envmediante dotenv.
Para limpiar tras finalizar:
pnpm --filter n8n-containers services:clean
Pasos siguientes
- Consulta el archivo README de las imágenes de Docker para obtener más información sobre la configuración en Docker.
- Aprende a configurar y escalar n8n.
- O explora cómo usar n8n: prueba la guía de inicio rápido.