Tutorial de Automatización N8N para Ubuntu – De Cero a Flujo
Palabras clave
| Término | Definición rápida |
|---|---|
| 🚀 N8N | Una plataforma de automatización de flujos de trabajo basada en nodos visuales para conectar varios servicios externos. |
| 🐳 Docker | Una herramienta de containerización que permite el despliegue y la gestión consistente e aislada de aplicaciones. |
| 🐘 PostgreSQL | Una base de datos relacional robusta que sirve como almacén de datos principal y persistente para N8N. |
| 🧩 Node | Un bloque funcional único dentro de N8N (por ejemplo, un disparador de datos o una acción API) que ejecuta una tarea específica. |
| 🔄 Workflow | Un proceso automatizado configurado construido vinculando múltiples nodos juntos para manejar secuencias de tareas. |
| 💾 Docker Volume | Un mecanismo de almacenamiento designado en Docker utilizado para guardar persistentemente datos del sistema fuera de los contenedores. |
| 🔐 Environment Variable | Valores de configuración seguros (mantenidos en un archivo .env) inyectados de forma segura en contenedores Docker. |
Por qué la automatización es importante

Los equipos modernos no “ejecutan una sola aplicación” — operan una cadena de herramientas SaaS, servicios internos, almacenes de datos y sistemas de chat/alertas. El costo de esa complejidad se manifiesta de formas predecibles:
- Transferencias manuales y trabajo repetitivo (copiar/pegar entre sistemas)
- Ciclos de respuesta lentos (aprobaciones, enrutamiento de tickets, notificaciones de incidentes)
- Resultados inconsistentes (error humano, pasos omitidos, actualizaciones parciales)
- Integraciones frágiles (scripts puntuales sin visibilidad ni responsabilidad)
La automatización es una de las formas de mayor impacto para reducir esa fricción. Incluso flujos de trabajo pequeños — sincronización de datos, validación de cargas, publicación de notificaciones, actualización de registros — pueden convertirse en ganancias significativas: ciclo de tiempo más rápido, menos errores y operaciones más consistentes. Es importante destacar que “automatización” no se trata solo de reducir esfuerzo; también se trata de hacer que los procesos sean observables y repetibles.
Este informe aborda la automatización como infraestructura de producción: implementarla limpiamente, controlar la configuración, mantener los datos persistentes y verificar el comportamiento con un flujo de trabajo de prueba determinista.
¿Qué es N8N (y por qué puede convertirse en tu mejor aliado)

