Saltar al contenido principal

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 5678 del contenedor al host.
  • Establece la zona horaria del contenedor:
    • La variable de entorno TZ define la zona horaria del sistema, lo que afecta a comandos como date.
    • La variable de entorno GENERIC_TIMEZONE configura la zona horaria correcta para nodos orientados a programación, como el nodo Schedule Trigger.
  • 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_data en el directorio /home/node/.n8n para 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:

Docker Desktop

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:

  1. Inicia cloudflared apuntando a host.docker.internal:5678 (tu instancia local de n8n).
  2. Obtiene la URL pública del túnel desde el endpoint de métricas de cloudflared.
  3. Escribe un archivo .env en packages/cli/bin/.env con las variables WEBHOOK_URL y N8N_PROXY_HOPS=1.
  4. Los comandos pnpm dev y pnpm start leen automáticamente este archivo .env mediante 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.