Risponderemo a tutte le tue domande!

Applicazioni e Guide

Come installare N8N

Gli agenti di intelligenza artificiale nel 2025 rimangono uno degli approcci più promettenti per risolvere compiti complessi utilizzando modelli linguistici di grandi dimensioni. Questi agenti sono autonomi e in grado di selezionare da soli vari strumenti per svolgere i compiti assegnati. Questo approccio consente di ottenere risultati con un minore coinvolgimento umano e una qualità superiore. Inoltre, apre la possibilità di scoprire modi più originali ed efficaci di affrontare i problemi.

Anziché limitarsi a formulare un compito, si incarica la rete neurale di risolverlo autonomamente, in base alle risorse assegnatele. Tuttavia, perché questo schema funzioni, è necessario un meccanismo che colleghi le interfacce delle reti neurali con vari strumenti, che si tratti di una ricerca sul Web o di un database vettoriale per la memorizzazione dei risultati intermedi.

n8n è una piattaforma di automazione che supporta l'integrazione con varie reti neurali e servizi pubblici. Gli utenti possono progettare visivamente le modalità di elaborazione dei dati e i risultati finali da ottenere. A differenza delle classiche soluzioni no-code, n8n consente di includere codice arbitrario in qualsiasi fase del processo, il che è particolarmente utile quando le funzionalità integrate non sono sufficienti.

Il risultato è un sistema che unisce la semplicità del no-code alla flessibilità della programmazione tradizionale. Tuttavia, per comprenderlo appieno, è necessario dedicare un po' di tempo all'esplorazione e alla revisione di esempi di flussi di lavoro per una migliore comprensione. In questo articolo vi spiegheremo come implementare n8n sui server LeaderGPU.

Preparazione del server

Aggiornare il sistema

Aggiornare l'elenco dei pacchetti e aggiornare tutti i pacchetti installati:

sudo apt update && sudo apt -y upgrade

Installare automaticamente il driver NVIDIA® consigliato (proprietario) o utilizzare la nostra guida passo-passo Installa i driver NVIDIA® in Linux:

sudo ubuntu-drivers autoinstall

Ora riavviare il server:

sudo shutdown -r now

Installare Docker

È possibile utilizzare lo script di installazione ufficiale:

curl -sSL https://get.docker.com/ | sh

Aggiungiamo la chiave GPG e il repository di NVIDIA® container toolkit per l'integrazione di Docker:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

Aggiornare l'elenco dei pacchetti e installare NVIDIA® container toolkit:

sudo apt update && sudo apt -y install nvidia-container-toolkit

Riavviare Docker per applicare le modifiche e abilitare il toolkit installato:

sudo systemctl restart docker

Installare n8n

Per consentire al sistema di memorizzare i dati, è necessario creare un volume prima di lanciare il contenitore:

sudo docker volume create n8n_data

Avviamo ora un contenitore che aprirà la porta 5678 per le connessioni esterne e monterà il volume n8n_data creato nella directory /home/node/.n8n all'interno del contenitore:

sudo docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

La prima volta che si lancia l'applicazione, si potrebbe rimanere perplessi di fronte al seguente messaggio di errore:

TLS-error N8N

Non si tratta esattamente di un errore, ma piuttosto di un avvertimento su come configurare correttamente il sistema per l'accesso. Il problema è che, per impostazione predefinita, il sistema non dispone di un certificato TLS/HTTPS. Senza di esso, la connessione non sarà sicura. Quindi, avete tre opzioni:

  1. Connect your own certificate. È possibile farlo specificando i percorsi dei file dei certificati tramite variabili d'ambiente o configurando un server proxy inverso.
  2. Create an SSH tunnel and forward port 5678 a localhost sul computer da cui ci si connette. In questo modo, si otterrà immediatamente una connessione personale sicura. Tuttavia, nessun altro potrà accedere al server dall'esterno.
  3. Bypass the warning. Se si tratta di un server di prova non destinato alla produzione e non ci si preoccupa della sicurezza, si può disabilitare l'avviso impostando la variabile d'ambiente N8N_SECURE_COOKIE su FALSE. Questo è fortemente sconsigliato perché rende il server vulnerabile a potenziali attacchi. Tuttavia, potrebbe essere accettabile in scenari specifici.

Questo articolo analizzerà in dettaglio ogni opzione, in modo da poter scegliere quella giusta.

Connessione al server

Se non avete ancora un certificato SSL, vi consigliamo di ordinarne uno da LeaderSSL. Può essere utilizzato per qualsiasi sito web, negozio online o per verificare l'autenticità di un'e-mail.

Uso delle variabili d'ambiente

Il modo più semplice per configurare l'HTTPS è caricare il certificato sul server e specificarlo tramite le variabili d'ambiente di Docker. Si inizia creando una cartella per i file del certificato:

mkdir ~/n8n-certs

È possibile caricare questi file (tipicamente cert.crt e privkey.key) in questa directory utilizzando qualsiasi metodo. Per informazioni più dettagliate, vedere:

Ora lanciamo il contenitore con un comando completo:

sudo docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-v ~/n8n-certs:/certs \
-e N8N_PROTOCOL=https \
-e N8N_SSL_CERT="/certs/cert.crt" \
-e N8N_SSL_KEY="/certs/privkey.key" \
docker.n8n.io/n8nio/n8n