N8N es una plataforma de automatización de flujos de trabajo que te permite conectar servicios usando un editor basado en nodos. Construyes flujos de trabajo a partir de “nodos” (disparadores, transformaciones de datos, llamadas API, operaciones de base de datos, notificaciones), luego los ejecutas manualmente, según un cronograma o a través de webhooks.
Lo que hace que n8n sea especialmente útil en un contexto de implementación Linux:
- Auto-hospedable: puedes ejecutarlo en tu propia infraestructura para tener control sobre los datos y la red.
- Integraciones extensibles: muchos nodos integrados, más nodos HTTP genéricos para cualquier cosa con una API.
- Operacionalmente amigable: funciona bien en contenedores, puede usar Postgres para persistencia, y soporta configuración impulsada por variables de entorno.
- Bueno para adopción incremental: comienza con flujos de trabajo simples, luego fortalece el acceso (proxy inverso + HTTPS) y prácticas operacionales a medida que crece el uso.
En esta evaluación, n8n se trata como un servicio que podrías ejecutar realmente: las opciones de implementación y la configuración se documentan con un sesgo hacia la claridad, reproducibilidad y “endurecimiento futuro” (sin sobre-ingenierizar la configuración inicial).
Aloja tu propia instancia de N8N
¿Listo para intentarlo? La configuración requiere algunos pasos técnicos, pero no te preocupes — sigue esta guía y tendrás tu primera instancia de N8N funcionando en poco tiempo.
Este tutorial utiliza Ubuntu 22.04, ejecutándose en un VPS proporcionado por AlexHost.
Configuración de Docker
Hay varias formas de configurar n8n. Para este tutorial, usamos Docker porque proporciona un enfoque claro y confiable para gestionar y configurar n8n.
Primero, asegúrate de que docker y docker compose estén instalados en tu sistema.
# Check for docker
docker -v
# Check for docker compose
docker compose
Si devuelve una versión, estás listo.
Si no lo tienes instalado, simplemente sigue esta página para obtener instrucciones: guía de instalación. Asegúrate de seleccionar el SO correcto que estés utilizando.
Estructura del proyecto
Organizar los archivos correctamente es esencial para la claridad y el mantenimiento a largo plazo. Por convención, los servicios de Docker generalmente se colocan en el directorio /opt. Dentro de él, se creó una carpeta docker_services para almacenar todos los servicios, incluido N8N.
# Create all the needed folders
sudo mkdir -p /opt/docker_services/n8n
# Navigate to n8n folder
cd /opt/docker_services/n8n
Agregando el archivo docker compose
Para iniciar nuestra instancia de n8n y su base de datos backend, usaremos un archivo compose.yaml. Estamos eligiendo PostgreSQL sobre el SQLite predeterminado ya que proporciona un almacén de datos mucho más robusto y listo para producción para la configuración y los registros de ejecución.
Crea el archivo usando un editor de texto como nano:
nano compose.yaml
Pega la siguiente configuración en el archivo:
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
env_file:
- .env
volumes:
- ./data:/home/node/.n8n
- ./files:/files
depends_on:
- postgres
postgres:
image: postgres:15
restart: always
env_file:
- .env
volumes:
- ./postgres-data:/var/lib/postgresql/data
Entendiendo la configuración:
| Componente | Descripción |
|---|---|
| Servicios | Ejecuta dos contenedores: n8n (la aplicación principal) y postgres:15. Se prefiere fuertemente usar Postgres sobre el SQLite predeterminado. n8n depende nativamente de que se inicie primero. |
| Política de reinicio | Usa restart: always para que los contenedores se reinicien automáticamente al arrancar el sistema o si se cuelgan. |
| Puertos | Expone el puerto 5678 para que puedas acceder a la interfaz web de n8n. |
| Entorno | Ambos servicios cargan la configuración desde un archivo .env compartido para manejar de forma segura variables como las credenciales de BD. |
| Volúmenes | Vincula directorios del host local a rutas de contenedor para mantener los datos persistentes: • ./data → configuraciones de n8n (/home/node/.n8n) • ./files → almacenamiento de archivos (/files) • ./postgres-data → Base de datos (/var/lib/postgresql/data) |
Antes de iniciar los contenedores, necesitas crear explícitamente los directorios necesarios para que estén listos para ser mapeados:
# Use your own path if different
cd /opt/docker_services/n8n
mkdir data files postgres-data
Propiedad del directorio y permisos
Por defecto, cuando Docker crea automáticamente directorios del host para tus volúmenes (como nuestras carpetas data y files), asigna la propiedad al usuario root. Sin embargo, por razones de seguridad, el contenedor de n8n intencionalmente abandona los privilegios y se ejecuta como un usuario no root (específicamente, UID 1000).
Si estas carpetas permanecen siendo propiedad de root, n8n no podrá guardar su configuración o archivos de base de datos, causando que el contenedor se cuelgue al iniciar con un error de ‘permiso denegado’. Para evitar este inconveniente, explícitamente otorgamos la propiedad de estos directorios al usuario correcto antes de iniciar el servicio.
# Set ownership of the volume directories to UID/GID 1000
sudo chown -R 1000:1000 data files
Agregando el archivo .env
Docker usa el archivo .env para pasar configuraciones del sistema y secretos a nuestros contenedores sin codificarlos en nuestro compose.yaml.
Crea el archivo en el mismo directorio:
nano .env
Pega la siguiente configuración (asegúrate de reemplazar example.com y la contraseña de la base de datos con tus propios valores seguros):
# n8n Settings
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Chisinau
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.example.com/
N8N_SECURE_COOKIE=false
NODE_ENV=production
# PostgreSQL
POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=changeme123
Entendiendo las variables de entorno:
| Variable | Descripción |
|---|---|
| Dominio y Host | Define DOMAIN_NAME, SUBDOMAIN, y N8N_HOST. Estos son esenciales para mapear la aplicación n8n a una URL específica (como n8n.example.com), permitiendo acceso externo vía DNS. |
| Zona horaria | GENERIC_TIMEZONE establece la zona horaria específicamente para el proceso de la aplicación Node.js para que la programación y las marcas de tiempo de los registros sean precisas para tu región. |
| Protocolos y Webhook | N8N_PROTOCOL y WEBHOOK_URL configuran cómo n8n interactúa con el mundo exterior. Esto es crucial si estás integrando servicios que requieren una URL de devolución de llamada. |
| Cookie segura | N8N_SECURE_COOKIE está establecido en false porque estamos ejecutando sin un proxy inverso HTTPS localmente por defecto. Si configuras SSL/HTTPS más tarde vía proxy externo, puedes eliminar esta línea para que por defecto sea true. |
| Entorno de nodo | NODE_ENV debe establecerse estrictamente en production. Esto optimiza el servidor Node.js subyacente para el rendimiento en lugar de la depuración, independientemente de las etapas de implementación reales. |
| Credenciales de base de datos | POSTGRES_DB, USER, y PASSWORD se usan en el inicio inicial para crear la base de datos PostgreSQL y autenticar conexiones posteriores. Siempre usa contraseñas personalizadas fuertes aquí. |
Guarda y cierra el archivo. Ahora tienes toda la configuración necesaria para ejecutar tu stack de Docker Compose.
Iniciando servicios de docker
Navega a tu directorio de proyecto e inicia todos los servicios en segundo plano.
# Use your own path if different
cd /opt/docker_services/n8n
docker compose up -d
Docker descarga las imágenes necesarias e inicia tus contenedores. Una vez en ejecución, n8n estará disponible en el puerto 5678 (predeterminado), o en tu dominio configurado si usas un proxy inverso.
Para confirmar que está funcionando correctamente, verifica si los contenedores n8n y postgres están listados y en ejecución.
docker ps
Trabajando con N8N
Una vez que los servicios se ejecutan correctamente, ¡finalmente es el momento emocionante de comenzar a explorar N8N!
Acceder a N8N
N8N se puede acceder a través de un navegador web. En esta configuración local, está disponible en la siguiente URL: http://localhost:5678.
Al acceder por primera vez, aparece una página de inicio de sesión con campos comunes para rellenar.

