Crea Tus Flujos de Automatización: Despliega Tu Propio Servidor de N8N en Heroku con Persistencia de Datos

Introducción: N8N Self-Hosted en Heroku
¿Te imaginas tener tu propia plataforma de automatización sin las limitaciones de las soluciones en la nube? N8N es una poderosa herramienta de código abierto que te permite crear flujos de trabajo automatizados conectando diferentes aplicaciones y servicios, todo esto sin escribir una sola línea de código. Piensa en ello como tener tu propio Zapier o Make.com, pero con la ventaja de mantener el control total sobre tu infraestructura y datos.
En esta guía práctica y completa para 2025, te mostraré paso a paso cómo desplegar tu propio servidor N8N en Heroku, utilizando Supabase como base de datos PostgreSQL para garantizar que todos tus workflows, credenciales y ejecuciones se almacenen de forma persistente y segura. Lo mejor de todo es que esta solución self-hosted es escalable, económica (desde $7/mes) y sorprendentemente fácil de mantener.
Lo que aprenderás en esta guía
- ✅ Configurar base de datos PostgreSQL en Supabase con Transaction Pooler
- ✅ Desplegar N8N usando Docker en Heroku con persistencia de datos
- ✅ Configurar variables de entorno y seguridad (SSL, encryption key)
- ✅ Implementar autenticación básica para proteger tu instalación
- ✅ Comparación detallada: Self-Hosted vs N8N Cloud Starter
- ✅ Solución de problemas comunes de conectividad IPv6
Tiempo estimado: 30-45 minutos | Costo mensual: $7 USD | Nivel: Intermedio
📋 Índice de Contenidos
¿Por qué Elegir la Combinación N8N + Heroku + Supabase?
Si estás buscando una solución de self-hosting profesional y accesible, esta combinación de N8N + Heroku + Supabase se ha consolidado como una de las mejores alternativas en 2025. Pero, ¿qué la hace tan especial?
- Heroku PaaS: Plataforma como servicio que simplifica el despliegue de contenedores Docker sin gestionar servidores
- Supabase PostgreSQL: Base de datos gestionada con plan gratuito (500MB) y Transaction Pooler para alta disponibilidad
- Persistencia total: Todos tus workflows, credenciales y ejecuciones se guardan de forma segura en PostgreSQL
- Escalabilidad: Fácil de escalar según tus necesidades sin cambiar infraestructura
- Económico: Solo $7/mes vs $20/mes de N8N Cloud con workflows y ejecuciones ilimitadas
Requisitos Previos para Desplegar N8N
| Requisito | Descripción |
|---|---|
| Cuenta Heroku | Gratuita o de pago en heroku.com |
| Cuenta Supabase | Gratuita en supabase.com con proyecto y base de datos creada |
| Heroku CLI | Instalado y configurado en tu sistema |
| Docker | Instalado para construir y subir contenedores |
| Git | Para clonar repositorios y gestionar versiones |
| Conocimientos | Básicos de terminal, variables de entorno y Docker |
Verificar instalación de herramientas
Antes de comenzar, verifica que tienes todas las herramientas instaladas:
heroku --version
docker --version
git --version
Luego inicia sesión en Heroku y Docker:
# Inicia sesión en Heroku
heroku login
# Autentica Docker con Heroku
heroku container:login
Paso 1: Configurar PostgreSQL en Supabase para N8N
El primer paso en nuestro camino es configurar la base de datos PostgreSQL en Supabase. Esta será el corazón de tu instalación N8N, almacenando de forma persistente todos los workflows, credenciales y datos de ejecución.
1.1 Crear el proyecto en Supabase
Comencemos creando tu espacio de trabajo en Supabase:
- Dirígete a supabase.com y accede con tu cuenta
- Haz clic en el botón "New project"
- Asigna un nombre descriptivo a tu proyecto (por ejemplo:
n8n-productionomi-automatizacion) - Establece una contraseña robusta para la base de datos (guárdala en un lugar seguro, la necesitarás más adelante)
- Selecciona la región geográfica más cercana a tu ubicación para minimizar la latencia
1.2 Activar Connection Pooling (Transaction Pooler)
Existe un detalle técnico importante que debes conocer: Heroku presenta limitaciones de conectividad con URLs IPv6 y conexiones directas de Supabase. Por esta razón, es absolutamente crucial usar el Transaction Pooler configurado en el puerto 6543. Esto evitará que te enfrentes a frustrantes errores ENETUNREACH que impedirían que tu aplicación se conecte a la base de datos.
Para configurar correctamente el Connection Pooling, sigue estos pasos con atención:
- En tu proyecto de Supabase, ve a Database → Settings
- Busca la sección Connection Pooling
- Activa el Transaction Pooler (Shared Pooler) si no está activado
- Copia la Connection string del Transaction Pooler (incluye
pooler.supabase.comy puerto6543) - Guarda también la contraseña de tu base de datos

