Automatiza tu día a día con n8n y Docker
En nuestro día a día, estamos constantemente repitiendo tareas que podrían automatizarse: enviar emails, recopilar datos, procesar información de APIs… Ahí es donde entra n8n, una herramienta de automatización de flujos de trabajo que nos permite conectar aplicaciones y servicios de forma visual y flexible, sin necesidad de programar todo desde cero.
Logo de n8n
¿Qué es n8n y para qué nos puede servir?
n8n es un orquestador de automatizaciones de código abierto. Con él puedes crear “workflows” que conectan servicios entre sí: desde Slack, Gmail, Google Sheets, hasta APIs propias. Cada paso del flujo puede transformarse, filtrarse o activarse en base a condiciones.
Además, n8n se adapta perfectamente a los nuevos retos de la automatización, incluyendo la integración con herramientas de inteligencia artificial (quizás eso lo veamos más adelante) Por ejemplo, podemos combinar con modelos de IA como Ollama, para analizar textos, generar resúmenes, clasificar información o incluso crear contenido automatizado. Esto abre un abanico enorme de posibilidades para equipos de marketing, soporte o desarrollo.
Desplegando n8n con Docker
Para simplificar su despliegue, podemos usar Docker y Docker Compose. Esto nos permite tenerlo corriendo en cualquier servidor de manera consistente y fácil de mantener.
Es importante saber que, quizás si despliegas en una RaspberryPi o un servidor u otro dispositivo, tendrás que cambiar la «versión», si fuese necesario, o la imagen a utilizar.
En los ejemplos os he puesto la más habitual, pero, en mi caso, como tengo un cacharro bastante antiguo, he tenido que utilizar la imagen: crazymax/n8n:latest , si usamos esta imagen, el volumen se tiene que cambiar por: «– ./n8n-data:/data/.n8n«
Aquí tienes un ejemplo de docker-compose.yml
:
version: '3.8' services: n8n: image: n8nio/n8n:latest container_name: n8n restart: unless-stopped ports: - "5678:5678" environment: - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=admin - N8N_BASIC_AUTH_PASSWORD=contraseña - N8N_HOST=localhost - N8N_PORT=5678 - GENERIC_TIMEZONE=Europe/Madrid - NODE_ENV=production volumes: - ./n8n-data:/home/node/.n8n
Ahora simplemente, ejecutamos:
docker-compose up -d
De esta manera ya tendremos n8n disponible en http://localhost:5678 con una autenticación básica.
Pero ojo, de esta manera, si no especificamos una conexión o un motor de base datos,, usará para la aplicación un sqlite, por lo que ahora veremos una opción más robusta.
Desplegar n8n con PostgreSQL
Si es para nuestro personal con el ejemplo de antes ya tendríamos más que suficiente, pero, si queremos algo más robusto, que podamos utilizar con retención de datos, registros, etcétera, lo ideal es utilizar como base de datos PostgreSQL
Además de esta manera tendremos:
- Cuando necesitamos persistencia robusta: los workflows, ejecuciones e historiales se guardan en una base de datos relacional en vez de ficheros locales.
- Si planeamos usarlo en producción, para equipos o integraciones críticas.
- Cuando queremos escalar n8n en múltiples contenedores/nodos, ya que todos los nodos deben acceder a la misma base de datos para compartir estados.
Aquí os dejo un ejemplo:
version: '3.8' services: n8n: image: n8nio/n8n:latest restart: unless-stopped ports: - "5678:5678" environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=n8n - DB_POSTGRESDB_PASSWORD=n8ncontraseña - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=admin - N8N_BASIC_AUTH_PASSWORD=contraseña - N8N_HOST=localhost - N8N_PORT=5678 - GENERIC_TIMEZONE=Europe/Madrid - NODE_ENV=production volumes: - ./n8n-data:/home/node/.n8n depends_on: - postgres postgres: image: postgres:14 restart: unless-stopped environment: - POSTGRES_USER=n8n - POSTGRES_PASSWORD=n8ncontraseña - POSTGRES_DB=n8n volumes: - ./postgres-data:/var/lib/postgresql/data
También, si ya tenemos un servidor PostgreSQL donde guardar los datos, la parte del contenedor postgres no nos haría falta.
Vista de n8n, recién instalado, un lienzo en blanco, sin duda
Algunos ejemplo de uso
Tal y como he comentado al principio, nos puede servir para un montón de cosas, como:
- Automatización de emails: Recoger datos de un formulario web y enviar un email con los resultados automáticamente.
- Integración con IA: Usar un trigger de n8n para enviar textos a Ollama y recibir un resumen o análisis, que luego se envía a Slack o se almacena en una hoja de cálculo.
- Procesamiento de datos: Cada vez que se actualiza un archivo en Google Drive, n8n puede leerlo, filtrarlo y enviar alertas si cumple ciertas condiciones.
n8n nos ofrece una interfaz visual que hace que montar estos flujos sea tan sencillo como arrastrar y soltar nodos. Y lo mejor: podemos escalarlo y combinarlo con cualquier servicio que tenga API.
Por ejemplo, podemos crear un «workflow» que utiliza una API, por ejemplo esta de Chuck Norris: https://api.chucknorris.io/, que nos genere un chiste diario y nos lo mande por correo.
Muestra del Workflow que he creado que hace que Chuck Norris me mande chistes 🙂
Y sí, me llegan XD
El chiste del día… en inglés .
¿Lo has probado alguna vez? ¿Quieres saber como he creado el envío de chistes de temática Chuck Norris? Deja un comentario! 🙂
Para saber más: n8n.io
Comentarios Recientes