¿Cómo instalar n8n? Tutorial completo de despliegue local y primera ejecución para principiantes
Instalar n8n en sí no es difícil, lo difícil es "si los datos se perderán" después de instalarlo. He visto a demasiadas personas ejecutar un comando, usarlo durante una semana, eliminar el container y recrearlo, y perder todos los workflows — porque el volumen de datos no se montó correctamente.
Este artículo explica claramente tres métodos de instalación comunes, ordenados por "mínimos problemas": Docker, Docker Compose, npm. Después de instalar tendrás: un n8n que se puede abrir en el navegador, datos almacenados localmente que no se perderán, y la zona horaria correcta.
Para quién es, qué necesitas antes de empezar
Es adecuado para personas que nunca han desplegado un servicio, pero necesitas poder abrir una terminal y escribir comandos. Windows, macOS y Linux funcionan; este artículo se centra en Docker porque facilita más las actualizaciones y migraciones posteriores.
Si solo quieres probarlo en la máquina de otra persona sin uso a largo plazo, salta directamente a la sección 3, el método npm: dos comandos y funciona, pero no lo uses para datos importantes.
Primero decide dónde instalarlo
| Método | Para quién | Ventajas | Coste |
|---|---|---|---|
| Docker (container único) | PC personal, uso ligero | Aislamiento limpio, si lo borras se acabó, actualizar solo cambia la image | Hay que aprender un poco de Docker |
| Docker Compose | Ejecución a largo plazo, necesita conectarse a una base de datos | La configuración se escribe en un archivo, permite control de versiones y se levanta automáticamente al reiniciar | Hay que mantener un yaml adicional |
| Instalación global con npm | Ya tienes un entorno Node y quieres ahorrar recursos | Sin container, conexión directa al host, mínima pérdida de rendimiento | Depende de la versión de Node del sistema, las actualizaciones tienden a desordenarse |
Mi recomendación: para uso personal elige Docker Compose, no uses un solo docker run. La razón es muy práctica: después de ejecutar un solo comando, en dos meses definitivamente no recordarás qué parámetros configuraste en su momento. Compose escribe los parámetros en un archivo, si hay problemas puedes revisarlo, modificarlo y respaldarlo.
Verificar el entorno
Primero confirma si Docker está presente. Ejecuta en la terminal:
docker -v
Si puedes ver el número de versión (con la forma Docker version 29.5.3, build d1c06ef) significa que está instalado. En Windows y macOS, Docker Desktop lo incluye; en Linux se usa Docker Engine.
Luego confirma que el port 5678 no esté ocupado. Linux:
ss -lntp | grep 5678
En macOS o Linux también puedes usar lsof -i :5678. Si hay salida significa que está ocupado, cambia a otro port, por ejemplo -p 5679:5678. Windows usa netstat -ano | findstr 5678。
Opción 1: levantar todo con un solo docker run
Primero crea el volumen de datos y luego inicia el container. No combines estos dos pasos en uno; crea el volumen por separado, así al eliminar y recrear el container más adelante no perderás datos:
docker volume create n8n_data
docker run -d --name n8n
-p 5678:5678
-e GENERIC_TIMEZONE="Asia/Shanghai"
-e TZ="Asia/Shanghai"
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
-e N8N_DEFAULT_LOCALE=zh-CN
-v n8n_data:/home/node/.n8n
--restart unless-stopped
n8nio/n8n
Explica uno por uno qué hace cada parámetro; estos son los puntos donde realmente se tropieza:
-d: ejecutar en segundo plano. La documentación oficial indica-it --rm(ejecución en primer plano, se elimina al salir), eso es para pruebas. Para uso a largo plazo hay que cambiarlo a-d --restart unless-stopped, y el container se iniciará solo tras reiniciar el servidor.-p 5678:5678: mapea el 5678 dentro del container al host. La izquierda es el port del host; basta con cambiar la izquierda.GENERIC_TIMEZONE和TZ: hay que configurar ambos.TZcontrola la hora de los comandos del sistema dentro del container,GENERIC_TIMEZONEcontrola según qué zona horaria se calculan los nodos de tipo programado (por ejemplo Schedule Trigger). Si solo configuras uno, aparecerá «puse las 9 de la mañana y en realidad se ejecutó a las 5 de la tarde».-v n8n_data:/home/node/.n8n:La línea más crítica. La base de datos SQLite de n8n, la clave de cifrado y los logs están en este directorio. Sin mount de volumen, al eliminar el container se pierde todo.N8N_DEFAULT_LOCALE=zh-CN: interfaz en chino por defecto. Ten en cuenta que el chino de n8n solo traduce la interfaz; los parámetros de los nodos siguen en inglés.
Después de iniciar, abre en el navegador http://localhost:5678. La primera vez te pedirá crear una cuenta de administrador, con una contraseña de al menos 8 caracteres. Esta cuenta se almacena localmente; si la olvidas, solo podrás restablecerla. Tenlo bien presente.
Método dos: Docker Compose (recomendado)
Crea un directorio y coloca dentro docker-compose.yml:
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Shanghai
- TZ=Asia/Shanghai
- N8N_DEFAULT_LOCALE=zh-CN
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_SECURE_COOKIE=false
volumes:
- ./n8n_data:/home/node/.n8n
Luego ejecuta en este directorio:
docker compose up -d
Algunas aclaraciones:
N8N_SECURE_COOKIE=false Esta línea solo es necesaria cuando «accedes localmente por http». Si ya has configurado un dominio y HTTPS, elimínala: tener HTTPS activado y aun así poner false reduce la seguridad. A mucha gente, tras instalar en local, la página de inicio de sesión se queda girando indefinidamente, y es precisamente por esta configuración de cookie.
El directorio de datos usa ./n8n_data, es decir, la carpeta al mismo nivel que el yml. La ventaja es que para hacer copia de seguridad basta con empaquetar este directorio, sin necesidad de adivinar dónde se esconden los volúmenes de Docker.
Ver los logs y comprobar si se ha iniciado:
docker compose logs -f --tail=50
Cuando veas la línea con la dirección del editor y el número de versión, significa que se ha iniciado. Pulsar Ctrl+C solo sale de los logs; el container sigue ejecutándose.
Método tres: instalación global con npm
La instancia que uso yo mismo es de esta forma: sin container, ejecutándose directamente en el host. El requisito es tener un entorno Node.js; n8n 2.x requiere Node 20 o superior (esta máquina mía tiene Node 24.21.0).
npm install -g n8n
n8n start
Pero ejecutarlo así directamente tiene un problema: los datos se guardan por defecto en el directorio del usuario actual bajo .n8n, y además se detiene al cerrar la terminal. En producción normalmente se usa una variable de entorno para especificar el directorio de datos y luego se gestiona con systemd o pm2. Las variables clave que realmente usa esta instancia son estas (cambia los valores por los tuyos):
N8N_USER_FOLDER=/data/n8n
N8N_HOST=127.0.0.1
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_EDITOR_BASE_URL=https://你的域名/
N8N_DEFAULT_LOCALE=zh-CN
N8N_HOST=127.0.0.1 Junto con N8N_EDITOR_BASE_URL, es la práctica habitual de ocultar n8n detrás de Nginx y no exponer el port directamente; lo detallaremos en el próximo artículo al desplegar en un servidor. Si solo lo usas en local, configura HOST como localhost y listo.
Cómo se ve después de instalar
Tras iniciar sesión se entra a la página «Overview». A la izquierda está la navegación de funciones, en el centro las pestañas de workflows, ejecuciones y credenciales, y en la esquina superior derecha el botón «Create workflow».