Activa el Transaction Pooler y copia la Connection String con puerto 6543
No uses la "Connection String" estándar que aparece en Database Settings con puerto 5432.
postgresql://postgres:[PASSWORD]@db.hmbzbjxghavlsnhhvmqt.supabase.com:5432/postgresLa URL de conexión del Transaction Pooler tendrá este formato:
postgresql://postgres.hmbzbjxghavlsnhhvmqt:[YOUR-PASSWORD]@aws-0-us-east-1.pooler.supabase.com:6543/postgres
💡 Nota: Asegúrate de copiar la URL completa desde la sección "Connection Pooling" en Supabase, no desde "Connection String" que usa el puerto 5432 y el host directo
db.PROJECT_REF.supabase.com.
Paso 2: Crear Aplicación N8N en Heroku con Docker
Ahora que tenemos nuestra base de datos lista, es momento de preparar el hogar de tu servidor N8N en Heroku. Utilizaremos Heroku CLI para crear y configurar la aplicación directamente desde la línea de comandos:
# Crea tu aplicación (recuerda que el nombre debe ser único en toda la plataforma Heroku)
heroku create heroku-n8n
Este sencillo comando realiza varias acciones importantes:
- Crea una nueva aplicación en tu cuenta de Heroku
- Te asigna una URL pública única donde estará disponible tu servidor N8N
Al ejecutarlo, verás algo similar a:
https://heroku-n8n.herokuapp.com
💡 Consejo útil: Si el nombre que elegiste ya está en uso por otro usuario, Heroku generará automáticamente un nombre aleatorio para ti. No te preocupes, siempre puedes cambiarlo posteriormente desde el dashboard de Heroku.
Configurar el Stack Container para Docker
Este es un paso fundamental que muchos olvidan: debemos indicarle explícitamente a Heroku que nuestra aplicación utilizará contenedores Docker en lugar del sistema de buildpacks tradicional:
heroku stack:set container -a heroku-n8n
Con este comando, le estamos diciendo a Heroku: "Esta aplicación se desplegará usando el Docker container stack, no los buildpacks estándar". Este cambio es esencial para que todo funcione correctamente.

