Blog
Cómo instalar N8N en VPS Ubuntu con Portainer (fácil)
Después de instalar PostgreSQL en el Paso 3, es momento de completar tu entorno de automatización desplegando N8N. En este tutorial aprenderás a instalar N8N en VPS Ubuntu usando Portainer, conectándolo a Redis y PostgreSQL.
¿Por qué instalar N8N en VPS Ubuntu?
N8N es una plataforma open source para automatizar procesos y flujos de trabajo. Al instalarlo en tu propio servidor, obtienes control total, seguridad de datos y una interfaz visual para conectar APIs, servicios y aplicaciones.
Requisitos previos
- Servidor VPS Ubuntu con Docker, Portainer y Traefik instalados
- Redis y PostgreSQL configurados
- Red Docker
gruponegociaNetcreada - Subdominios configurados (ej.
workflow.tudominio.com) - Contraseña segura de 32 caracteres para PostgreSQL y N8N
Paso 1: Crear la base de datos para N8N
- Accede a Portainer
- Entra al contenedor de PostgreSQL
- Abre la consola como usuario
postgresy ejecuta:
psql
CREATE DATABASE n8n_fila;
Paso 2: Crear el stack para instalar N8N en VPS Ubuntu desde Portainer
El siguiente paso es crear un stack desde Portainer para instalar N8N en VPS Ubuntu con una configuración YAML predefinida.
- En el menú de Portainer, ve a Stacks.
- Haz clic en Add stack.
- Escribe el nombre:
postgres - Pega el siguiente contenido YAML en el editor:
version: "3.8"
services:
n8n_editor:
image: n8nio/n8n:latest
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: n8n_fila
DB_POSTGRESDB_USER: postgres
DB_POSTGRESDB_PASSWORD: tupasswordparapostgres
N8N_ENCRYPTION_KEY: tupasswordparan8n
N8N_HOST: workflow.n8negocia.xyz
N8N_EDITOR_BASE_URL: https://workflow.n8negocia.xyz/
N8N_PROTOCOL: https
NODE_ENV: production
WEBHOOK_URL: https://devwebhook.n8negocia.xyz/
EXECUTIONS_MODE: queue
QUEUE_BULL_REDIS_HOST: redis
QUEUE_BULL_REDIS_PORT: 6379
QUEUE_BULL_REDIS_DB: 2
NODE_FUNCTION_ALLOW_EXTERNAL: moment,lodash,moment-with-locales
EXECUTIONS_DATA_PRUNE: 'true'
EXECUTIONS_DATA_MAX_AGE: 336
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: '0.3'
memory: 512M
labels:
- traefik.enable=true
- traefik.http.routers.n8n_editor.rule=Host(`workflow.n8negocia.xyz`)
- traefik.http.routers.n8n_editor.service=n8n_editor
- traefik.http.routers.n8n_editor.entrypoints=websecure
- traefik.http.routers.n8n_editor.tls.certresolver=le
- traefik.http.routers.n8n_editor.tls=true
- traefik.http.services.n8n_editor.loadbalancer.server.port=5678
networks:
- gruponegociaNet
n8n_webhook:
image: n8nio/n8n:latest
command: webhook
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: n8n_fila
DB_POSTGRESDB_USER: postgres
DB_POSTGRESDB_PASSWORD: tupasswordparapostgres
N8N_ENCRYPTION_KEY: tupasswordparan8n
N8N_HOST: workflow.n8negocia.xyz
N8N_EDITOR_BASE_URL: https://workflow.n8negocia.xyz/
N8N_PROTOCOL: https
NODE_ENV: production
WEBHOOK_URL: https://devwebhook.n8negocia.xyz/
EXECUTIONS_MODE: queue
QUEUE_BULL_REDIS_HOST: redis
QUEUE_BULL_REDIS_PORT: 6379
QUEUE_BULL_REDIS_DB: 2
NODE_FUNCTION_ALLOW_EXTERNAL: moment,lodash,moment-with-locales
EXECUTIONS_DATA_PRUNE: 'true'
EXECUTIONS_DATA_MAX_AGE: 336
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: '0.5'
memory: 320M
labels:
- traefik.enable=true
- traefik.http.routers.n8n_webhook.rule=Host(`devwebhook.n8negocia.xyz`)
- traefik.http.routers.n8n_webhook.service=n8n_webhook
- traefik.http.routers.n8n_webhook.entrypoints=websecure
- traefik.http.routers.n8n_webhook.tls.certresolver=le
- traefik.http.routers.n8n_webhook.tls=true
- traefik.http.services.n8n_webhook.loadbalancer.server.port=5678
networks:
- gruponegociaNet
n8n_worker:
image: n8nio/n8n:latest
command: worker --concurrency=3
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: n8n_fila
DB_POSTGRESDB_USER: postgres
DB_POSTGRESDB_PASSWORD: tupasswordparapostgres
N8N_ENCRYPTION_KEY: tupasswordparan8n
N8N_HOST: workflow.n8negocia.xyz
N8N_EDITOR_BASE_URL: https://workflow.n8negocia.xyz/
N8N_PROTOCOL: https
NODE_ENV: production
WEBHOOK_URL: https://devwebhook.n8negocia.xyz/
EXECUTIONS_MODE: queue
QUEUE_BULL_REDIS_HOST: redis
QUEUE_BULL_REDIS_PORT: 6379
QUEUE_BULL_REDIS_DB: 2
NODE_FUNCTION_ALLOW_EXTERNAL: moment,lodash,moment-with-locales
EXECUTIONS_DATA_PRUNE: 'true'
EXECUTIONS_DATA_MAX_AGE: 336
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: '0.5'
memory: 384M
networks:
- gruponegociaNet
networks:
gruponegociaNet:
external: true
- Confirma que el volumen y red sean externos
- Desactiva «Use limited resources» si aplica
- Haz clic en Deploy the stack
Paso 3: Verificar que N8N esté funcionando
- Ve a la sección Containers y verifica que el servicio
n8nesté en estado running - Abre
https://workflow.tudominio.comen tu navegador - Regístrate con un correo electrónico y contraseña segura
- Activa tu cuenta desde el correo recibido
Errores comunes y soluciones
- Error de red: verifica que la red
gruponegociaNetesté creada y activa - Fallo de conexión a PostgreSQL: revisa las credenciales y que la base de datos
n8n_filaexista - Problemas de dominio: asegúrate de tener configurados los registros DNS correctamente
Conclusión y recursos adicionales
¡Felicidades! Ya has completado el proceso de instalación de N8N en VPS Ubuntu. Tu entorno ahora está listo para automatizar tareas con total control.
¿Te perdiste algún paso? Aquí tienes los anteriores:
¿Quieres que lo configuremos por ti? Visita nuestra página de automatización con n8n o contáctanos desde la página de contacto.
Referencias