• Tecnología

Cómo alojar n8n en un VPS de Linux (paso a paso)

  • Felix Rose-Collins
  • ••
  • 16 min read

Introducción

n8n es una de las herramientas de automatización de flujos de trabajo de código abierto más potentes que existen en la actualidad. A diferencia de alternativas SaaS como Zapier o Make, n8n te ofrece un control total sobre tus datos y automatizaciones, pero solo si lo alojas tú mismo. Un VPS con Linux es el entorno ideal para ello: siempre activo, asequible y totalmente bajo tu control.

Esta guía te acompaña a lo largo de todo el proceso de configuración de una instancia de n8n autohospedada y lista para producción en un VPS Linux. Pasarás de un servidor vacío a una implementación de n8n totalmente segura y con SSL habilitado, con Docker, Nginx, PostgreSQL, copias de seguridad automatizadas y una configuración de seguridad reforzada.

Puntos clave

  • n8n en un VPS te ofrece flujos de trabajo ilimitados, sin límites de uso y plena propiedad de los datos
  • Docker es el método de instalación recomendado para facilitar las actualizaciones y el aislamiento
  • PostgreSQL es la base de datos recomendada para cargas de trabajo en producción (no SQLite)
  • Se requiere un proxy inverso (Nginx) con certificado SSL de Let’s Encrypt para su uso en producción
  • Tu VPS debería tener al menos 1 vCPU y 2 GB de RAM para disfrutar de una experiencia fluida con n8n y PostgreSQL
  • Las copias de seguridad automáticas periódicas protegen los datos de tus flujos de trabajo y tus credenciales

¿Qué es n8n?

n8n (que se pronuncia «n-ocho-n») es una plataforma de automatización de flujos de trabajo de código abierto que te permite conectar aplicaciones, API y servicios mediante un editor visual basado en nodos. Admite más de 400 integraciones listas para usar y te permite ejecutar código personalizado en JavaScript o Python dentro de los flujos de trabajo.

La diferencia clave entre n8n y sus competidores se reduce a tres aspectos: propiedad, coste y flexibilidad.

**Propiedad: **Cuando alojas n8n por tu cuenta, los datos de tus flujos de trabajo, las credenciales y los registros de ejecución nunca salen de tu servidor. Para los equipos que manejan datos confidenciales de clientes, registros financieros o lógica empresarial propia, esto es de vital importancia. Las plataformas en la nube almacenan tu lógica de automatización en su infraestructura, sujeta a sus políticas de retención de datos y a su nivel de seguridad.

**Coste: **El plan en la nube de n8n cobra por cada ejecución de flujo de trabajo, lo que se acumula rápidamente en el caso de automatizaciones de gran volumen. Un equipo de tamaño medio que realice miles de ejecuciones al día puede llegar a gastar cientos de dólares al mes. En tu propio VPS, una vez pagado el servidor, las ejecuciones son ilimitadas sin coste adicional.

**Flexibilidad: **La versión autohospedada de n8n te permite instalar nodos de la comunidad, ejecutar código arbitrario dentro de los flujos de trabajo, conectarte a servicios internos a los que no se puede acceder desde la Internet pública y configurar cada aspecto de la implementación a tu gusto. Los planes en la nube restringen muchas de estas capacidades.

Requisitos previos

Antes de empezar, asegúrate de que dispones de:

  • Un VPS Linux con Ubuntu 22.04 o 24.04 (recomendado). Comprueba que tu proveedor ofrezca Ubuntu en el plan que elijas, ya que algunos planes básicos solo ofrecen otras distribuciones
  • Un usuario no root con privilegios de sudo
  • Un nombre de dominio que apunte a la dirección IP de tu VPS (por ejemplo, n8n.tudominio.com)
  • Acceso SSH a tu servidor
  • Conocimientos básicos sobre la línea de comandos de Linux

Elegir el VPS adecuado

El servidor que elijas tiene un impacto directo en el rendimiento de n8n. Como mínimo, necesitas 1 vCPU, 2 GB de RAM y 20 GB de almacenamiento SSD. Se necesita más RAM que en una instalación mínima basada en SQLite porque PostgreSQL, Nginx y n8n se ejecutan al mismo tiempo.

Conoce Ranktracker

La plataforma todo en uno para un SEO eficaz