Configurar la clave de licencia
Inicialmente, N8N muestra una ventana que ofrece una clave de licencia gratuita que desbloquea características pagadas. Sí, lo has oído bien: ¡características pagadas de forma gratuita! Este es uno de los beneficios de ejecutar una instancia de N8N auto-alojada.

Una vez que hayas recibido la clave de licencia en tu correo electrónico, puedes navegar a Configuración->Uso y Plan para activarla.

Creando el primer flujo de trabajo
Los nuevos flujos de trabajo se pueden crear directamente desde la página principal. Ver la imagen a continuación.

Para el primer caso de uso de ejecución, se utilizarán dos nodos:
- Manual Trigger: inicia el flujo de trabajo manualmente.
- Set Node: define y trabaja con campos y sus valores.
El nodo Manual Trigger no requiere configuración, mientras que el nodo Set sí. En nuestro caso, el objetivo es generar un mensaje que indique ‘n8n works’ junto con la marca de tiempo del evento. El nodo Set se configura por lo tanto como se muestra en la imagen a continuación.

Una vez que los dos nodos están conectados y configurados, iniciamos el flujo de trabajo presionando el botón Execute workflow.


¡Felicitaciones 👏, tu primer flujo de trabajo de N8N se ha ejecutado exitosamente!
“`html
¿Qué sigue?
Esta configuración inicial es solo el comienzo. El verdadero poder de N8N se desbloquea cuando comienzas a conectar tus herramientas diarias para automatizar tareas repetitivas y reducir fricciones. Por ejemplo, puedes crear flujos de trabajo para sincronizar automáticamente nuevos clientes potenciales de tu sitio web en un CRM, enrutar alertas urgentes y errores críticos de servicio a un chat de equipo, o hacer una copia de seguridad periódica de datos de varias plataformas SaaS a tu base de datos. Las posibilidades para automatizar tus operaciones y simplificar tu carga de trabajo diaria son casi infinitas.
“`
Conclusión
Al completar esta guía, has implementado exitosamente una plataforma poderosa y autohospedada capaz de transformar cómo gestionas las operaciones diarias. ¡Gracias por seguir esta configuración! Mientras continúas explorando lo que N8N puede hacer, asegúrate de consultar nuestros otros tutoriales para descubrir aún más herramientas increíbles y útiles. Cuando estés listo para escalar o sumergirte en proyectos nuevos y emocionantes, recuerda que AlexHost proporciona toda la infraestructura robusta que necesitas para alojar tus servicios de manera confiable.
en todos los servicios de hosting