Instalar n8n self-hosted con Docker: guía completa 2026

Instalar n8n self hosted con Docker paso a paso: VPS, Docker Compose, HTTPS, variables críticas, backups y los errores típicos de webhooks y credenciales.

Damián Oliva··6 min de lectura

Instalar n8n en tu propio servidor es la diferencia entre pagar por cada ejecución y tener automatización ilimitada a costo de un VPS. Para instalar n8n self-hosted necesitás un VPS de 2 GB de RAM o más (USD 6-12/mes), un dominio apuntando al servidor, y Docker Compose con tres piezas: el contenedor de n8n, PostgreSQL como base de datos y un reverse proxy que resuelva HTTPS. El proceso completo lleva 1-2 horas, y los dos errores que arruinan la mayoría de las instalaciones —webhooks que no llegan y credenciales perdidas al actualizar— se previenen con dos variables de entorno. Esta guía va al grano y marca exactamente dónde están las trampas.

Paso 0: el servidor y el dominio

Requisitos mínimos realistas para producción liviana:

  • VPS: 2 vCPU, 4 GB RAM, 40 GB de disco. Proveedores típicos: Hetzner (~USD 6), DigitalOcean (~USD 24), Vultr (~USD 12). Con 2 GB funciona, pero los workflows con IA o muchos datos lo van a sufrir.
  • Sistema: Ubuntu 22.04 o 24.04 LTS.
  • Dominio: un subdominio tipo n8n.tuempresa.com con un registro A apuntando a la IP del VPS. Hacelo antes de empezar: la emisión del certificado SSL lo necesita propagado.

Instalá Docker con el script oficial:

curl -fsSL https://get.docker.com | sh

Paso 1: estructura y variables de entorno críticas

Creá la carpeta del proyecto y el archivo .env:

mkdir -p /opt/n8n && cd /opt/n8n
# .env
N8N_HOST=n8n.tuempresa.com
WEBHOOK_URL=https://n8n.tuempresa.com/
N8N_PROTOCOL=https
N8N_PORT=5678

# LA variable más importante de toda la instalación:
N8N_ENCRYPTION_KEY=una-clave-larga-aleatoria-que-vas-a-guardar-afuera

GENERIC_TIMEZONE=America/Argentina/Buenos_Aires
TZ=America/Argentina/Buenos_Aires

# Base de datos
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=otra-clave-fuerte

# Higiene: limpiar ejecuciones viejas para que el disco no explote
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=336

Dos de estas variables previenen los dos desastres clásicos:

  1. WEBHOOK_URL: sin ella, n8n arma las URLs de webhook con localhost:5678. Todo parece funcionar en el editor… hasta que conectás WhatsApp, Mercado Pago o cualquier servicio externo y los eventos jamás llegan. Es el error número uno de instalación, y el síntoma es engañoso porque las ejecuciones manuales sí andan.
  2. N8N_ENCRYPTION_KEY: n8n cifra todas las credenciales guardadas (tokens de Google, claves de API, accesos a bases) con esta clave. Si no la fijás, n8n genera una; si el contenedor se recrea sin el volumen correcto o migrás de servidor, la clave cambia y todas tus credenciales quedan ilegibles, sin recuperación posible. Generala con openssl rand -hex 24, ponela en el .env y guardá una copia fuera del servidor (gestor de contraseñas).

Paso 2: docker-compose.yml