Detrás de todo negocio de éxito hay una sólida campaña de SEO. Pero con las innumerables herramientas y técnicas de optimización que existen para elegir, puede ser difícil saber por dónde empezar. Bueno, no temas más, porque tengo justo lo que necesitas. Presentamos la plataforma todo en uno Ranktracker para un SEO eficaz

¡Por fin hemos abierto el registro a Ranktracker totalmente gratis!

Crear una cuenta gratuita

O inicia sesión con tus credenciales

Para equipos con varios usuarios, flujos de trabajo complejos de varios pasos o un alto volumen de webhooks, actualiza a 2 vCPU y 4 GB de RAM. El almacenamiento debe ser de al menos 40 GB si tienes previsto conservar registros de ejecución prolongados.

PetroSky ofrece planes de VPS NVMe en París y Montreal, con n8n disponible como aplicación de un solo clic al finalizar la compra: un script de instalación de código abierto implementa n8n con Docker Compose y configura HTTPS automáticamente a través de Caddy y Let’s Encrypt. Esta guía describe el procedimiento manual, que funciona con cualquier proveedor.

A la hora de seleccionar un proveedor de VPS, ten en cuenta también la ubicación geográfica. Aloja tu instancia de n8n en la región más cercana a los servicios a los que se conectará con mayor frecuencia; esto reduce la latencia de la API en las ejecuciones de tu flujo de trabajo.

Paso 1: Actualiza tu servidor

Conéctate por SSH a tu VPS y ejecuta una actualización completa del sistema antes de instalar nada:

    sudo apt update && sudo apt upgrade -y

Esto garantiza que dispongas de los últimos parches de seguridad y que todas las bibliotecas del sistema estén actualizadas antes de añadir Docker y otro software.

Reinicia el sistema si se ha aplicado una actualización del kernel:

    sudo reboot

Después de volver a conectarte mediante SSH, crea un usuario del sistema dedicado para ejecutar n8n. Ejecutar servicios como root supone un riesgo de seguridad:

    sudo adduser n8nuser
    sudo usermod -aG sudo n8nuser
    su - n8nuser

Paso 2: Instalar Docker y Docker Compose

El método de instalación oficial recomendado por n8n es Docker. Docker aísla n8n y sus dependencias del resto del sistema, lo que facilita las actualizaciones y las reversiones.

Instala Docker utilizando el script oficial:

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

La documentación de Docker señala que el script de instalación no se recomienda para entornos de producción, ya que instala la última versión sin permitirte elegir una versión concreta. Si deseas fijar versiones de Docker, utiliza en su lugar el método del repositorio apt que se describe en la guía de instalación de Docker para Ubuntu (docs.docker.com/engine/install/ubuntu/).

Añade tu usuario al grupo Docker para poder ejecutar comandos de Docker sin necesidad de «sudo»:

    sudo usermod -aG docker $USER
    newgrp docker

Comprueba que Docker funciona correctamente:

    docker --version
    docker compose version

Ambos comandos deberían mostrar las cadenas de versión sin errores. Si no se encuentra Docker Compose, instálalo manualmente:

    sudo apt install docker-compose-plugin -y

Paso 3: Configurar PostgreSQL para producción

Por defecto, n8n utiliza SQLite como base de datos. SQLite es adecuado para uso personal y flujos de trabajo ligeros, pero gestiona mal las escrituras simultáneas, lo que se traduce en ralentizaciones y errores del tipo «la base de datos está bloqueada» cuando se ejecutan muchos flujos de trabajo al mismo tiempo. Para una implementación en producción, PostgreSQL es la opción adecuada.

Conoce Ranktracker

La plataforma todo en uno para un SEO eficaz

Detrás de todo negocio de éxito hay una sólida campaña de SEO. Pero con las innumerables herramientas y técnicas de optimización que existen para elegir, puede ser difícil saber por dónde empezar. Bueno, no temas más, porque tengo justo lo que necesitas. Presentamos la plataforma todo en uno Ranktracker para un SEO eficaz

¡Por fin hemos abierto el registro a Ranktracker totalmente gratis!

Crear una cuenta gratuita

O inicia sesión con tus credenciales

Ejecuta PostgreSQL dentro de Docker junto con n8n:

    mkdir ~/n8n && cd ~/n8n

Crea un archivo de entorno para almacenar tus claves de forma segura. Nunca incluyas contraseñas de forma estática en tu archivo «compose»:

    nano ~/n8n/.env

