n8n és una eina d'automatització de fluxos de treball de codi obert que permet connectar serveis, APIs i aplicacions sense gairebé escriure codi. Si ja tens un servidor Proxmox a casa, la manera més ordenada d'instal·lar-lo és crear una VM dedicada amb Debian, córrer n8n amb Docker Compose i publicar-lo amb HTTPS usant Nginx Proxy Manager. Veiem-ho pas a pas.

Arquitectura del sistema

La solució que muntem té tres capes. La VM Debian a Proxmox és el sistema base aïllat de la resta de serveis. Docker Compose orquestra dos contenidors: n8n (el motor d'automatització) i nginx-proxy-manager (el proxy invers que gestiona els certificats SSL). El domini o subdomini propi (ex: n8n.tudomini.cat) amb un certificat Let's Encrypt el fa accessible des de qualsevol lloc amb HTTPS.

💡 Nota: Per al certificat Let's Encrypt necessites un domini real apuntant a la IP pública del teu router, o bé usar-lo únicament en xarxa local amb un certificat autofirmat. L'article cobreix el cas del domini real.

Pas 1 — Crear la VM a Proxmox

Des de la interfície web de Proxmox, crea una VM nova amb aquests paràmetres mínims recomanats:

  • ISO: Debian 12 (Bookworm) netinstall o live — descarrega-la des de debian.org.
  • CPU: 2 cores.
  • RAM: 2 GB (4 GB si vols còrrer molts workflows en paral·lel).
  • Disc: 20 GB com a mínim (les dades de n8n creixen amb el temps).
  • Xarxa: model VirtIO, connectat al bridge vmbr0.

Arrenca la VM, instal·la Debian en mode mínim (sense entorn gràfic) i configura un usuari amb permisos sudo. Un cop dins del sistema via SSH, continua amb els passos següents.

Pas 2 — Actualitzar el sistema i instal·lar Docker

Comença actualitzant els paquets del sistema:

sudo apt update && sudo apt upgrade -y

Instal·la les dependències necessàries per afegir el repositori de Docker:

sudo apt install -y ca-certificates curl gnupg lsb-release

Afegeix la clau GPG oficial de Docker i el repositori:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg \
  | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Ara instal·la Docker Engine i Docker Compose:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Afegeix el teu usuari al grup docker per no haver d'usar sudo cada vegada (cal tancar sessió i tornar a entrar perquè faci efecte):

sudo usermod -aG docker $USER

Verifica que Docker funciona correctament:

docker --version
docker compose version

Pas 3 — Crear l'estructura de carpetes

Crea una carpeta arrel per al projecte i les subcarpetes de dades persistents:

mkdir -p ~/n8n-stack/{n8n_data,npm_data/data,npm_data/letsencrypt}
cd ~/n8n-stack

Pas 4 — Crear el fitxer docker-compose.yml

Crea el fitxer docker-compose.yml dins de ~/n8n-stack/. Aquest fitxer defineix dos serveis: n8n i nginx-proxy-manager, cadascun en la seva xarxa compartida:

nano docker-compose.yml

Enganxa aquest contingut (substitueix canvia@email.cat per la teva adreça i ajusta la zona horària si cal):

services:

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=n8n.tudomini.cat
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.tudomini.cat/
      - GENERIC_TIMEZONE=Europe/Madrid
      - TZ=Europe/Madrid
    volumes:
      - ./n8n_data:/home/node/.n8n
    networks:
      - proxy_net

  nginx-proxy-manager:
    image: jc21/nginx-proxy-manager:latest
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "81:81"
    volumes:
      - ./npm_data/data:/data
      - ./npm_data/letsencrypt:/etc/letsencrypt
    networks:
      - proxy_net

networks:
  proxy_net:
    driver: bridge
📌 Atenció: El port 5678 de n8n no s'exposa directament a l'exterior — tot el tràfic passa per Nginx Proxy Manager. Això és exactament el que volem per seguretat.

Pas 5 — Arrencar els contenidors

Des de la carpeta ~/n8n-stack/, llança els serveis:

docker compose up -d

Comprova que els dos contenidors estan en funcionament:

docker compose ps

Hauries de veure els dos serveis amb l'estat running. Si hi ha algun error, revisa els logs amb:

docker compose logs -f

Pas 6 — Configurar el router (port forwarding)

Per poder obtenir el certificat Let's Encrypt i accedir a n8n des d'Internet, has de redirigir els ports 80 i 443 del teu router cap a la IP local de la VM de Proxmox. Fes-ho des del panell d'administració del teu router (cada marca té la seva interfície, però el concepte és el mateix):

  • Port extern 80 → IP_VM:80 (necessari per al challenge HTTP-01 de Let's Encrypt).
  • Port extern 443 → IP_VM:443 (tràfic HTTPS final).

Assegura't també que el teu domini (ex: n8n.tudomini.cat) apunta via un registre A a la IP pública del teu router.

Pas 7 — Configurar Nginx Proxy Manager

Obre el navegador i accedeix a la interfície d'administració de Nginx Proxy Manager per la IP local de la VM, port 81:

http://IP_DE_LA_VM:81

Les credencials per defecte del primer accés són:

  • Email: admin@example.com
  • Contrasenya: changeme

Canvia-les immediatament quan et demani. Un cop dins, crea un Proxy Host nou anant a Hosts → Proxy Hosts → Add Proxy Host i omple els camps:

  • Domain Names: n8n.tudomini.cat
  • Scheme: http
  • Forward Hostname / IP: n8n (el nom del servei Docker)
  • Forward Port: 5678
  • Websockets Support: activat ✓ (n8n ho necessita)

Ves a la pestanya SSL del mateix formulari i selecciona:

  • SSL Certificate: "Request a new SSL Certificate"
  • Force SSL: activat ✓
  • HTTP/2 Support: activat ✓
  • Email Address for Let's Encrypt: la teva adreça de correu
  • Accepta els termes del servei i desa.

Nginx Proxy Manager sol·licitarà automàticament el certificat a Let's Encrypt. Si tot és correcte (DNS i ports oberts), en uns segons el certificat estarà actiu.

Pas 8 — Accedir a n8n per primera vegada

Obre el navegador i vés a https://n8n.tudomini.cat. Hauries de veure el formulari de creació del compte d'administrador de n8n. Omple'l i ja tens n8n funcionant amb HTTPS.

✅ Comprova: Al costat de la URL del navegador ha d'aparèixer el cadenat tancat, indicant que el certificat SSL és vàlid.

Pas 9 — Fer que arrenci sol amb el sistema

Docker ja arrenca els contenidors automàticament gràcies a restart: unless-stopped. Però cal assegurar-se que el servei Docker s'activa en arrencar la VM:

sudo systemctl enable docker
sudo systemctl enable containerd

Per verificar que tot arrenca bé, reinicia la VM i comprova l'estat dels contenidors:

sudo reboot
# Passats uns minuts, reconnecta per SSH:
docker compose -f ~/n8n-stack/docker-compose.yml ps

Manteniment i actualitzacions

Per actualitzar n8n o Nginx Proxy Manager a la versió més recent, atura els contenidors, baixa les noves imatges i torna'ls a arrencar:

cd ~/n8n-stack
docker compose pull
docker compose up -d

Les dades de n8n (workflows, credencials, historial) queden guardades a ./n8n_data i no es perden en les actualitzacions.

Resum dels ports

  • :80 — HTTP (redirigit a HTTPS automàticament per NPM)
  • :443 — HTTPS (tràfic xifrat cap a n8n)
  • :81 — Panell d'administració de Nginx Proxy Manager (només xarxa local)
  • :5678 — n8n intern (no exposat a Internet, accessible via Docker intern)

Més informació