services:
  postgres:
    image: postgres:16
    restart: unless-stopped
    environment:
      - POSTGRES_DB=n8n
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=${DB_POSTGRESDB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data

  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    restart: unless-stopped
    env_file: .env
    ports:
      - "127.0.0.1:5678:5678"
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      - postgres

volumes:
  postgres_data:
  n8n_data:

Detalle de seguridad importante: el puerto está atado a 127.0.0.1, así n8n no queda expuesto directo a internet. Solo el reverse proxy del paso siguiente lo va a alcanzar. Levantá todo con:

docker compose up -d

Paso 3: HTTPS con reverse proxy

n8n sin HTTPS no es opción: las credenciales y los datos de tus clientes viajarían en texto plano, y la mayoría de los servicios (Meta, Google) directamente rechazan webhooks sin TLS. La vía más simple es Caddy, que emite y renueva los certificados solo:

apt install -y caddy
# /etc/caddy/Caddyfile
n8n.tuempresa.com {
    reverse_proxy 127.0.0.1:5678
}
systemctl reload caddy

Listo: https://n8n.tuempresa.com ya responde con certificado válido. Si preferís nginx + certbot funciona igual de bien; solo acordate de habilitar el soporte de WebSocket (cabeceras Upgrade y Connection), porque el editor de n8n lo usa y sin eso la interfaz se comporta raro.

Al entrar por primera vez, n8n te pide crear el usuario owner. Hacelo de inmediato: una instancia recién instalada y sin owner, expuesta a internet, es una invitación abierta.

Paso 4: backups, o el seguro que cuesta 10 minutos

Una instancia de n8n en producción acumula dos activos: los workflows y las credenciales. Perderlos es rehacer semanas de trabajo. El backup mínimo viable es un cron diario:

#!/bin/bash
# /opt/n8n/backup.sh
FECHA=$(date +%F)
docker exec $(docker compose -f /opt/n8n/docker-compose.yml ps -q postgres) \
  pg_dump -U n8n n8n | gzip > /opt/backups/n8n-$FECHA.sql.gz
cp /opt/n8n/.env /opt/backups/env-$FECHA
find /opt/backups -mtime +14 -delete

Y la regla que separa un backup de una ilusión: copialo fuera del servidor (S3, Backblaze B2, o al menos otro VPS). Un backup que vive en la misma máquina muere con la misma máquina. Acordate de que el .env contiene la encryption key: el dump de la base sin esa clave es inservible.

¿Preferís que todo esto lo haga alguien que lo hizo decenas de veces? Agendá una reunión de presentación y te cotizamos la instalación llave en mano: servidor, HTTPS, backups y monitoreo funcionando en menos de una semana.

Errores típicos y su solución rápida

Síntoma Causa probable Solución
Los webhooks no llegan (pero el test manual anda) Falta WEBHOOK_URL o quedó con localhost Definirla con el dominio público y recrear el contenedor
"Credentials could not be decrypted" tras actualizar o migrar Cambió la N8N_ENCRYPTION_KEY Restaurar la clave original del backup; si se perdió, hay que recargar credenciales a mano
El disco se llena a los pocos meses Historial de ejecuciones sin límite EXECUTIONS_DATA_PRUNE=true + EXECUTIONS_DATA_MAX_AGE
La interfaz carga pero se desconecta seguido Reverse proxy sin WebSocket Habilitar cabeceras Upgrade/Connection en nginx
Workflows lentos o caídos con volumen VPS de 1-2 GB al límite Subir a 4 GB; revisar workflows que cargan miles de ítems en memoria
Tareas programadas corren a cualquier hora Timezone por defecto (UTC) GENERIC_TIMEZONE y TZ con tu zona

Para actualizar versión: backup primero, después docker compose pull && docker compose up -d. Evitá saltar de una versión muy vieja a la última de un tirón; n8n migra el esquema de la base al arrancar y conviene pasar por versiones intermedias y leer las release notes.

Cuándo NO conviene self-hostearlo

Esta guía te da una instancia sólida, pero el self-hosting es una responsabilidad continua, no un trámite de una vez:

  • Si nadie en tu equipo va a dedicarle 2-4 horas mensuales (actualizaciones, logs, verificar backups), n8n Cloud a USD 24/mes es más barato que el primer incidente sin atender. Comparamos el costo total de las dos modalidades en cuánto cuesta n8n en 2026 y en n8n cloud vs self-hosted.
  • Si tus workflows van a manejar datos críticos del negocio (cobranzas, facturación), el costo de una instancia mal asegurada no es el servidor: es el incidente.
  • Si todavía no validaste que la automatización te sirve, probá primero en Cloud y migrá después; los workflows se exportan en JSON.

Instancia lista, ¿y ahora qué?

La instalación es el cimiento; el valor está en lo que construís arriba: conectar tu CRM, automatizar WhatsApp, orquestar agentes de IA y enchufar tus APIs propias. Ahí es donde las horas invertidas se convierten en horas ahorradas.

Y si llegaste hasta acá pensando "esto es exactamente lo que no quiero hacer yo": en Deepyze instalamos n8n self-hosted llave en mano —servidor endurecido, HTTPS, backups verificados, monitoreo— y construimos los workflows de tu operación como parte de nuestro servicio de automatización con IA. Contanos tu proyecto y en 24 horas tenés una propuesta con precio fijo, de un equipo en tu huso horario que después no desaparece: el mantenimiento también es nuestro.

Preguntas frecuentes

¿Qué necesito para instalar n8n self-hosted?+

Tres cosas: un VPS con 2 GB de RAM o más (desde USD 6-12/mes), un dominio o subdominio apuntando a ese servidor, y Docker con Docker Compose instalados. Con eso, una instalación básica con HTTPS funciona en 1-2 horas siguiendo los pasos correctos.

¿Por qué no me llegan los webhooks a n8n?+

Es el error número uno: falta definir la variable WEBHOOK_URL con tu dominio público (https://n8n.tudominio.com/). Sin ella, n8n genera URLs de webhook con localhost y los servicios externos no pueden alcanzarlas. También verificá que el reverse proxy pase las cabeceras y que el firewall permita el puerto 443.

¿Por qué n8n perdió mis credenciales después de actualizar?+

Porque la N8N_ENCRYPTION_KEY cambió o no estaba fijada. n8n cifra las credenciales guardadas con esa clave: si el contenedor se recrea y genera una clave nueva, las credenciales existentes quedan ilegibles para siempre. Definila explícitamente en el .env desde el día uno y guardala fuera del servidor.

¿n8n self-hosted necesita PostgreSQL?+

Por defecto usa SQLite, que alcanza para probar. Para producción conviene PostgreSQL: tolera más volumen, es más robusto ante cortes y simplifica los backups. Agregarlo son 15 líneas más en el docker-compose y la variable DB_TYPE=postgresdb.

¿Cómo actualizo n8n sin romper nada?+

Backup primero (base de datos y .env con la encryption key), después docker compose pull y docker compose up -d. Evitá saltar muchas versiones de golpe: n8n migra el esquema de datos al arrancar, y conviene leer las notas de la versión por cambios incompatibles en nodos que uses.

Automatización de Procesos Críticos

¿Buscás automatizar flujos empresariales sin pagar licencias abusivas por tarea?

Diseñamos y desplegamos infraestructuras de automatización con n8n y microservicios a medida que eliminan el 80% de las tareas manuales de tu equipo.

n8n Self-HostedAuditoría de ProcesosWebhooks SegurosAhorro de Licencias

Contacto directo con ingenieros de software · Sin compromiso · Acuerdo de confidencialidad

Servicio relacionado

¿Necesitás n8n y Workflows para tu empresa?

En Deepyze lo construimos a medida, con un equipo en tu mismo huso horario y propuesta en 24 hs.

Ver servicio de n8n y Workflows

Seguir leyendo