El stack debe estar configurado como "container" para desplegar con Docker
Paso 3: Configurar Variables de Entorno para N8N
Llegamos a uno de los pasos más importantes del tutorial: la configuración de las variables de entorno. Estas variables son, literalmente, el cerebro de tu instalación N8N. A través de ellas conectaremos tu aplicación con Supabase PostgreSQL y definiremos cómo se comportará el sistema completo.
3.1 Crear archivo .env local (referencia)
Antes de configurar nada en Heroku, te recomiendo crear un archivo .env en tu directorio local. Este archivo te servirá como referencia y documentación de tu configuración. No te preocupes, no lo subiremos a ningún repositorio público (de hecho, deberías agregarlo a tu .gitignore).
Crea el archivo con este contenido, reemplazando los valores de ejemplo con tus datos reales:
DB_TYPE=postgresdb
DATABASE_URL=postgresql://postgres.hmbzbjxghavlsnhhvmqt:tu_password@aws-0-us-east-1.pooler.supabase.com:6543/postgres
DB_POSTGRESDB_HOST=db.hmbzbjxghavlsnhhvmqt.supabase.com
DB_POSTGRESDB_PORT=6543
DB_POSTGRESDB_DATABASE=postgres
DB_POSTGRESDB_USER=postgres
DB_POSTGRESDB_PASSWORD=tu_password
DB_POSTGRESDB_SSL=true
DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED=false
DB_POSTGRESDB_CONNECTION_TIMEOUT=30000
N8N_ENCRYPTION_KEY=clave-secreta-aleatoria
WEBHOOK_URL=https://heroku-n8n.herokuapp.com/
GENERIC_TIMEZONE=America/Bogota
3.2 Variables de base de datos PostgreSQL explicadas
| Variable | Ejemplo | Descripción |
|---|---|---|
DATABASE_URL | postgresql://postgres.xyz:pass@aws-0-us-east-1.pooler.supabase.com:6543/postgres | URL completa del Transaction Pooler (puerto 6543) |
DB_TYPE | postgresdb | Tipo de base de datos que usa N8N |
DB_POSTGRESDB_HOST | db.hmbzbjxghavlsnhhvmqt.supabase.com | Host directo de la base de datos (formato db.PROJECT_REF.supabase.com) |
DB_POSTGRESDB_PORT | 6543 | Puerto del Transaction Pooler |
DB_POSTGRESDB_DATABASE | postgres | Nombre de la base de datos (usualmente postgres) |
DB_POSTGRESDB_USER | postgres | Usuario estándar de PostgreSQL |
DB_POSTGRESDB_PASSWORD | tu_password | Contraseña de tu proyecto Supabase |
3.3 Variables de conexión SSL y seguridad
| Variable | Valor | Descripción |
|---|---|---|
DB_POSTGRESDB_SSL | true | Habilita conexiones SSL seguras |
DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED | false | Permite SSL sin verificar certificado |
DB_POSTGRESDB_CONNECTION_TIMEOUT | 30000 | Timeout de conexión en milisegundos (30 segundos) |
3.4 Variables de configuración N8N
| Variable | Ejemplo | Descripción |
|---|---|---|
N8N_ENCRYPTION_KEY | clave-secreta-aleatoria | Clave para encriptar credenciales (genera una única y segura) |
WEBHOOK_URL | https://heroku-n8n.herokuapp.com/ | URL pública para recibir webhooks |
GENERIC_TIMEZONE | America/Bogota | Zona horaria de tu región |
⚠️ Nunca uses la clave de ejemplo en producción. Genera una clave única y segura usando uno de estos comandos:
[guid]::NewGuid().ToString("N")node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"3ea72ecf9ec74866978b82b1561f394c3.5 Subir variables a Heroku
Ahora viene el momento de trasladar toda esta configuración a Heroku. Te presento dos métodos para hacerlo; elige el que te resulte más cómodo:
Opción A: Usando el plugin heroku-config (método recomendado)
Si ya tienes tu archivo .env preparado localmente, esta es la forma más rápida y menos propensa a errores. Primero, instala el plugin oficial heroku-config:
heroku plugins:install heroku-config
Una vez instalado, sube todas las variables de tu archivo .env a Heroku con un solo comando:
heroku config:push -a heroku-n8n
Si todo sale bien, deberías ver el mensaje: Successfully wrote settings to Heroku!
Opción B: Configuración manual (método tradicional)
Si prefieres tener control total sobre cada variable o no quieres usar plugins, puedes configurarlas manualmente una por una. Este método es más largo, pero igualmente válido:
heroku config:set \
DB_TYPE=postgresdb \
DATABASE_URL=postgresql://postgres.hmbzbjxghavlsnhhvmqt:tu_password@aws-0-us-east-1.pooler.supabase.com:6543/postgres \
DB_POSTGRESDB_HOST=db.hmbzbjxghavlsnhhvmqt.supabase.com \
DB_POSTGRESDB_PORT=6543 \
DB_POSTGRESDB_DATABASE=postgres \
DB_POSTGRESDB_USER=postgres \
DB_POSTGRESDB_PASSWORD=tu_password \
DB_POSTGRESDB_SSL=true \
DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED=false \
DB_POSTGRESDB_CONNECTION_TIMEOUT=30000 \
N8N_ENCRYPTION_KEY=clave-secreta-aleatoria \
WEBHOOK_URL=https://heroku-n8n.herokuapp.com/ \
GENERIC_TIMEZONE=America/Bogota \
-a heroku-n8n