Añade lo siguiente, sustituyendo los valores de los marcadores de posición por contraseñas seguras y únicas:

    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=tu_contraseña_segura_para_la_base_de_datos_aquí
    POSTGRES_DB=n8n
    N8N_ENCRYPTION_KEY=tu_cadena_aleatoria_de_32_caracteres_aquí

Genera una clave de cifrado segura con:

    openssl rand -hex 16

Utiliza el resultado como tu N8N_ENCRYPTION_KEY. Esta clave cifra las credenciales almacenadas en n8n; si la pierdes, todas las credenciales guardadas se volverán irrecuperables.

Paso 4: Crea el archivo Docker Compose de n8n

Crea el archivo docker-compose.yml en tu directorio n8n:

    nano ~/n8n/docker-compose.yml

Pega la siguiente configuración:


services:
  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      reintentos: 10


  n8n:
    imagen: docker.n8n.io/n8nio/n8n
    reinicio: siempre
    puertos:
      - "127.0.0.1:5678:5678"
    entorno:
      - N8N_HOST=n8n.tudominio.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.yourdomain.com/
      - GENERIC_TIMEZONE=Europe/London
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - EXECUTIONS_MODE=regular
      - N8N_LOG_LEVEL=info
    volúmenes:
      - n8n_data:/home/node/.n8n
    depende de:
      postgres:
        condición: service_healthy


volúmenes:
  postgres_data:
  n8n_data:

Notas de configuración:

  • La asignación del puerto 127.0.0.1:5678:5678 garantiza que solo se pueda acceder a n8n de forma local. Nginx se encargará de todo el tráfico externo; nunca expongas el puerto 5678 directamente a Internet.
  • El uso de `depends_on` con la condición `service_healthy` garantiza que n8n espere a que PostgreSQL esté completamente listo antes de iniciarse. Sin esto, n8n fallará en el primer arranque si la base de datos aún no acepta conexiones.
  • N8N_LOG_LEVEL=info te proporciona registros operativos útiles sin saturar el almacenamiento en disco, como ocurriría con la opción «debug».

Paso 5: Instalar y configurar Nginx

Nginx actuará como un proxy inverso, reenviando el tráfico HTTPS desde el puerto 443 a tu contenedor de n8n en el puerto 5678. También se encarga de la terminación SSL, lo que significa que n8n no tiene que gestionar los certificados por sí mismo.

    sudo apt install nginx -y

Elimina el sitio predeterminado y crea un nuevo bloque de servidor para n8n:

    sudo rm /etc/nginx/sites-enabled/default
    sudo nano /etc/nginx/sites-available/n8n

Pega lo siguiente:

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
server {
    listen 80;
    server_name n8n.tudominio.com;


    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        chunked_transfer_encoding on;
        proxy_buffering off;
        proxy_cache desactivado;
        proxy_read_timeout 90s;
        client_max_body_size 50m;
    }
}

El bloque «map» de la parte superior gestiona correctamente los encabezados de actualización de WebSocket. n8n utiliza WebSockets para las actualizaciones en tiempo real en el editor, por lo que esta configuración es importante: sin ella, el editor visual no funcionará correctamente.

La directiva `client_max_body_size 50m` permite que los flujos de trabajo reciban cargas útiles de webhooks de gran tamaño. El límite predeterminado de Nginx es de 1 MB, lo cual es demasiado pequeño para flujos de trabajo que procesan subidas de archivos o respuestas JSON de gran tamaño.

Activa la configuración y pruébala:

    sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx

Paso 6: Emitir un certificado SSL con Let’s Encrypt

Instala Certbot y el complemento de Nginx:

    sudo apt install certbot python3-certbot-nginx -y

Solicita un certificado para tu dominio:

    sudo certbot --nginx -d n8n.tudominio.com

Sigue las instrucciones. Cuando se te pregunte si deseas redirigir el tráfico HTTP a HTTPS, selecciona Sí (opción 2). Certbot actualizará automáticamente la configuración de Nginx para gestionar esta redirección e instalará la cadena completa de certificados.

Comprueba que la renovación automática esté configurada correctamente:

    sudo certbot renew --dry-run

Certbot instala un temporizador de systemd que renueva los certificados automáticamente cada 12 horas. Los certificados se renuevan cuando faltan menos de 30 días para su caducidad. No deberías tener que renovarlos manualmente nunca.

Paso 7: Iniciar n8n

