✨ OPEN TO WORKFull Stack Developer & Data SpecialistDisponible para nuevas oportunidadesPython • Next.js • AI/ML • Power BIContáctame aquí
✨ OPEN TO WORKFull Stack Developer & Data SpecialistDisponible para nuevas oportunidadesPython • Next.js • AI/ML • Power BIContáctame aquí
✨ OPEN TO WORKFull Stack Developer & Data SpecialistDisponible para nuevas oportunidadesPython • Next.js • AI/ML • Power BIContáctame aquí
✨ OPEN TO WORKFull Stack Developer & Data SpecialistDisponible para nuevas oportunidadesPython • Next.js • AI/ML • Power BIContáctame aquí
✨ OPEN TO WORKFull Stack Developer & Data SpecialistDisponible para nuevas oportunidadesPython • Next.js • AI/ML • Power BIContáctame aquí
✨ OPEN TO WORKFull Stack Developer & Data SpecialistDisponible para nuevas oportunidadesPython • Next.js • AI/ML • Power BIContáctame aquí
✨ OPEN TO WORKFull Stack Developer & Data SpecialistDisponible para nuevas oportunidadesPython • Next.js • AI/ML • Power BIContáctame aquí
✨ OPEN TO WORKFull Stack Developer & Data SpecialistDisponible para nuevas oportunidadesPython • Next.js • AI/ML • Power BIContáctame aquí

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

Juan Montoya
Juan Montoya
22 de octubre de 2025
Crea Tus Flujos de Automatización: Despliega Tu Propio Servidor de N8N en Heroku con Persistencia de Datos
Crea flujos de automatización ilimitados con tu propio servidor N8N. Guía completa para desplegar en Heroku con Supabase PostgreSQL y persistencia de datos. Solo $7/mes. ✓ Self-hosted ✓ Sin límites.

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

RequisitoDescripción
Cuenta HerokuGratuita o de pago en heroku.com
Cuenta SupabaseGratuita en supabase.com con proyecto y base de datos creada
Heroku CLIInstalado y configurado en tu sistema
DockerInstalado para construir y subir contenedores
GitPara clonar repositorios y gestionar versiones
ConocimientosBá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:

  1. Dirígete a supabase.com y accede con tu cuenta
  2. Haz clic en el botón "New project"
  3. Asigna un nombre descriptivo a tu proyecto (por ejemplo: n8n-production o mi-automatizacion)
  4. Establece una contraseña robusta para la base de datos (guárdala en un lugar seguro, la necesitarás más adelante)
  5. Selecciona la región geográfica más cercana a tu ubicación para minimizar la latencia

1.2 Activar Connection Pooling (Transaction Pooler)

⚠️ Aspecto Crítico: Conectividad IPv4 en Heroku

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:

  1. En tu proyecto de Supabase, ve a Database → Settings
  2. Busca la sección Connection Pooling
  3. Activa el Transaction Pooler (Shared Pooler) si no está activado
  4. Copia la Connection string del Transaction Pooler (incluye pooler.supabase.com y puerto 6543)
  5. Guarda también la contraseña de tu base de datos
Configuración de Transaction Pooler en Supabase

Activa el Transaction Pooler y copia la Connection String con puerto 6543

NO usar el puerto 5432

No uses la "Connection String" estándar que aparece en Database Settings con puerto 5432.

Ejemplo de lo que NO debes usar:
postgresql://postgres:[PASSWORD]@db.hmbzbjxghavlsnhhvmqt.supabase.com:5432/postgres
⚠️Esta conexión directa con puerto 5432 tiene problemas de conectividad IPv6 en Heroku. Debes usar el Transaction Pooler con puerto 6543.

La 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.

Configuración del stack container en Heroku

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

VariableEjemploDescripción
DATABASE_URLpostgresql://postgres.xyz:pass@aws-0-us-east-1.pooler.supabase.com:6543/postgresURL completa del Transaction Pooler (puerto 6543)
DB_TYPEpostgresdbTipo de base de datos que usa N8N
DB_POSTGRESDB_HOSTdb.hmbzbjxghavlsnhhvmqt.supabase.comHost directo de la base de datos (formato db.PROJECT_REF.supabase.com)
DB_POSTGRESDB_PORT6543Puerto del Transaction Pooler
DB_POSTGRESDB_DATABASEpostgresNombre de la base de datos (usualmente postgres)
DB_POSTGRESDB_USERpostgresUsuario estándar de PostgreSQL
DB_POSTGRESDB_PASSWORDtu_passwordContraseña de tu proyecto Supabase

