En este artículo vamos a ver como instalar N8N en un VPS. N8N es una herramienta con IA pensada para realizar todo tipo de automatizaciones, que se está convirtiendo en el sustituto natural de aplicaciones como Zapier, Maker o IFTTT.
N8N se puede usar como «software as a service», pero al ser código libre también podemos instalarlo en nuestro propio servidor. Lo cual es algo más complejo de poner en marcha, pero nos aseguramos un total control sobre la herramienta, además de mayor control sobre nuestros datos.
En estos momentos estoy viendo opciones de automatización para poder reducir el tiempo que dedico a aspectos mas repetitivos de mi trabajo, así que, viendo que N8N se está convirtiendo en un estándar para automatizaciones, pues me he puesto manos a la obra.
Antes de seguir, este artículo es algo más técnico que otros que he escrito. Hace falta un mínimo de manejo con servidores Linux para hacer una instalación de N8N en un VPS. Si no tienes este conocimiento, te recomiendo contratar un servicio preinstalado. O también puedes contactar conmigo para que te ayude 😉
Contratando un VPS
Lo primero es contratar un VPS. ¿Esto que es? Pues son las siglas de Virtual Private Server. En esencia, es un servidor solo para nosotros, pero en vez de ser un servidor físico, lo cual tendría un coste mucho más alto, pues es un servidor virtual. A nivel técnico, son varios servidores virtuales instalados dentro de un mismo servidor físico.
También podríamos instalar un servidor privado completo, pero el presupuesto será mucho mayor. Como yo quiero un N8N para uso personal y para hacer pruebas, con un VPS ya voy sobrado.
En concreto, me decanté por un VPS Linux S+ de IONOS. Puedes contratarlo aquí (este enlace no es de afiliados, no me llevo nada por recomendarles). Hay más opciones, pero la de IONOS me pareció suficiente y más económica que otras.
Una vez contratado y con el VPS configurado, necesitaremos los datos de acceso por SSH al servidor para ir instalando todo. Sigo a continuación.
Instalación de Docker
Una vez que tenemos el VPS funcionando, vamos a instalar N8N. Lo haremos a través de Docker. Docker es un sistema de contenedores, que a día de hoy es el sistema más utilizado para instalación de herramientas, pues nos evita muchos problemas de configuración, al darnos un entorno preconfigurado y aislado.
Pues nos ponemos manos a la obra. Lo primero, entrar al VPS a través de SSH:
ssh root@IP_NUESTRO_SERVIDORAntes de instalar Docker, vamos a actualizar el sistema. Si está recién instalado ya debería estar actualizado, pero siempre es buena práctica comprobar que está todo al día antes de añadir algo nuevo.
Estamos usando Alma Linux, cuyo gestor de paquetes es DNF. Si tenemos otra distribución de Linux con otro gestor de paquetes, como apt-get, las instrucciones deberían ser análogas.
Actualizamos:
dnf update -yY ahora añadimos el repositorio de Docker y lo instalamos con las opciones extra que vamos a necesitar. En concreto, añadimos el módulo de Compose, que nos permitirá configurarlo de forma mas sencilla.
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginY una vez todo instalado, arrancamos el servicio
systemctl enable --now docker
Si todo ha ido bien, un docker –version nos debería confirmar que está todo correcto.
Pues con docker instalado, ya podemos pasar a instalar N8N
Instalación de N8N
Primero tendremos que crear una serie de directorios, que es donde se instalará N8N y sus datos. Esto es rápido:
mkdir -p /opt/n8n && cd /opt/n8nEn este directorio es donde tenemos que crear el archivo de configuración de Docker, que se usará para hacer toda la instalación. Creamos el archivo docker-compose.yml con el siguiente contenido:
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=${DOMAIN:-n8n.tudominio.com}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${DOMAIN:-n8n.tudominio.com}/
- GENERIC_TIMEZONE=Europe/Madrid
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:Este fichero le dice a Docker que cree un volumen n8n_data para almacenar los datos, y un servicio n8n que usará la última versión del mismo, y el volumen de datos que le acabamos de indicar. Además, configuraremos la URL que usaremos para acceder a la herramienta.
Importante, cambiad n8n.tudominio.com por vuestro el dominio de vuestra web
Una vez hecho esto, le decimos a Docker que lo instale todo:
docker compose up -dCon esto, ya deberíamos poder acceder a N8N a través de n8n.tudominio.com
Al acceder, se nos mostrará la pantalla de configuración, que básicamente es introducir el usuario y contraseña que usaremos para acceder a N8N.
Aunque pueden ocurrir un par de cosas que nos impidan acceder aunque todo esté bien configurado. Lo mas habitual, podemos tener un problema de conexión o de seguridad. Veamos.
Configurando el Firewall
Una de las cosas que puede ocurrir es que el Firewall del sistema esté bloqueando las conexiones al servidor. Así que tenemos que abrir los puertos correspondientes. En Alma Linux lo hacemos así:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadEsto abrirá los puertos necesarios para acceder a N8N, y recargará el firewall para que se apliquen los cambios.
Puede ocurrir que no hayamos tenido este problema, pero porqué no tenemos firewall. Esto puede ser un problema de seguridad a medio plazo. Así que, si este es nuestro caso (lo será si estáis usando el servidor VPS de Ionos), lo ideal sería instalar y configurar el firewall para estar seguros.
Lo hacemos así:
dnf install -y firewalld
systemctl enable --now firewalld
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadCon estos comandos instalamos el firewall y lo configuramos. Muy importante, daos cuenta que ademas de http y https habilitamos también el puerto ssh. Este último es importantísimo habilitarlo, pues de no hacerlo, nos quedaremos sin acceso al servidor.
Si lo hemos hecho todo bien, ya deberíamos acceder con nuestro navegador al VPS. Aunque podemos tener otro problema, y es que nos de un error con el certificado SSL y el navegador nos impida acceder por motivos seguridad.
Esto podemos solucionarlo instalando un certificado SSL autofirmado usando Caddy. Veamos como.
Configurando SSL en el VPS
Caddy funciona también a partir de archivos configuración, que deberemos crear el mismo directorio donde tenemos instalado docker y n8n (/opt/n8n)
Creamos el fichero caddyfile
n8n.tudominio.com {
tls tu@email.com
reverse_proxy n8n:5678
}Como antes, tenemos que cambiar tudominio.com por el dominio donde tenemos instalado el N8N y tu@email pues eso, por nuestro email.
Ahora tenemos que añadir el servicio caddy al fichero de configuración de docker. Primero, detenemos el servidor:
docker compose downY ahora modificamos el fichero docker-compose.yml
services:
caddy:
image: caddy:latest
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
n8n:
image: docker.n8n.io/n8nio/n8n:latest
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.tudominio.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.tudominio.com/
- GENERIC_TIMEZONE=Europe/Madrid
volumes:
- n8n_data:/home/node/.n8n
volumes:
caddy_data:
caddy_config:
n8n_data:Hemos añadido el servicio caddy y los volúmenes caddy_data y caddy_config. También podemos sustituir el fichero por completo. Si lo hacemos, no os olvidéis de cambiar lo de «tudominio.com»
¡Y ya está! Con esto debería estar ya todo funcionando. Docker instalado, N8N instalado a través de Docker, puertos del firewall abiertos y certificado SSL autorfirmado configurado.
Y con esto, ya podemos empezar a automatizar:
Y hasta aquí todo. En otro artículo os hablaré de como realizar automatizaciones usando N8N. Por otra parte, si necesitas ayuda para instalar N8N en un VPS, contacta conmigo y hablamos.