Vuelve a tu directorio de n8n e inicia todos los servicios:

    cd ~/n8n
    docker compose up -d

Docker descargará las imágenes de PostgreSQL y n8n, creará los volúmenes, iniciará primero PostgreSQL, esperará a que se supere la comprobación de estado y, a continuación, iniciará n8n. Este proceso tarda entre 1 y 3 minutos la primera vez que se ejecuta.

Comprueba que ambos contenedores estén en ejecución:

    docker compose ps

Deberías ver tanto «postgres» como «n8n» en la lista con el estado «Up». Si «n8n» aparece como «Restarting», comprueba los registros:

    docker compose logs n8n --tail=50

Una vez que ambos contenedores estén en buen estado, abre tu navegador y ve a https://n8n.yourdomain.com. Se te pedirá que crees una cuenta de propietario con una dirección de correo electrónico y una contraseña. Esta cuenta tiene acceso de administrador completo a tu instancia de n8n.

Paso 8: Configurar n8n para que se inicie al arrancar el sistema

La directiva «restart: always» de tu archivo docker-compose.yml garantiza que todos los contenedores se reinicien automáticamente en caso de fallo o reinicio del servidor.

Compruébalo reiniciando el servidor:

    sudo reboot

Después de volver a conectarte por SSH, comprueba que n8n se ha reiniciado automáticamente:

    docker compose -f ~/n8n/docker-compose.yml ps

Ambos contenedores deberían aparecer como en ejecución sin necesidad de intervención manual.

Paso 9: Configurar copias de seguridad automáticas

Tus datos de n8n —flujos de trabajo, credenciales e historial de ejecución— se almacenan en dos lugares: la base de datos PostgreSQL y el volumen de Docker n8n_data (que almacena las claves de cifrado y parte de la configuración). Realiza copias de seguridad de ambos con regularidad.

Crea un script de copia de seguridad:

    nano ~/n8n/backup.sh

Pega lo siguiente:

    #!/bin/bash
    BACKUP_DIR="/home/n8nuser/backups"
    DATE=$(date +%Y-%m-%d_%H-%M)
    LOG_FILE="$BACKUP_DIR/backup.log"
# Asegúrate de que el directorio de copias de seguridad existe antes de nada
mkdir -p "$BACKUP_DIR"


# Realizar el volcado de PostgreSQL
DUMP_FILE="$BACKUP_DIR/n8n_db_$DATE.sql"
docker compose -f /home/n8nuser/n8n/docker-compose.yml exec -T postgres \
  pg_dump -U n8n n8n > "$DUMP_FILE"


# Comprobar que la copia de seguridad se ha realizado correctamente y que el archivo no está vacío
if [ $? -ne 0 ] || [ ! -s "$DUMP_FILE" ]; then
    echo "ERROR: Fallo en la copia de seguridad de la base de datos el $DATE" >> "$LOG_FILE"
    rm -f "$DUMP_FILE"
    exit 1
fi


# Realizar una copia de seguridad de la clave de cifrado y las variables de entorno
cp /home/n8nuser/n8n/.env "$BACKUP_DIR/n8n_env_$DATE.bak"
# Realizar una copia de seguridad del volumen n8n_data (configuración de la instancia y nodos de la comunidad instalados)
docker run --rm -v n8n_n8n_data:/data -v "$BACKUP_DIR":/backup alpine \
  tar czf /backup/n8n_data_$DATE.tar.gz -C /data .


# Comprimir el volcado de la base de datos
gzip "$DUMP_FILE"


# Conservar solo las copias de seguridad de los últimos 7 días
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
find "$BACKUP_DIR" -name "*.bak" -mtime +7 -delete
find "$BACKUP_DIR" -name "n8n_data_*.tar.gz" -mtime +7 -delete


echo "Copia de seguridad completada: n8n_db_$DATE.sql.gz" >> "$LOG_FILE"

El nombre del volumen «n8n_n8n_data» se debe a que Docker Compose antepone el nombre de la carpeta del proyecto (n8n) al volumen. Comprueba el tuyo con el comando `docker volume ls`.

Haz que el script sea ejecutable y prográmalo con cron:

    chmod +x ~/n8n/backup.sh
    crontab -e

Añade esta línea para ejecutar la copia de seguridad todos los días a las 2 de la madrugada:

    0 2 * * * /home/n8nuser/n8n/backup.sh >> /home/n8nuser/backups/backup.log 2>&1

