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:

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:
- Connect your own certificate. È possibile farlo specificando i percorsi dei file dei certificati tramite variabili d'ambiente o configurando un server proxy inverso.
- 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.
- 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):

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:

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.

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