Objetivos de aprendizaje
Después de leer este artículo podrás:
- Elegir entre Docker y npm para ejecutar n8n
- Configurar la URL pública, la clave de cifrado y la base de datos
- Comprobar que los webhooks y las ejecuciones funcionan
n8n es una herramienta de automatización de flujos: conectas servicios (correo, hojas de cálculo, APIs, modelos de IA) en workflows visuales. En la nube oficial de n8n, solo usas la herramienta. Al hospedarlo tú, ejecutas el servidor y te encargas de disponibilidad, URL, base de datos y actualizaciones.
Un workflow que empieza con un webhook o una programación solo se dispara si el servidor está encendido todo el tiempo. Por eso ejecutar n8n en tu laptop sirve para probar, pero no para producción. Revisa en la documentación oficial las versiones admitidas y los nombres de las variables antes de instalar, porque cambian entre versiones de n8n.
¿Qué necesito para hospedar n8n?#
Cuatro cosas:
- Un proceso siempre encendido, para que los webhooks y las programaciones se disparen.
- Una URL pública con HTTPS, porque los servicios externos deben alcanzar tus webhooks.
- Datos persistentes: la carpeta
.n8nguarda la clave de cifrado y, por defecto, la base SQLite. - Una clave de cifrado fija (
N8N_ENCRYPTION_KEY) que tú controlas.
¿Docker o npm?#
La documentación de n8n cubre ambos. Docker usa la imagen n8nio/n8n, el puerto 5678 y un volumen montado en /home/node/.n8n:
docker volume create n8n_data
docker run -d --name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="America/Mexico_City" \
-e TZ="America/Mexico_City" \
-e N8N_ENCRYPTION_KEY="cambia-esto-por-una-clave-larga-y-aleatoria" \
-v n8n_data:/home/node/.n8n \
n8nio/n8nLa propia página de Docker señala Docker Compose como el método de instalación recomendado, y la instalación por npm figura como obsoleta. Si tu servidor no ejecuta Docker, npm sigue funcionando y requiere una versión de Node.js dentro del rango que indica la documentación:
npm install n8n -g
n8n startEn ambos casos, abre http://localhost:5678 para crear la cuenta de propietario en la primera ejecución.
¿Cómo configuro la URL pública?#
Detrás de un proxy inverso, n8n escucha en el puerto 5678 por dentro, pero el público entra por el 443. Sin configuración, construye URLs de webhook incorrectas. Según la documentación, configura:
N8N_HOST=n8n.tudominio.com
N8N_PROTOCOL=https
N8N_WEBHOOK_URL=https://n8n.tudominio.com/
N8N_PROXY_HOPS=1N8N_WEBHOOK_URL reemplaza a la antigua WEBHOOK_URL, obsoleta desde n8n 2.35.0. El último proxy del camino debe reenviar las cabeceras X-Forwarded-For, X-Forwarded-Host y X-Forwarded-Proto. Todas son variables de entorno: mantenlas fuera del código.
¿Qué base de datos uso?#
Por defecto es SQLite, en un archivo database.sqlite dentro de ~/.n8n. Sirve para empezar, pero credenciales, ejecuciones y workflows viven en un solo archivo atado al disco del servidor.
Para producción, usa PostgreSQL:
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=tu-host
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=tu-usuario
DB_POSTGRESDB_PASSWORD=tu-contraseñaSi el servidor de la base de datos exige TLS con certificado de cliente, activa SSL y apunta a los archivos del certificado. Cada variable acepta el sufijo _FILE, que lee el valor desde un archivo:
DB_POSTGRESDB_SSL_ENABLED=true
DB_POSTGRESDB_SSL_CA_FILE=/ruta/ca.crt
DB_POSTGRESDB_SSL_CERT_FILE=/ruta/certificado.pem
DB_POSTGRESDB_SSL_KEY_FILE=/ruta/clave.keyLa documentación de n8n lista las versiones de PostgreSQL admitidas: comprueba que la de tu base esté en ella. Incluso con PostgreSQL, la carpeta .n8n sigue guardando la clave de cifrado y los logs, así que también debe ser persistente. Mira cómo hospedar una base de datos y cómo hospedar una app Node.js.
¿Por qué fijar la N8N_ENCRYPTION_KEY?#
n8n cifra las credenciales de tus workflows (claves de API, contraseñas) con una clave. Si no defines una, genera una aleatoria en el primer arranque y la guarda en ~/.n8n. Si ese disco se recrea, la clave desaparece y las credenciales guardadas en la base quedan ilegibles. Define N8N_ENCRYPTION_KEY tú mismo y guarda una copia en un gestor de contraseñas. Nunca subas la clave a un repositorio.
¿Cómo compruebo que funciona?#
- Abre la URL pública: la pantalla de creación de cuenta (o de inicio de sesión) debe cargar por HTTPS.
- Crea un workflow con el nodo Webhook, actívalo y comprueba que la URL del editor usa tu dominio y no
localhost. - Llama a esa URL con
curly mira cómo aparece la ejecución en la lista. - Reinicia el servidor y confirma que workflows y credenciales siguen ahí. Si desaparecen, la carpeta
.n8nno es persistente.
¿Cuáles son los errores comunes?#
- El webhook muestra
localhosten el editor: faltaN8N_WEBHOOK_URL(oN8N_HOSTyN8N_PROTOCOL). - Credenciales inválidas tras reiniciar: la clave de cifrado cambió. Restaura la original en
N8N_ENCRYPTION_KEY. - Workflows programados a la hora equivocada: define
GENERIC_TIMEZONEyTZ. - Pérdida de datos al recrear el contenedor: no se montó el volumen de
/home/node/.n8n. - Uso comercial sin leer la licencia: n8n self-hosted usa la Sustainable Use License, que tiene límites. Revisa LICENSE.md antes de revenderlo o integrarlo en un producto.
Cómo hacerlo en Square Cloud#
n8n es una aplicación Node.js, y en Square Cloud corre como cualquier API o servicio HTTP: en un contenedor siempre encendido, sin modo de suspensión, así que los webhooks y las programaciones se disparan a cualquier hora.
- Agrega
n8ncomo dependencia en elpackage.json. No hay etapa de build: al iniciar, la plataforma ejecutanpm installcuando no existenode_modules. - Usa
N8N_PORT=$PORT npx n8n startcomo comando de inicio (START) y defineN8N_LISTEN_ADDRESS=0.0.0.0, porque la aplicación web debe escuchar en0.0.0.0, en el puerto de la variablePORT. - En las variables de entorno, pon
N8N_ENCRYPTION_KEY, las variables de la base,N8N_HOSTcon el subdominio HTTPS*.squareweb.appde la aplicación,N8N_PROTOCOL=httpsyN8N_WEBHOOK_URL. - Haz el deploy por ZIP, CLI o GitHub.
La RAM del plan es un pool compartido, con un mínimo de 512 MB por aplicación web. Vigila n8n en las métricas: si se queda sin memoria, la aplicación se detiene hasta que aumentes la RAM y la inicies de nuevo.
El disco de la aplicación persiste entre reinicios y deploys: apunta N8N_USER_FOLDER a una carpeta del proyecto y deja la carpeta .n8n fuera del ZIP, porque un commit sobrescribe los archivos que contiene. Para producción, el hosting de PostgreSQL empieza en el Standard (desde R$44,99 al mes), con snapshot automático diario de la base. La conexión exige TLS: sube con el proyecto el certificado que descargas en el panel y apunta a él las variables DB_POSTGRESDB_SSL_*_FILE.
El Standard también te da acceso al AI Gateway, una API compatible con OpenAI para el modelo cubic, en beta y sin costo extra durante la beta. En n8n, usa el nodo HTTP Request con POST https://api.squarecloud.app/v2/ai/chat/completions, la clave de API de la cuenta (scope ai:chat) en la cabecera Authorization y "model": "cubic" en el cuerpo. En ese plan son hasta 2,5M tokens y hasta 1.000 peticiones al día, una a la vez; los límites pueden cambiar cuando termine la beta.
IA
Aloja apps con IA en contenedores siempre encendidos
Preguntas frecuentes
¿Hospedar n8n es gratis?
Puedes descargar y ejecutar n8n self-hosted sin licencia de pago de n8n, bajo su Sustainable Use License, que permite uso interno de la empresa o no comercial y restringe ofrecer n8n a clientes externos. Igual pagas la máquina o el hosting donde corre. Lee la licencia antes de usarlo dentro de un producto comercial.
¿Necesito Docker para ejecutar n8n?
No. La documentación de n8n describe Docker y también npm (npm install n8n -g), que requiere una versión de Node.js dentro del rango que indica la documentación. La instalación por npm figura como obsoleta, así que prefiere Docker si puedes.
¿Qué base de datos usa n8n?
Por defecto, n8n usa SQLite, en un archivo dentro de la carpeta .n8n. Para producción, la documentación admite PostgreSQL con DB_TYPE=postgresdb y las variables DB_POSTGRESDB_*.
¿Qué pasa si pierdo la N8N_ENCRYPTION_KEY?
n8n usa esa clave para cifrar las credenciales guardadas. Sin la clave original no puede leer las credenciales ya almacenadas, así que guarda una copia fuera del servidor.
Más en IA
Ver los 13 artículos- ¿Cuánto cuesta crear y mantener un chatbot con IA?Mantener un chatbot con IA cuesta tokens del modelo, hosting, base de datos y, con RAG, contexto extra. Mira cómo hacer la cuenta por conversación.
- ¿Cuánto cuesta un sistema RAG? Embeddings, base de datos y LLMUn RAG tiene tres costos: embeddings, base de datos vectorial y LLM. Mira la cuenta para mil preguntas al día, con precios hipotéticos, y dónde crece la factura.
- Cómo crear un bot de Discord con IACrea un bot de Discord con IA en discord.js: comando /ask, clave de API en variable de entorno, memoria por canal, límites de Discord y cómo ponerlo en línea.
- Cómo alojar un chatbot con IAUn chatbot con IA es una API que recibe mensajes, llama a un modelo de lenguaje y devuelve la respuesta en streaming. Mira el código y cómo ponerlo en línea.