Todas las variables de entorno necesarias configuradas en el panel de Heroku
Paso 4: Crear Archivos Docker para N8N (Dockerfile + entrypoint.sh)
Ahora viene la parte donde preparamos los "planos de construcción" de tu servidor N8N. Vamos a crear tres archivos esenciales que Heroku utilizará para construir y ejecutar tu contenedor Docker: Dockerfile, entrypoint.sh y heroku.yml.
4.1 Crear el Dockerfile para N8N
El Dockerfile es como una receta que le dice a Docker cómo construir tu contenedor. Crea un archivo llamado Dockerfile (sin extensión) en la raíz de tu proyecto con el siguiente contenido:
FROM n8nio/n8n:latest
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
¿Qué hace cada línea de este Dockerfile?
- FROM n8nio/n8n:latest → Partimos de la imagen oficial más reciente de N8N como base
- COPY entrypoint.sh /entrypoint.sh → Copiamos nuestro script personalizado dentro del contenedor
- RUN chmod +x /entrypoint.sh → Le otorgamos permisos de ejecución al script
- ENTRYPOINT ["/entrypoint.sh"] → Definimos que este script sea el punto de entrada, es decir, lo primero que se ejecutará cuando el contenedor arranque
4.2 Crear el script entrypoint.sh
Este script es la pieza clave que hace que todo funcione correctamente. El entrypoint.sh se ejecuta antes de que N8N inicie, y se encarga de dos tareas críticas: parsear la DATABASE_URL y configurar todas las variables de entorno que N8N necesita para conectarse a PostgreSQL.
Crea un archivo llamado entrypoint.sh con el siguiente contenido:
#!/bin/sh
# Puerto de Heroku
if [ -z ${PORT+x} ]; then
echo "PORT variable not defined, leaving N8N to default port."
else
export N8N_PORT="$PORT";
echo "N8N will start on '$PORT'"
fi
# Función para parsear DATABASE_URL
parse_url() {
eval $(echo "$1" | sed -e "s#^\(\(.*\)://\)\?\(\([^:@]*\)\(:\(.*\)\)\?@\)\?\([^/?]*\)\(/\(.*\)\)\?#${PREFIX:-URL_}SCHEME='\2' ${PREFIX:-URL_}USER='\4' ${PREFIX:-URL_}PASSWORD='\6' ${PREFIX:-URL_}HOSTPORT='\7' ${PREFIX:-URL_}DATABASE='\9'#")
}
PREFIX="N8N_DB_" parse_url "$DATABASE_URL"
echo "$N8N_DB_SCHEME://$N8N_DB_USER:$N8N_DB_PASSWORD@$N8N_DB_HOSTPORT/$N8N_DB_DATABASE"
# Separar host y puerto
N8N_DB_HOST="$(echo $N8N_DB_HOSTPORT | sed -e 's,:.*,,g')"
N8N_DB_PORT="$(echo $N8N_DB_HOSTPORT | sed -e 's,^.*:,:,g' -e 's,.*:\([0-9]*\).*,\1,g' -e 's,[^0-9],,g')"
export DB_TYPE=postgresdb
export DB_POSTGRESDB_HOST=$N8N_DB_HOST
export DB_POSTGRESDB_PORT=$N8N_DB_PORT
export DB_POSTGRESDB_DATABASE=$N8N_DB_DATABASE
export DB_POSTGRESDB_USER=$N8N_DB_USER
export DB_POSTGRESDB_PASSWORD=$N8N_DB_PASSWORD
# Arranca N8N
n8n
💡 Nota importante: En Windows, los permisos de ejecución se configuran automáticamente al crear el archivo, no necesitas hacer nada adicional. En sistemas Linux o Mac, si creas el archivo localmente, es posible que debas ejecutar
chmod +x entrypoint.shpara darle permisos de ejecución.
4.3 Entendiendo el script: ¿Qué hace cada parte?
Puede parecer complejo a primera vista, pero el script realiza una serie de pasos lógicos y bien definidos:
-
Detecta el puerto dinámico: Heroku no usa puertos fijos; cada vez que arranca tu aplicación, asigna un puerto aleatorio a través de la variable
$PORT. El script detecta este valor y lo configura para N8N. -
Parsea la DATABASE_URL: Heroku proporciona la URL de conexión completa en un solo string. El script usa expresiones regulares avanzadas (sed) para separar este string en sus componentes: protocolo, usuario, contraseña, host, puerto y nombre de base de datos.
-
Separa host y puerto: Extrae el host (ej:
aws-0-us-east-1.pooler.supabase.com) y el puerto (6543) del valorHOSTPORT. -
Exporta variables individuales: Configura todas las variables de entorno específicas que N8N espera recibir, como
DB_POSTGRESDB_HOST,DB_POSTGRESDB_PORT, etc. -
Inicia N8N: Finalmente, ejecuta el comando
n8npara arrancar el servidor con toda la configuración correcta.
4.4 Crear heroku.yml
El último archivo que necesitamos es heroku.yml. Este archivo de configuración le indica a Heroku exactamente cómo debe construir tu aplicación. Créalo en la raíz de tu proyecto con este contenido:
build:
docker:
web: Dockerfile
Simple y directo: este archivo le dice a Heroku "Para construir el proceso web de esta aplicación, utiliza el Dockerfile que está en la raíz del proyecto".
Paso 5: Desplegar en Heroku
¡Llegó el momento de la verdad! Ya tienes el stack configurado como container y todos los archivos necesarios listos. Ahora viene la parte emocionante: desplegar tu servidor N8N a Heroku. El proceso es sorprendentemente simple gracias a Git.
5.1 Inicializar repositorio Git (si aún no lo has hecho)
Si tu directorio aún no es un repositorio Git, inicialízalo con:
git init
5.2 Conectar con tu aplicación Heroku
Vincula tu repositorio local con la aplicación que creaste en Heroku:
heroku git:remote -a heroku-n8n
Este comando agrega un "remote" llamado heroku a tu repositorio Git, apuntando a tu aplicación.
5.3 Preparar los archivos para el despliegue
Agrega todos los archivos al staging area de Git y crea un commit:
git add .
git commit -m "Configuración inicial de N8N con Supabase PostgreSQL"
5.4 ¡Despliega a Heroku!
Ahora sí, el comando mágico que pone todo en marcha:
git push heroku master
Si tu rama principal se llama main en lugar de master, usa:
git push heroku main
¿Qué sucede cuando ejecutas este comando?
Prepárate para ver una cascada de mensajes en tu terminal. Heroku está trabajando duro por ti:
- ⬆️ Sube tu código a los servidores de Heroku
- 📋 Detecta el archivo heroku.yml y reconoce que debe usar Docker
- 🐳 Construye el contenedor siguiendo las instrucciones de tu Dockerfile
- 📦 Despliega la aplicación en su infraestructura
- 🚀 Inicia N8N con todas tus configuraciones aplicadas
El proceso completo puede tomar entre 2 y 5 minutos, dependiendo de la velocidad de tu conexión y la carga de los servidores de Heroku.
5.5 Verificar que el despliegue fue exitoso
Una vez que el push termine, es fundamental verificar que todo arrancó correctamente. Monitorea los logs en tiempo real con:
heroku logs --tail -a heroku-n8n
Este comando te mostrará los logs en tiempo real. Mantén este terminal abierto mientras observas cómo N8N inicia.
¿Quieres abrir tu nueva instalación de N8N directamente en el navegador? Usa:
heroku open -a heroku-n8n
Este comando abrirá automáticamente tu aplicación en tu navegador predeterminado.
- •
N8N is now running - •
Editor is now accessible via - • Sin errores
ENETUNREACHoECONNREFUSED - • Conexión exitosa a PostgreSQL
- •
Successfully connected to database
Paso 6: Gestión de la Aplicación
¡Felicitaciones! Tu servidor N8N ya está en funcionamiento. Ahora te mostraré los comandos esenciales que necesitarás para gestionar tu aplicación en el día a día. Piensa en estos comandos como el panel de control de tu servidor.
Pausar la aplicación (ahorrar recursos)
Si necesitas detener temporalmente tu servidor N8N sin eliminarlo (por ejemplo, para ahorrar horas de dyno cuando no lo estés usando):
heroku ps:scale web=0 -a heroku-n8n
Este comando escala tu aplicación a cero dynos, efectivamente deteniéndola. Tu configuración y datos permanecen intactos.
Reactivar la aplicación
Cuando necesites volver a usar tu servidor N8N, simplemente reactívalo:
heroku ps:scale web=1 -a heroku-n8n
Esto vuelve a escalar a un dyno, reiniciando tu aplicación donde la dejaste.
Reiniciar (aplicar cambios de variables)
¿Cambiaste alguna variable de entorno y necesitas que N8N la reconozca? Un simple reinicio es suficiente:
heroku restart -a heroku-n8n
Este es el equivalente a apagar y encender tu servidor. Los cambios en las variables de entorno se aplicarán inmediatamente.
Redesplegar después de cambios en el código
Si modificaste alguno de los archivos clave como el Dockerfile o entrypoint.sh, necesitarás reconstruir y redesplegar el contenedor completo. Hay dos formas de hacerlo:
Opción 1: Usando Git (recomendado)
git add .
git commit -m "Actualización de configuración Docker"
git push heroku main
Opción 2: Usando Heroku Container Registry
heroku container:push web -a heroku-n8n
heroku container:release web -a heroku-n8n
Monitorear el estado de tu aplicación
Para ver un resumen rápido del estado actual de tu aplicación:
heroku ps -a heroku-n8n
Te mostrará información como el tipo de dyno que estás usando, cuánto tiempo lleva activo, y su estado (up, down, etc).
Consultar todas las variables de entorno
¿Necesitas recordar qué variables tienes configuradas o verificar sus valores?
heroku config -a heroku-n8n
Paso 7: Verificación y Primeros Pasos
Es hora de probar tu nueva instalación y asegurarte de que todo funciona a la perfección. Este es el momento más emocionante: ¡ver tu servidor N8N en acción!
7.1 Acceder a tu instalación de N8N
Abre tu navegador favorito y dirígete a la URL de tu aplicación:
https://heroku-n8n.herokuapp.com
Si configuraste autenticación básica (las variables N8N_BASIC_AUTH_*), aparecerá una ventana emergente solicitando tu usuario y contraseña. Introduce las credenciales que definiste en las variables de entorno.