Al hacer clic en «Create workflow» obtendrás un lienzo vacío con solo una línea en el centro: «Add first step»:

Primer workflow: tres nodos
Haz clic en el signo más del centro del lienzo y se abrirá a la derecha la biblioteca de nodos. En el cuadro de búsqueda escribe manual, selecciona «Manual Trigger» y ese será el punto de inicio de este flujo.

Luego, en el pequeño signo más a la derecha del nodo de activación manual, añade un «Edit Fields» y escribe dos campos cualesquiera, por ejemplo city con «Fuzhou»,temp con 27. Más a la derecha añade un nodo «Code» y pega en el cuadro de código:
return items.map(item => ({
json: {
message: `${item.json.city} 现在 ${item.json.temp} 度`
}
}));
Finalmente haz clic en el botón «Execute» en la parte inferior del lienzo. Los tres nodos se iluminan en orden y todos se vuelven una marca de verificación verde, lo que indica que toda la cadena funciona. En ese momento, al abrir cualquier nodo, podrás ver los datos reales en el área de salida de la derecha.
El objetivo de este paso no es aprender a escribir código, sino confirmar que lo que has instalado funciona.
Cómo saber si realmente se instaló correctamente
Poder abrir la interfaz no cuenta como éxito. Recorre los siguientes cuatro puntos; solo si todos pasan se considera exitoso:
- Se puede abrir el editor: al acceder desde el navegador no hay errores y se puede ver la lista de workflows.
- Se puede guardar: crea un workflow nuevo, añade cualquier nodo, espera a que se guarde automáticamente, luego actualiza la página y el contenido sigue ahí.
- No se pierde al reiniciar:
docker compose restart, actualiza de nuevo y el workflow anterior sigue ahí. Este punto es la única forma de verificar si el volume de datos está montado correctamente. - Se puede ejecutar: ejecuta un workflow manual una vez, el nodo se pone en verde y al hacer clic se pueden ver los datos de salida.
El tercer punto es el que más se omite y el más crítico. Si después de reiniciar el workflow desapareció, no dudes de n8n; revisa si -v la ruta posterior está mal escrita o si se usó un volume anónimo.
Errores comunes
El port está ocupado.El mensaje de error incluye port is already allocated. Cambia el port del host, por ejemplo -p 5679:5678, y luego accede con 5679.
Se abre pero el inicio de sesión se queda girando.Al acceder localmente por http, si N8N_SECURE_COOKIE es true por defecto, el navegador rechazará escribir cookies. En pruebas locales ponlo en false; después de configurar HTTPS elimina esta línea.
La hora de las tareas programadas no es correcta.Solo se configuró TZ sin configurar GENERIC_TIMEZONE, el nodo de programación se calcula en UTC. Configura ambos como Asia/Shanghai。
Después de reiniciar, el container no arranca.Se olvidó añadir --restart unless-stopped o en el yml el restart. Después de reiniciar el servidor hay que hacer manualmente docker start n8n。
La descarga de la image es muy lenta o falla.Al extraer imágenes de Docker Hub desde la red nacional, a menudo se producen timeouts; configura un acelerador de imágenes y vuelve a extraer, o usa docker pull n8nio/n8n y espera con paciencia, la imagen tiene varios cientos de MB.
El chino no surtió efecto.N8N_DEFAULT_LOCALE Solo afecta el idioma predeterminado de las sesiones nuevas; las cuentas existentes deben cambiarlo manualmente en la configuración. Además, como se mencionó antes, solo el shell de la interfaz está en chino.
No te apresures a exponerlo a la red pública
Después de instalarlo querías acceder desde el móvil, así que abriste el port 5678 a la red pública — este es el error más común. En n8n se guardan las API Key de tus diversos sistemas; dejarlo expuesto sin protección en la red pública equivale a colgar las llaves en la puerta.
La forma correcta es: primero úsalo en local o en la red interna, y tras confirmar que lo usarás a largo plazo, sigue el proceso del siguiente artículo para vincular un dominio, habilitar HTTPS, usar Nginx como reverse proxy y hacer que solo 127.0.0.1 escuche.
Además, tras el primer inicio de sesión, cambia la contraseña del administrador por una contraseña fuerte; no uses admin123 este tipo de cosas.
Sobre la versión
n8n publica una versión menor cada semana. Al escribir este artículo, la versión estable indicada en la documentación oficial es 2.44.5, la beta es 2.45.2; mi instancia corre la 2.43.7, y las capturas de pantalla de la interfaz provienen de ella.
Recomendación:No uses latest en entornos de producción. Fija la image a un número de versión concreto, por ejemplo n8nio/n8n:2.44.5Para actualizar, cambia el número y vuelve a hacer pull. La consecuencia de usar latest es que un día reinicias y la versión cambió silenciosamente, el comportamiento del workflow también cambia y depurarlo cuesta mucho.
Cómo ver tu versión: tras iniciar sesión, entra en ajustes en la parte inferior izquierda, o ejecuta docker exec n8n n8n --version。
Siguiente paso
Ya está instalado, primero dedica diez minutos a reconocer la interfaz:Guía de la interfaz de n8n: qué dicen el canvas, los nodos y el historial de ejecucionesUna vez reconocida, usa lo que instalaste hoy para escribir el ejemplo de tres nodos de arriba; la mano recuerda mejor que los ojos.
Si prefieres entender primero "por qué vale la pena aprenderlo", vuelve al artículo anterior:Qué es n8n, introducción desde cero y escenarios de aplicación。
Referencias
- Install with Docker (oficial)
- Install with npm (oficial)
- Configuración de variables de entorno (oficial)
- Repositorio oficial de ejemplos n8n-hosting
Última actualización: 22 de octubre de 2026. Los comandos de Docker se verificaron según la documentación oficial (la versión estable indicada en ese momento era 2.44.5), las capturas de pantalla son de mi propia máquina con 2.43.7.