Para garantizar la redundancia fuera del sitio, considera sincronizar tu directorio de copias de seguridad con un proveedor de almacenamiento de objetos compatible con S3 utilizando rclone o aws s3 sync.

Paso 10: Habilitar medidas básicas de seguridad

Configurar un cortafuegos

Instala UFW y permite solo los puertos que necesite tu servidor:

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable

Comprueba que las reglas estén activas:

    sudo ufw status verbose

Deberías ver que los puertos 22 (SSH), 80 (HTTP) y 443 (HTTPS) están permitidos. Una advertencia: Docker escribe sus propias reglas de cortafuegos y omite UFW para los puertos de contenedores publicados. El puerto 5678 permanece privado porque el archivo Compose lo vincula a 127.0.0.1, no por culpa de UFW, así que nunca cambies esa vinculación a 0.0.0.0.

Desactiva la autenticación por contraseña para SSH

Si utilizas claves SSH (como deberías hacer), desactiva por completo el inicio de sesión SSH basado en contraseña. En primer lugar, asegúrate de que la cuenta n8nuser pueda iniciar sesión con tu clave. Desde tu equipo local, ejecuta:

    ssh-copy-id n8nuser@tu_ip_del_servidor

A continuación, edita la configuración del servidor SSH:

    sudo nano /etc/ssh/sshd_config

Establece los siguientes valores:

    PasswordAuthentication no
    PermitRootLogin no
    sudo systemctl restart ssh

En muchas imágenes de Ubuntu en la nube, un archivo situado en /etc/ssh/sshd_config.d/ (a menudo 50-cloud-init.conf) establece PasswordAuthentication yes, y este valor prevalece porque sshd utiliza el primer valor que lee. Comprueba la configuración que está realmente en vigor:

    sudo sshd -T | grep -i passwordauthentication

Debería aparecer «passwordauthentication no». Si no es así, cambia el valor en el archivo de anulación y reinicia SSH de nuevo.

No cierres tu sesión actual de SSH hasta que hayas comprobado que el inicio de sesión con clave funciona en una nueva ventana de terminal.

Limitar la tasa de solicitudes de la página de inicio de sesión de n8n

Añade una limitación de velocidad para ralentizar los ataques de fuerza bruta contra el punto final de inicio de sesión de n8n.

Conoce Ranktracker

La plataforma todo en uno para un SEO eficaz

Detrás de todo negocio de éxito hay una sólida campaña de SEO. Pero con las innumerables herramientas y técnicas de optimización que existen para elegir, puede ser difícil saber por dónde empezar. Bueno, no temas más, porque tengo justo lo que necesitas. Presentamos la plataforma todo en uno Ranktracker para un SEO eficaz

¡Por fin hemos abierto el registro a Ranktracker totalmente gratis!

Crear una cuenta gratuita

O inicia sesión con tus credenciales

**Importante: **La directiva «limit_req_zone» debe ir dentro del bloque «http {}» de tu configuración principal de Nginx, no dentro del bloque «server». Abre la configuración principal:

    sudo nano /etc/nginx/nginx.conf

Añade esta línea dentro del bloque http {} existente:

    http {
        ...
        limit_req_zone $binary_remote_addr zone=n8n_login:10m rate=5r/m;
        ...
    }

