n8n es una herramienta de automatización de flujos de trabajo basada en nodos. Permite conectar diferentes aplicaciones, servicios y bases de datos para que se comuniquen entre sí sin necesidad de programar una aplicación compleja desde cero.
La forma más sencilla de instalar n8n en Clouding es crear un servidor a partir de nuestra imagen de Docker e instalar sobre este n8n con las instrucciones que te daremos a continuación.
Requisitos
- Un servidor cloud creado a partir de nuestra imagen de Docker.
Crea un fichero .env
Accede al servidor Docker recién creado por SSH con el usuario root y crea un directorio para guardar tu fichero de configuración de entorno para n8n y los correspondientes ficheros de Docker Compose:
# mkdir /opt/n8n-compose
# cd /opt/n8n-compose Dentro del directorio n8n-compose crea un fichero con el nombre .env para personalizar tu instalación de n8n. Esto es solo un ejemplo base, deberías adaptarlo a tus necesidades concretas:
# DOMAIN_NAME y SUBDOMAIN determinan desde dónde estará accesible n8n
# El dominio 'top level' desde el que estará accesible:
DOMAIN_NAME=ejemplo.com
# Subdominio desde el que estará accesible:
SUBDOMAIN=n8n
# Con los valores de arriba n8n estará accesible desde: https://n8n.ejemplo.com
# Opcional: zona horaria usada pro Cron y otros nodos de tareas programadas
# Si no se especifica nada la zona por defecto es New York
GENERIC_TIMEZONE=Europe/Berlin
# Dirección de email que se usará para la creación del certificado TLS/SSL
SSL_EMAIL=user@ejemplo.comCrea el directorio de ficheros locales
Dentro del directorio n8n-compose, crea un directorio con el nombre local-files para compartir ficheros entre la instancia de n8n y el sistema host (por ejemplo para uso del nodo Read/Write Files from Disk):
mkdir local-files
Crea el fichero para Docker Compose
Crea el fichero compose.yaml. Añade el siguiente contenido:
services:
traefik:
image: "traefik"
restart: always
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.entrypoints=web,websecure
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.middlewares.n8n.headers.SSLRedirect=true
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n.headers.STSPreload=true
- traefik.http.routers.n8n.middlewares=n8n@docker
environment:
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_RUNNERS_ENABLED=true
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- TZ=${GENERIC_TIMEZONE}
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
volumes:
n8n_data:
traefik_data:El fichero de Docker Compose anterior configura dos contenedores: uno para n8n y otro para ejecutar traefik, un proxy que se encarga del enrutado y certificados TLS/SSL.
También crea y monta dos Volúmenes Docker y monta el directorio local-files que creaste anteriormente:
| Nombre | Tipo | Punto de Montaje | Descripción |
| n8n-data | Volume | /home/node/.n8n | Donde n8n guarda su archivo de base de datos SQLite y la clave de cifrado. |
| traefik_data | Volume | /letsencrypt | Donde Traefik guarda los datos de los certificados TLS/SSL. |
| ./local-files | Bind | /files | Un directorio local compartido entre la instancia de n8n y el host (anfitrión). En n8n, utiliza la ruta /files para leer y escribir en este directorio. |
Ejecuta Docker Compose
Arranca n8n ejecutando:
# docker compose up -d
Para detener los contenedores teclea:
# docker compose stop
Conclusión
Ahora puedes acceder a tu instalación de n8n usando la combinación subdominio + dominio que definiste en el fichero de configuración .env. En la configuración de este artículo sería https://n8n.ejemplo.com.
n8n solo es accesible desde HTTPS, no desde HTTP.
Esperamos haberte ayudado con este tutorial 🙂. Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites, consúltanos!