Ecco la ripartizione di ogni argomento:

  • sudo docker run -d lancia il contenitore Docker in modalità daemon (in background)
  • --name n8n assegna il nome al contenitore n8n
  • -p 5678:5678 inoltra la porta 5678 al contenitore
  • -v n8n_data:/home/node/.n8n crea e monta un volume chiamato n8n_data nella directory nascosta /home/node/.n8n all'interno del contenitore
  • -v ~/n8n-certs:/certs monta la directory dei certificati
  • -e N8N_PROTOCOL=https obbliga N8N a utilizzare il protocollo HTTPS
  • -e N8N_SSL_CERT="/certs/cert.crt" imposta il percorso del file del certificato
  • -e N8N_SSL_KEY="/certs/privkey.key" imposta il percorso della chiave del certificato
  • docker.n8n.io/n8nio/n8n sorgente dell'immagine del contenitore

Traefik

Una configurazione leggermente più complessa ma flessibile prevede l'utilizzo del server reverse proxy Traefik per proteggere la connessione a N8N. Il file di configurazione si basa sul metodo ufficiale specificato nella documentazione. Innanzitutto, installare lo strumento docker-compose:

sudo apt -y install docker-compose

Traefik e N8N verranno distribuiti insieme e devono trovarsi sulla stessa rete. Creare una rete chiamata web.

sudo docker network create web

Ora, creare un file docker-compose.yml per definire ed eseguire entrambi i contenitori:

nano docker-compose.yml
services:
  traefik:
    image: "traefik"
    container_name: "proxy"
    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
    networks:
      - web

  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: "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_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files
    networks:
      - web

volumes:
  n8n_data:
  traefik_data:

networks:
  web:
    name: web

Oltre al file docker-compose.yml, creeremo un altro file chiamato .env. Questo file conterrà variabili come il nome del dominio e l'indirizzo e-mail usati per richiedere un certificato SSL a Let's Encrypt. Se dovessimo cambiare qualcosa, come il nome del dominio, basterà aggiornarlo in questo file e poi ricreare il contenitore.

nano .env
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Amsterdam
SSL_EMAIL=user@example.com

Infine, distribuire entrambi i contenitori:

sudo docker-compose up -d
Ora, N8N è disponibile qui: https://n8n.example.com.

Gestore del proxy Nginx

A differenza di Traefik, che si configura tramite file, Nginx Proxy Manager offre un'interfaccia web di facile utilizzo. Tuttavia, non rileva i servizi in modo dinamico, è necessario aggiungerli manualmente. Tuttavia, funziona bene per servizi statici come N8N.

Creare un altro file docker-compose.yml in una cartella separata con il seguente contenuto:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: proxy
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - web

  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PORT=5678
      - WEBHOOK_URL=https://n8n.example.com/
      - N8N_PROTOCOL=http
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - web

volumes:
  n8n_data:

networks:
  web:
    external: true

Distribuire con:

sudo docker-compose up -d

Aprire quindi l'interfaccia web a: http://your_hostname_or_ip:81

  • Nome utente: admin@example.com
  • Password: changeme

Verrà richiesto di aggiornare le credenziali. Successivamente, aprite Hosts → Proxy Hosts → Add Proxy Host e inserite il vostro nome di dominio (ad esempio, n8n.example.com):

Add domain N8N

Compilare i campi necessari:

  • Impostare Destination/IP su n8n.
  • Impostare Port su 5678.
  • Nella scheda SSL, scegliere Request a new SSL certificate with Let’s Encrypt.
  • Inserite il vostro indirizzo e-mail e accettate i termini.
  • Fare clic su Websockets support.
  • Cliccare facoltativamente su Force SSL.

Dopo aver premuto il pulsante Save, il certificato verrà richiesto e installato:

Nginx Proxy Manager ready

Una volta fatto, aprendo il dominio si accederà all'interfaccia N8N.

Tunnel SSH

Se non si ha bisogno di accedere all'N8N dall'esterno, è possibile inoltrare la porta 5678 tramite SSH. In questo modo si cripta tutto il traffico e l'N8N sarà disponibile all'indirizzo http://localhost:5678/.

Nota: questa configurazione non funziona per le integrazioni con servizi esterni come i messenger che richiedono un accesso pubblico HTTPS.

Il modo più semplice per inoltrare la porta è il popolare client SSH PuTTY. Una volta installato, aprire SSH → Tunnels e impostare Source port - 5678 e Destination - localhost:5678. Quindi fare clic su Add.

PuTTY port forwarding

Tornare a Session, inserire l'IP del server e fare clic su Open. Una volta autenticati, il tunnel è attivo. Aprire http://localhost:5678 in un browser per accedere a N8N.

Nota: la connessione funziona solo quando la sessione SSH è attiva. La chiusura di PuTTY interromperà il tunnel.

Bypassare

Questo metodo non è consigliato per l'uso su reti pubbliche. Se si lancia il contenitore con la variabile d'ambiente N8N_SECURE_COOKIE=false, l'avviso scomparirà e si potrà accedere via HTTP:

sudo docker run -d --name n8n -p 5678:5678 -e N8N_SECURE_COOKIE=false -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

Warning: Questo espone il pannello di amministrazione di N8N tramite HTTP non criptato, rendendolo vulnerabile agli attacchi MITM (Man-In-The-Middle) e consentendo potenzialmente a un aggressore di prendere il controllo del server.

Vedi anche:



Aggiornato: 12.08.2025

Pubblicato: 23.06.2025