A continuación, en la configuración de tu sitio n8n (/etc/nginx/sites-available/n8n), añade este bloque `location` dentro del bloque `server` que escucha en el puerto 443 (Certbot lo creó en el paso 6), junto a la ubicación existente `/`. Nginx no transfiere los encabezados de proxy desde la ubicación `/`, por lo que se repiten aquí:

    location /rest/login {
        limit_req zone=n8n_login burst=5 nodelay;
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

Recarga Nginx para aplicar los cambios:

    sudo nginx -t && sudo systemctl reload nginx

Esto limita cada dirección IP a aproximadamente 5 intentos de inicio de sesión por minuto, con un pequeño margen para picos puntuales.

Mantén actualizados n8n y PostgreSQL

Descarga y reinicia regularmente con las imágenes más recientes:

    cd ~/n8n
    docker compose pull
    docker compose up -d

Docker descargará las últimas imágenes de n8nio/n8n y PostgreSQL y reiniciará únicamente los contenedores para los que haya una versión más reciente disponible.

Para el entorno de producción, considera fijar la imagen de n8n a una etiqueta de versión específica (docker.n8n.io/n8nio/n8n:<versión>, tomada de las notas de lanzamiento de n8n) y actualizarla de forma deliberada, de modo que una descarga rutinaria nunca salte una versión principal antes de que hayas leído el registro de cambios.

Solución de problemas comunes

El contenedor de n8n se reinicia continuamente

Comprueba los registros del contenedor inmediatamente después de que comience el bucle de reinicio:

    docker compose logs n8n --tail=100

Causas habituales:

  • Error de conexión a la base de datos: Asegúrate de que PostgreSQL funciona correctamente con el comando `docker compose ps`. Comprueba que la variable `POSTGRES_PASSWORD` de tu archivo `.env` coincide con la contraseña utilizada para inicializar la base de datos.
  • Falta la clave de cifrado o se ha modificado: si N8N_ENCRYPTION_KEY no está configurada o se ha modificado tras la primera ejecución, n8n no podrá descifrar las credenciales almacenadas y se bloqueará.
  • RAM insuficiente: PostgreSQL y n8n juntos pueden utilizar entre 1 y 1,5 GB de RAM. Comprueba la memoria disponible con «free -h».

Los webhooks no funcionan

Los webhooks requieren que se pueda acceder a n8n desde Internet en tu dominio. Comprueba lo siguiente:

  1. El registro A del DNS de tu dominio apunta a la IP de tu VPS: dig n8n.tudominio.com
  2. Nginx está en ejecución: sudo systemctl status nginx
  3. El puerto 443 está abierto: `sudo ufw status`
  4. La variable de entorno WEBHOOK_URL coincide exactamente con tu dominio público, incluida la barra al final

El editor de n8n no se carga correctamente

Si el editor visual se carga pero muestra un lienzo de flujo de trabajo en blanco o las actualizaciones en tiempo real dejan de funcionar, la conexión WebSocket está fallando. Comprueba que el bloque $http_upgrade esté presente en tu configuración de Nginx y que estés utilizando la variable $connection_upgrade —no la cadena literal «upgrade»— en la línea proxy_set_header Connection.

Errores de certificado SSL

Si Certbot falla con un error de validación del dominio, comprueba que se pueda acceder al puerto 80 desde Internet:

    curl -I http://n8n.yourdomain.com

Si la solicitud agota el tiempo de espera, es posible que el cortafuegos de tu proveedor de VPS esté bloqueando el puerto 80. Comprueba las reglas del cortafuegos de la consola en la nube, además de las de UFW.

Conclusión

Alojar n8n de forma autónoma en un VPS Linux te proporciona una plataforma de automatización de flujos de trabajo lista para producción, sin límites de ejecución, con total privacidad de datos y la flexibilidad necesaria para ejecutar cualquier integración que necesites. La configuración descrita en esta guía —Docker, PostgreSQL, proxy inverso Nginx, certificado SSL de Let’s Encrypt, copias de seguridad automatizadas y refuerzo de la seguridad— es la misma pila que se utiliza en entornos de producción y te ofrece una base estable y segura sobre la que construir.

A diferencia de una instalación mínima mediante el comando «run» de Docker, esta configuración está diseñada para soportar los reinicios del servidor, gestionar ejecuciones simultáneas de flujos de trabajo y recuperarse correctamente ante fallos. Tus credenciales están cifradas, se realiza una copia de seguridad de tus datos cada noche y tu punto de acceso de inicio de sesión tiene un límite de frecuencia para evitar ataques de fuerza bruta.

Una vez que tu instancia esté en funcionamiento, explora los nodos integrados de n8n para bases de datos, API, webhooks e integraciones de IA para empezar a automatizar tus flujos de trabajo de inmediato. El foro de la comunidad autohospedado en community.n8n.io también es un recurso excelente para obtener ideas sobre flujos de trabajo, resolver problemas con los nodos y recibir consejos de implementación.

Felix Rose-Collins

Felix Rose-Collins

Ranktracker's CEO/CMO & Co-founder

Felix Rose-Collins is the Co-founder and CEO/CMO of Ranktracker. With over 15 years of SEO experience, he has single-handedly scaled the Ranktracker site to over 500,000 monthly visits, with 390,000 of these stemming from organic searches each month.

Empieza a usar Ranktracker... ¡Gratis!

Averigüe qué está impidiendo que su sitio web se clasifique.

Crear una cuenta gratuita

O inicia sesión con tus credenciales

Different views of Ranktracker app