3.3 Variables de conexión SSL y seguridad

VariableValorDescripción
DB_POSTGRESDB_SSLtrueHabilita conexiones SSL seguras
DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZEDfalsePermite SSL sin verificar certificado
DB_POSTGRESDB_CONNECTION_TIMEOUT30000Timeout de conexión en milisegundos (30 segundos)

3.4 Variables de configuración N8N

VariableEjemploDescripción
N8N_ENCRYPTION_KEYclave-secreta-aleatoriaClave para encriptar credenciales (genera una única y segura)
WEBHOOK_URLhttps://heroku-n8n.herokuapp.com/URL pública para recibir webhooks
GENERIC_TIMEZONEAmerica/BogotaZona horaria de tu región
🔐Seguridad: Cómo Generar N8N_ENCRYPTION_KEY Segura

⚠️ Nunca uses la clave de ejemplo en producción. Genera una clave única y segura usando uno de estos comandos:

WindowsEn PowerShell:
[guid]::NewGuid().ToString("N")
Linux/MacEn Terminal o Git Bash:
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
Ejemplo de salida válida:3ea72ecf9ec74866978b82b1561f394c

3.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
Variables de entorno configuradas en Heroku

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?

  1. FROM n8nio/n8n:latest → Partimos de la imagen oficial más reciente de N8N como base
  2. COPY entrypoint.sh /entrypoint.sh → Copiamos nuestro script personalizado dentro del contenedor
  3. RUN chmod +x /entrypoint.sh → Le otorgamos permisos de ejecución al script
  4. 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.sh para 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:

  1. 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.

  2. 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.

  3. Separa host y puerto: Extrae el host (ej: aws-0-us-east-1.pooler.supabase.com) y el puerto (6543) del valor HOSTPORT.

  4. Exporta variables individuales: Configura todas las variables de entorno específicas que N8N espera recibir, como DB_POSTGRESDB_HOST, DB_POSTGRESDB_PORT, etc.

  5. Inicia N8N: Finalmente, ejecuta el comando n8n para 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:

  1. ⬆️ Sube tu código a los servidores de Heroku
  2. 📋 Detecta el archivo heroku.yml y reconoce que debe usar Docker
  3. 🐳 Construye el contenedor siguiendo las instrucciones de tu Dockerfile
  4. 📦 Despliega la aplicación en su infraestructura
  5. 🚀 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.

✅ Señales de éxito en los logs
  • N8N is now running
  • Editor is now accessible via
  • • Sin errores ENETUNREACH o ECONNREFUSED
  • • 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.

Dashboard de N8N funcionando correctamente

¡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:

  1. Tu nombre y apellido (para personalizar la experiencia)
  2. Correo electrónico (úsalo para recuperar tu cuenta si olvidas la contraseña)
  3. 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:

  1. Haz clic en el botón "+ Add first step" o arrastra un nodo Webhook al canvas
  2. Configura el webhook para que escuche peticiones GET
  3. Añade un nodo Set para transformar datos
  4. Conecta los nodos arrastrando desde la salida del primero a la entrada del segundo
  5. Haz clic en "Save" para guardar tu workflow
  6. 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

ProblemaSolución
Error ENETUNREACHVerifica que estás usando el endpoint IPv4 de Supabase (empieza con db.)
Error ECONNREFUSEDRevisa que el Transaction Pooler esté activado en Supabase
Timeout de conexiónAumenta DB_POSTGRESDB_CONNECTION_TIMEOUT a 90000 o más
N8N no guarda cambiosVerifica que DATABASE_URL esté correctamente configurada
Error de SSLAsegúrate de que DB_POSTGRESDB_SSL=true
App no iniciaRevisa 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:

  1. Conectar servicios: Integra N8N con Google Sheets, Slack, Discord, APIs personalizadas, etc.
  2. Automatizar tareas: Crea workflows para notificaciones, procesamiento de datos, scraping web
  3. Configurar webhooks: Recibe eventos desde otras aplicaciones
  4. Programar ejecuciones: Usa cron para ejecutar workflows automáticamente
  5. 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ísticaSelf-Hosted (Heroku + Supabase)N8N Cloud Starter
