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 visual y basada en nodos para conectar varios servicios externos. |
| 🐳 Docker | Una herramienta de contenedorización que permite el despliegue y gestión de aplicaciones de manera consistente y aislada. |
| 🐘 PostgreSQL | Una base de datos relacional robusta que sirve como el almacén de datos primario y persistente para N8N. |
| 🧩 Node | Un bloque funcional único dentro de N8N (por ejemplo, un disparador de datos o acción de API) que ejecuta una tarea específica. |
| 🔄 Workflow | Un proceso automatizado configurado construido al vincular múltiples nodos para manejar secuencias de tareas. |
| 💾 Docker Volume | Un mecanismo de almacenamiento designado en Docker utilizado para guardar datos del sistema de manera persistente fuera de los contenedores. |
| 🔐 Environment Variable | Valores de configuración seguros (almacenados en un archivo .env) inyectados de forma segura en los contenedores de Docker. |
Por qué la automatización es importante

Los equipos modernos no “ejecutan una 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 maneras predecibles:
- Transferencias manuales y trabajo repetido (copiar/pegar entre sistemas)
- Bucles de respuesta lentos (aprobaciones, enrutamiento de tickets, notificaciones de incidentes)
- Resultados inconsistentes (error humano, pasos perdidos, actualizaciones parciales)
- Integraciones frágiles (scripts únicos sin visibilidad ni propiedad)
La automatización es una de las formas de mayor apalancamiento para reducir esa fricción. Incluso los flujos de trabajo pequeños — sincronización de datos, validación de cargas, publicación de notificaciones, actualización de registros — pueden acumularse en victorias significativas: tiempo de ciclo más rápido, menos errores y operaciones más consistentes. Importante, “automatización” no solo se trata 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: despliegue limpio, control de 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 amigo)

N8N es una plataforma de automatización de flujos de trabajo que te permite conectar servicios utilizando un editor basado en nodos. Construyes flujos de trabajo a partir de “nodos” (disparadores, transformaciones de datos, llamadas a API, operaciones de base de datos, notificaciones), y luego los ejecutas manualmente, en un horario o a través de webhooks.
Lo que hace que n8n sea especialmente útil en un contexto de despliegue en Linux:
- Autoalojable: puedes ejecutarlo en tu propia infraestructura para tener control sobre los datos y la red.
- Integraciones extensibles: muchos nodos integrados, además de nodos HTTP genéricos para cualquier cosa con una API.
- Amigable para operaciones: funciona bien en contenedores, puede usar Postgres para persistencia y soporta configuración impulsada por el entorno.
- Bueno para adopción incremental: comienza con flujos de trabajo simples, luego refuerza el acceso (proxy inverso + HTTPS) y las prácticas operativas a medida que crece el uso.
En esta evaluación, n8n se trata como un servicio que podrías ejecutar: las elecciones de despliegue y configuración se documentan con un sesgo hacia la claridad, reproducibilidad y “refuerzo futuro” (sin sobreingeniería en la configuración inicial).
Autoalojar tu propia instancia de N8N
¿Listo para probar? La configuración requiere algunos pasos técnicos, pero no te preocupes: sigue esta guía y tendrás tu primera instancia de N8N en funcionamiento 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 eso devuelve una versión, estás listo.
Si no lo tienes instalado, solo sigue esta página para obtener instrucciones: guía de instalación. Asegúrate de seleccionar el sistema operativo 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 se colocan típicamente 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
Añadiendo el archivo docker compose
Para iniciar nuestra instancia de n8n y su base de datos backend, utilizaremos un archivo compose.yaml. Elegimos 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 utilizando 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 de él para iniciar primero. |
| Política de reinicio | Utiliza restart: always para que los contenedores se reinicien automáticamente al arrancar el sistema o si se bloquean. |
| 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 credenciales de DB. |
| Volúmenes | Vincula directorios locales del host 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 y permisos de directorios
Por defecto, cuando Docker crea automáticamente directorios de 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 reduce privilegios y se ejecuta como un usuario no root (específicamente, UID 1000).
Si estas carpetas permanecen bajo la propiedad de root, n8n no podrá guardar su configuración o archivos de base de datos, causando que el contenedor se bloquee al inicio con un error de ‘permiso denegado’. Para prevenir esta fricción, otorgamos explícitamente 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
Añadiendo el archivo .env
Docker utiliza el archivo .env para pasar configuraciones del sistema y secretos a nuestros contenedores sin codificarlos de forma rígida 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 el acceso externo a través de DNS. |
| Zona horaria | GENERIC_TIMEZONE establece la zona horaria específicamente para el proceso de 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 callback. |
| Cookie segura | N8N_SECURE_COOKIE se establece en false porque estamos ejecutando sin un proxy inverso HTTPS localmente por defecto. Si configuras SSL/HTTPS más tarde a través de un proxy externo, puedes eliminar esta línea para que se establezca en true por defecto. |
| Entorno de Node | NODE_ENV debe establecerse estrictamente en production. Esto optimiza el servidor Node.js subyacente para rendimiento en lugar de depuración, independientemente de las etapas de despliegue reales. |
| Credenciales de base de datos | POSTGRES_DB, USER y PASSWORD se utilizan al inicio inicial para crear la base de datos PostgreSQL y autenticar conexiones posteriores. Siempre utiliza contraseñas personalizadas fuertes aquí. |
Guarda y cierra el archivo. Ahora tienes toda la configuración necesaria para ejecutar tu pila de Docker Compose.
Iniciando servicios de docker
Navega a tu directorio de proyecto y levanta 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 y comienza a iniciar tus contenedores. Una vez en funcionamiento, 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 están funcionando correctamente, ¡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.
En el primer acceso, aparece una página de inicio de sesión con campos comunes para completar.

Configurar la clave de licencia
Inicialmente, N8N muestra una ventana que ofrece una clave de licencia gratuita que desbloquea funciones de pago. Sí, lo has oído bien: ¡funciones de pago gratis! Este es uno de los beneficios de ejecutar una instancia de N8N autoalojada.

Una vez que recibas 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
Se pueden crear nuevos flujos de trabajo directamente desde la página principal. Mira la imagen a continuación.

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

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


¡Felicidades 👏, tu primer flujo de trabajo de N8N se ha ejecutado con éxito!
¿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 la fricción. Por ejemplo, puedes crear flujos de trabajo para sincronizar automáticamente nuevos leads de tu sitio web en un CRM, enrutar alertas urgentes y errores críticos de servicio a un chat de equipo, o hacer copias de seguridad periódicas de datos de varias plataformas SaaS en 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 desplegado con éxito una plataforma poderosa y autoalojada capaz de transformar la forma en que gestionas las operaciones diarias. ¡Gracias por seguir esta configuración! A medida que continúas explorando lo que N8N puede hacer, asegúrate de revisar nuestros otros tutoriales para descubrir herramientas aún más increíbles y útiles. Cuando estés listo para escalar o adentrarte en nuevos y emocionantes proyectos, recuerda que AlexHost proporciona toda la infraestructura robusta que necesitas para alojar tus servicios de manera confiable.