¡Felicitaciones! Tu instalación de N8N está lista y funcionando
7.2 Configuración inicial: crear tu cuenta de propietario
La primera vez que accedas a tu instalación de N8N, el sistema te pedirá que crees una cuenta de propietario. Esta es tu cuenta principal de administrador. Completa los siguientes datos:
- Tu nombre y apellido (para personalizar la experiencia)
- Correo electrónico (úsalo para recuperar tu cuenta si olvidas la contraseña)
- Contraseña robusta (elige una que sea segura, con mayúsculas, números y símbolos)
Una vez creada la cuenta, tendrás acceso completo al editor de workflows de N8N.
7.3 Explora la interfaz de N8N
Tómate unos minutos para familiarizarte con el entorno:
- Panel izquierdo: Aquí encontrarás todos los nodos disponibles (más de 200 integraciones)
- Canvas central: El área de trabajo donde arrastras y conectas nodos para crear workflows
- Panel derecho: Configuración del nodo seleccionado
- Menú superior: Acceso a tus workflows guardados, credenciales y configuración
7.4 Crea tu primer workflow de prueba
Vamos a crear un workflow sencillo para verificar que todo funciona correctamente. Te sugiero este flujo básico:
- Haz clic en el botón "+ Add first step" o arrastra un nodo Webhook al canvas
- Configura el webhook para que escuche peticiones GET
- Añade un nodo Set para transformar datos
- Conecta los nodos arrastrando desde la salida del primero a la entrada del segundo
- Haz clic en "Save" para guardar tu workflow
- Activa el workflow con el toggle en la parte superior
7.5 Verificar la persistencia de datos (prueba crucial)
Este es el test definitivo para asegurarte de que la conexión con Supabase funciona correctamente:
# Paso 1: Crea y guarda un workflow en N8N (desde la interfaz web)
# Paso 2: Reinicia la aplicación desde la terminal
heroku restart -a heroku-n8n
# Paso 3: Espera aproximadamente 30 segundos para que el servidor vuelva a estar activo
# Paso 4: Recarga la página de N8N en tu navegador
¿Qué debes ver?
✅ Si la persistencia funciona correctamente: Tu workflow seguirá ahí exactamente como lo dejaste, con todas sus configuraciones intactas.
❌ Si hay un problema: El workflow habrá desaparecido, lo que indica que N8N no está guardando en la base de datos. En ese caso, revisa los logs con heroku logs --tail -a heroku-n8n para identificar errores de conexión a PostgreSQL.
Solución de Problemas Comunes
| Problema | Solución |
|---|---|
Error ENETUNREACH | Verifica que estás usando el endpoint IPv4 de Supabase (empieza con db.) |
Error ECONNREFUSED | Revisa que el Transaction Pooler esté activado en Supabase |
| Timeout de conexión | Aumenta DB_POSTGRESDB_CONNECTION_TIMEOUT a 90000 o más |
| N8N no guarda cambios | Verifica que DATABASE_URL esté correctamente configurada |
| Error de SSL | Asegúrate de que DB_POSTGRESDB_SSL=true |
| App no inicia | Revisa logs con heroku logs --tail para identificar el error |
Costos Mensuales de N8N Self-Hosted en Heroku + Supabase
Precios de Heroku (Dynos)
- Hobby: $7/mes por dyno (siempre activo, sin sleep, ideal para proyectos personales)
- Professional: Desde $25/mes (más recursos, métricas avanzadas, para producción)
- Performance: Desde $250/mes (alto rendimiento, aplicaciones críticas)
Precios de Supabase (PostgreSQL)
- Free tier: 500 MB de almacenamiento, 2 GB de transferencia (suficiente para empezar)
- Pro: $25/mes (8 GB almacenamiento, 50 GB transferencia, soporte prioritario)
💡 Recomendación: Comienza con Heroku Hobby ($7/mes) y Supabase Free. Esto te cuesta solo $7/mes y es más que suficiente para workflows personales o proyectos pequeños. Actualiza a planes superiores cuando tengas workflows en producción con alto tráfico.
Próximos Pasos: Qué Hacer con tu Instalación de N8N
Una vez que tengas N8N funcionando en Heroku, puedes comenzar a crear automatizaciones poderosas:
- Conectar servicios: Integra N8N con Google Sheets, Slack, Discord, APIs personalizadas, etc.
- Automatizar tareas: Crea workflows para notificaciones, procesamiento de datos, scraping web
- Configurar webhooks: Recibe eventos desde otras aplicaciones
- Programar ejecuciones: Usa cron para ejecutar workflows automáticamente
- Monitorear ejecuciones: Revisa logs y estadísticas de tus automatizaciones
Self-Hosted vs N8N Cloud: Comparación de Costos
Una pregunta común es: ¿Vale la pena el esfuerzo de self-hosting o debería usar N8N Cloud? Aquí está la comparación detallada:
Comparación de Planes
| Característica | Self-Hosted (Heroku + Supabase) | N8N Cloud Starter |
|---|---|---|
| Costo mensual | $7/mes (Heroku Hobby) + $0 (Supabase Free) = $7/mes | $20/mes |
| Ejecuciones de workflows | Ilimitadas | 2,500 ejecuciones/mes |
| Workflows activos | Ilimitados | 20 workflows activos |
| Tiempo de ejecución | Sin límite (hasta recursos del dyno) | Máximo 5 minutos por ejecución |
| Almacenamiento de datos | 500 MB (Supabase Free), escalable a 8 GB ($25/mes) | Incluido en el plan |
| Configuración inicial | 30-45 minutos (siguiendo este tutorial) | 5 minutos (registro y listo) |
| Mantenimiento | Manual (actualizaciones, monitoreo) | Automático (gestionado por N8N) |
| Control de datos | Total (tus propios servidores) | En servidores de N8N Cloud |
| Uptime garantizado | 99.5% (Heroku Hobby) | 99.9% SLA |
| Soporte | Comunidad + documentación | Email support |
| Backups | Manual (o configurar con Supabase) | Automáticos incluidos |
| Escalabilidad | Manual (upgrade de dynos y DB) | Automática en el mismo plan |
Análisis de Costos por Uso
- ✅ Mejor para:
- • Uso intensivo (>2,500 ejecuciones/mes)
- • Más de 20 workflows activos
- • Procesos largos (>5 minutos)
- • Datos sensibles que no quieres en la nube
- • Aprendizaje y experimentación
• Con Heroku Professional ($25) + Supabase Pro ($25) = $50/mes para uso empresarial intensivo
- ✅ Mejor para:
- • Equipos pequeños o individuos
- • Uso moderado (<2,500 ejecuciones/mes)
- • Workflows simples y rápidos
- • Sin tiempo para mantenimiento
- • Necesitas soporte oficial
• Plan Pro: $50/mes (10K ejecuciones, workflows ilimitados)
• Plan Enterprise: Precio personalizado
Calculadora de ROI: ¿Cuándo conviene cada opción?
Recomendación: N8N Cloud Starter — Más simple, sin mantenimiento
Recomendación: Self-Hosted — Mejor relación costo/beneficio
Recomendación: Self-Hosted definitivamente — Ahorros significativos ($13/mes vs $50+/mes)
Ventajas Adicionales del Self-Hosting
- ✓
Sin límites artificiales: No hay restricciones de ejecuciones, workflows activos o tiempo de ejecución
- ✓
Privacidad y seguridad: Tus datos nunca salen de tu infraestructura
- ✓
Personalización completa: Instala custom nodes, modifica configuraciones avanzadas
- ✓
Aprendizaje: Entiendes cómo funciona la herramienta a nivel técnico
- ✓
Portabilidad: Puedes migrar a otros proveedores (AWS, DigitalOcean, Railway) sin depender de N8N
Ventajas de N8N Cloud
- ✓
Cero configuración: Listo para usar en minutos
- ✓
Actualizaciones automáticas: Siempre tienes la última versión sin esfuerzo
- ✓
Soporte oficial: Email support del equipo de N8N
- ✓
Alta disponibilidad: 99.9% uptime garantizado con backups automáticos
- ✓
Escalabilidad gestionada: Crece sin preocuparte por la infraestructura
Tu Servidor N8N Self-Hosted Está Listo
Desplegar N8N en Heroku con Supabase te proporciona una plataforma de automatización self-hosted robusta, escalable y económica por solo $7/mes. La combinación de estas tecnologías elimina la complejidad de gestionar infraestructura mientras mantienes control total sobre tus datos y workflows.
Esta configuración es ideal tanto para:
- 🎯 Proyectos personales y experimentación con automatizaciones
- 💼 Startups y pequeñas empresas que necesitan workflows ilimitados
- 🚀 Entornos de producción pequeños y medianos con alto volumen
- 🔐 Casos que requieren privacidad de datos sensibles
Con la persistencia de datos garantizada por PostgreSQL en Supabase y la facilidad de despliegue de Heroku, puedes enfocarte en crear automatizaciones que agreguen valor a tu negocio o proyectos sin preocuparte por la infraestructura.
Próximos pasos recomendados
- Conecta tus primeros servicios (Google Sheets, Slack, Discord, APIs)
- Configura webhooks para recibir eventos en tiempo real
- Programa workflows con cron para automatizaciones periódicas
- Explora la comunidad N8N para encontrar plantillas y soluciones
- Monitorea tus ejecuciones y optimiza workflows según necesidad
¡Ahora es tu turno de crear workflows increíbles con N8N self-hosted! 🎉
Preguntas Frecuentes (FAQ) sobre N8N en Heroku
Referencias y Recursos sobre N8N y Heroku
Documentación Oficial
- Documentación oficial de N8N - Guía completa de N8N
- N8N en GitHub - Repositorio oficial y código fuente
- Heroku Container Registry & Runtime - Guía de Docker en Heroku
- Supabase Database Configuration - Documentación de PostgreSQL
- N8N Community Forum - Comunidad oficial de N8N
- Heroku Postgres Best Practices - Mejores prácticas de conexión
🎉 ¡Tutorial Completado!
Ahora tienes tu propio servidor N8N self-hosted en Heroku con persistencia de datos en Supabase PostgreSQL
¿Te sirvió este tutorial? ⭐ Compártelo en redes sociales
Palabras clave: n8n heroku, desplegar n8n, n8n supabase, n8n docker, n8n self hosted, automatización workflows, heroku postgresql, n8n tutorial español, n8n cloud alternativa, n8n gratis