Costo mensual$7/mes (Heroku Hobby) + $0 (Supabase Free) = $7/mes$20/mes
Ejecuciones de workflowsIlimitadas2,500 ejecuciones/mes
Workflows activosIlimitados20 workflows activos
Tiempo de ejecuciónSin límite (hasta recursos del dyno)Máximo 5 minutos por ejecución
Almacenamiento de datos500 MB (Supabase Free), escalable a 8 GB ($25/mes)Incluido en el plan
Configuración inicial30-45 minutos (siguiendo este tutorial)5 minutos (registro y listo)
MantenimientoManual (actualizaciones, monitoreo)Automático (gestionado por N8N)
Control de datosTotal (tus propios servidores)En servidores de N8N Cloud
Uptime garantizado99.5% (Heroku Hobby)99.9% SLA
SoporteComunidad + documentaciónEmail support
BackupsManual (o configurar con Supabase)Automáticos incluidos
EscalabilidadManual (upgrade de dynos y DB)Automática en el mismo plan

Análisis de Costos por Uso

💰 Self-Hosted
$7/mes inicial
  • 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
Costo escalado:

• Con Heroku Professional ($25) + Supabase Pro ($25) = $50/mes para uso empresarial intensivo

☁️ N8N Cloud Starter
$20/mes fijo
  • 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
Costo escalado:

• Plan Pro: $50/mes (10K ejecuciones, workflows ilimitados)
• Plan Enterprise: Precio personalizado

Calculadora de ROI: ¿Cuándo conviene cada opción?

📊 Análisis de punto de equilibrio
Escenario 1: Uso Ligero
• 5-10 workflows activos
• <1,000 ejecuciones/mes
• Workflows simples (<2 minutos)

Recomendación: N8N Cloud Starter — Más simple, sin mantenimiento

Escenario 2: Uso Moderado
• 15-20 workflows activos
• 2,000-3,000 ejecuciones/mes
• Mix de workflows simples y complejos

Recomendación: Self-Hosted — Mejor relación costo/beneficio

Escenario 3: Uso Intensivo
• >30 workflows activos
• >5,000 ejecuciones/mes
• Procesos largos y complejos (>5 minutos)
• Scraping, procesamiento de datos, integraciones empresariales

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

  1. Conecta tus primeros servicios (Google Sheets, Slack, Discord, APIs)
  2. Configura webhooks para recibir eventos en tiempo real
  3. Programa workflows con cron para automatizaciones periódicas
  4. Explora la comunidad N8N para encontrar plantillas y soluciones
  5. 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

❓ ¿Cuánto cuesta mantener N8N en Heroku?
Solo $7/mes con Heroku Hobby + Supabase Free. Puedes escalar a $50/mes con Professional si necesitas más recursos.
❓ ¿Es mejor que N8N Cloud?
Sí, si necesitas más de 2,500 ejecuciones/mes o workflows que duren más de 5 minutos. Self-hosted te da control total sin límites artificiales.
❓ ¿Por qué usar Transaction Pooler?
Heroku tiene problemas con conexiones IPv6 directas de Supabase. El Transaction Pooler (puerto 6543) resuelve errores ENETUNREACH.
❓ ¿Puedo migrar a otro proveedor después?
Sí, como tienes el control total puedes migrar a AWS, DigitalOcean, Railway o cualquier proveedor que soporte Docker y PostgreSQL.
❓ ¿Cómo actualizo N8N a nuevas versiones?
Simplemente haz git push después de cambiar la imagen en tu Dockerfile a la nueva versión (ej: n8nio/n8n:1.x.x).

Referencias y Recursos sobre N8N y Heroku

Documentación Oficial


🎉 ¡Tutorial Completado!

Ahora tienes tu propio servidor N8N self-hosted en Heroku con persistencia de datos en Supabase PostgreSQL

Costo
$7/mes
Workflows
Ilimitados
Ejecuciones
Sin límites

¿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

Built with Next.js, Tailwind and deploy on Vercel