Configurare Ubuntu 24.04 + n8n per l'uso con SSL (certificato SSL di IONOS)
Per creare un PDF, utilizzare la funzione “Stampa” in fondo alla pagina.
Per VPS e Server Cloud migrato
In questo articolo, scoprirai come installare l'immagine Ubuntu 24.04 + n8n sul tuo server. n8n viene messo a disposizione in un container Docker come parte dell'installazione. L'immagine n8n fornita da IONOS non include un certificato SSL per l'indirizzo IP associato, pertanto inizialmente l'accesso è possibile solo tramite il protocollo HTTP non criptato. Per accedere a n8n tramite una connessione criptata, è necessaria una configurazione manuale. Di seguito ti spieghiamo come preparare la configurazione e come configurare n8n.
Riassunto dei passaggi necessari
Di seguito sono elencati brevemente i passaggi da seguire:
Installa l'immagine sul server
- Prepara la configurazione
- Stabilisci la connessione SSH al server
- Salva i file dei certificati SSL sull'host
- Crea il file fullchain
- Configura n8n per la connessione SSL
- Accedi all'interfaccia n8n
Attenzione
Se reinstalli un'immagine su un server esistente, tutti i dati presenti sul server verranno eliminati irrevocabilmente e sostituiti dai dati della nuova immagine installata. Questa operazione non può essere annullata. Assicurati di creare un backup del server prima di procedere con l'installazione dell'immagine. In caso contrario, rischi di perdere i dati.
Installare un'immagine sul server
Per installare l'immagine Ubuntu 24.04 + n8n, procedi come segue:
- Accedi al tuo account IONOS.
Nella barra del titolo, fai clic su Menu > Server & Cloud.
Opzionale: seleziona il contratto Server & Cloud desiderato.
- Fai clic sul server desiderato nell'area Infrastruttura > Server.
- Clicca su Azioni.
- Fai clic su Reinstalla immagine. Viene visualizzata l'area Reinstalla immagine.

- Fai clic sulla freccia rivolta verso il basso nel riquadro Ubuntu.
- Seleziona l'immagine Ubuntu 24.04 + n8n.
- Fai clic su Reinstalla immagine. L'immagine viene installata. Questo processo potrebbe richiedere alcuni minuti.
- Prendi nota dell'indirizzo IP del server. Questo ti servirà in seguito per collegare il dominio.
Nota bene
Dopo l'installazione, le porte 80, 443 e 5678 devono essere abilitate nel firewall. Per ulteriori informazioni al riguardo, consulta la successiva sezione di questo articolo “Preparare la configurazione”.
Dopo l'installazione, puoi accedere alla tua istanza n8n utilizzando l'indirizzo IP del server e il numero di porta predefinito di n8n: http://IP-INDIRIZZO_DEL_SERVER:5678
Preparare la configurazione
Per stabilire una connessione crittografata a n8n, hai bisogno di un dominio accessibile. Inoltre, è necessario un certificato SSL emesso per quel dominio.
Ordinare un dominio
Se non hai ancora ordinato un dominio per il tuo server, puoi farlo in qualsiasi momento. Trovi le istruzioni nel seguente articolo: Ordinare un dominio come cliente IONOS
Creare un sottodominio
Crea un sottodominio nel seguente formato: n8n.example.com
Sostituisci il segnaposto example.com con il dominio che hai scelto. Nel seguente articolo trovi le istruzioni per creare un sottodominio nel tuo account IONOS: Creare un sottodominio
Ordinare un certificato SSL
Configura un certificato SSL per il tuo sottodominio. Se hai già configurato un certificato SSL Wildcard per il dominio, puoi saltare questo passaggio. I certificati SSL Wildcard sono validi sia per il dominio principale che per il sottodominio.
Se ordini un certificato SSL iniziale, puoi utilizzarlo per il tuo sottodominio. Il seguente articolo spiega come configurare un certificato SSL: Configurare un certificato SSL gestito dall'utente (SSL Starter / SSL Starter Wildcard)
Scaricare i file del certificato SSL per l'installazione manuale
Le istruzioni su come scaricare i file del certificato SSL per l'installazione manuale sono disponibili nel seguente articolo: Scaricare i file necessari per l'installazione manuale di un certificato SSL
Collegare il dominio all'indirizzo IP statico del server
Per una guida su come collegare il tuo dominio all'indirizzo IP statico del server, consulta il seguente articolo: Modificare l'indirizzo IPv4/IPv6 di un dominio (record A/AAA)
Configurare il firewall
Assicurati che le seguenti porte siano abilitate nei criteri del firewall:
Porta 80
Porta 443
Porta 5678
Trovi le relative istruzioni nel seguente articolo: Modificare le regole firewall (VPS e Server Cloud migrato)
Stabilire una connessione SSH al server
Nel prossimo passaggio, stabilisci una connessione SSH con il tuo server. Per farlo, accedi come root. Trovi le istruzioni corrispondenti nei seguenti articoli:
Stabilire una connessione SSH al tuo server Linux su un computer con Microsoft Windows
Stabilire una connessione SSH al tuo server Linux su un computer Linux
Salvare i file dei certificati SSL sull'host
Per salvare i file del certificato SSL sull'host, procedi come segue:
I file del certificato si trovano già sul server
Crea una cartella nella directory /opt/:
root@ubuntu:~# mkdir -p /opt/certs
Copia i file nella cartella. Se i file dei certificati si trovano già sul server, utilizza il seguente comando modificandolo in base alle tue esigenze:
root@ubuntu:~# cp /path/to/Certificato_SSL_PER_DOMINIO.cer /opt/certs/
root@ubuntu:~# cp /path/to/CERTIFICATO_INTERMEDIO_1.cer /opt/certs/
root@ubuntu:~# cp /path/to/CERTIFICATO_INTERMEDIO_2.cer /opt/certs/
root@ubuntu:~# cp /path/to/Private_Key_Per_DOMINIO.key /opt/certs/
I file del certificato si trovano già su un computer con sistema operativo Microsoft Windows
Se i file del certificato si trovano su un computer con sistema operativo Microsoft Windows, procedi come segue:
- Digita il comando cmd nella barra di ricerca della barra delle applicazioni.
- Fai doppio clic su Command prompt .
Utilizza il comando scp per copiare i file da Windows al sistema Linux. Nell'esempio seguente, supponiamo che i file del certificato si trovino nella cartella C:\Certificati-SSL. Prima di inviare il comando, sostituisci:
username: con il tuo nome utente effettivo sul server (es. root).
remote-server-ip: con l'indirizzo IP o il nome host del tuo server.
CERTIFICATO_SSL_PER_DOMINIO.cer e Private_Key_Per_DOMINIO.key con i nomi effettivi dei file.
CERTIFICATO_INTERMEDIO_1.cer e CERTIFICATO_INTERMEDIO_2.cer con i nomi effettivi dei file.scp C:\Certificato-SSL\Certificato-SSL_Per_DOMINIO.cer username@remote-server-ip:/opt/certs/
scp C:\Certificato-SSL\CERTIFICATO_INTERMEDIO_1.cer username@remote-server-ip:/opt/certs/
scp C:\Certificato-SSL\CERTIFICATO_INTERMEDIO_2.cer nomeutente@remote-server-ip:/opt/certs/
scp C:\Certificato-SSL\Private_Key_Per_DOMINIO.key username@remote-server-ip:/opt/certs/
In alternativa, puoi trasferire i file in modo semplice e comodo usando il programma WinSCP. WinSCP è un client grafico SFTP e FTP open source per Windows. Puoi scaricare il programma dalla seguente pagina del provider: WinSCP 6.5 Download
Assegnare i diritti di lettura
Passa alla directory in cui si trovano i certificati SSL. Esempio:
root@ubuntu:~# cd /opt/certs
Per abilitare la lettura dei file, inserisci i seguenti comandi sul VPS:
sudo chmod 755 /path/to
sudo chmod 644 /path/to
Esempio
sudo chmod 755 /opt/certs
sudo chmod 644 /opt/certs/*
Creare un file fullchain
Per integrare i certificati intermedi, devi creare un unico file di certificato che contenga l'intera "catena di fiducia" (full chain). Per farlo, procedi come segue:
Passa alla directory /opt/certs:
root@ubuntu:~# cd /opt/certs
Crea un file "fullchain" con il seguente comando. Il comando cat concatena i file uno dopo l'altro nell'ordine corretto. Sostituisci il segnaposto Certificato_SSL_Per_DOMINIO.cer con il certificato SSL del tuo dominio e i segnaposto dei certificati intermedi. Assicurati che i nomi dei file siano corretti.
root@ubuntu:/opt/certs# cat Certificato_SSL_Per_DOMINIO.cer intermediate1.cer intermediate2.cer > n8n.fullchain.cer
Il file "fullchain" è stato creato.
Configurare n8n per una connessione SSL
Importante
Con questi passaggi disattivi l'istanza non protetta installata e installi una nuova istanza n8n protetta da un certificato SSL di IONOS. Se esegui questa procedura dopo aver lavorato per qualche tempo con l'istanza non protetta, ti consigliamo di esportare prima i flussi di lavoro e gli altri contenuti che hai creato per poterli importare nella nuova istanza. Per sapere come fare, consulta la documentazione di n8n: Exporting and importing workflows
Per creare una nuova directory denominata n8n-compose sul tuo server, immetti il seguente comando:
root@ubuntu:~# mkdir n8n-compose
Per continuare a lavorare nella directory appena creata, passa alla nuova directory:
root@ubuntu:~# cd n8n-compose
In questa directory, utilizza l'editor vi per creare un file con estensione .env. Questo file viene utilizzato per definire le variabili d'ambiente utilizzate nel file Docker Compose.
root@ubuntu:~/n8n-compose# vi .env
Nota bene
L'editor vi ha una modalità di inserimento e una modalità di comando. Puoi entrare nella modalità di inserimento premendo il tasto [i]. In questa modalità, i caratteri digitati vengono immediatamente inseriti nel testo. Per entrare nella modalità di comando, premi [ESC]. Quando utilizzi la modalità di comando, l'input da tastiera viene interpretato come un comando. Per uscire da vi e salvare il file, digita il comando :wq, poi premi Invio.
Inserisci nel file .env le informazioni riportate di seguito e sostituisci il segnaposto example.com e quello relativo al fuso orario. Queste variabili verranno riprese in un passaggio successivo nel file compose.yaml e servono a definire le impostazioni del dominio e il fuso orario standard desiderato.
# DOMAIN_NAME and SUBDOMAIN together determine where n8n will be reachable from
# The top level domain to serve from
DOMAIN_NAME=example.com
# The subdomain to serve from
SUBDOMAIN=n8n
# The above example serves n8n at: https://n8n.example.com
# Optional timezone to set which gets used by Cron and other scheduling nodes
GENERIC_TIMEZONE=Europe/Berlin- Premi il tasto [ESC].
Per uscire da vi e salvare il file, digita il seguente comando e premi il tasto Invio:
:wq
Utilizza il seguente comando per creare il file traefik.yaml:
root@ubuntu:~/n8n-compose# vi traefik.yaml
Inserisci le seguenti informazioni, facendo attenzione ai rientri (indentazioni):
# Configurazione statica di Traefik (traefik.yaml)
api:
insecure: true # Autorizza la dashboard di Traefik (opzionale)
providers:
docker:
exposedByDefault: false # Vengono considerati solo i container con 'traefik.enable=true"
file:
directory: /etc/traefik/dynamic # Percorso *nel container*
watch: true # Controlla le modifiche
entryPoints:
web:
address: ":80"
# Reindirizzamento automatico da HTTP a HTTPS
http:
middlewares:
- redirect-to-https@file
websecure:
indirizzo: ":443"
http:
tls: {} # Attiva TLS globalmente per questo entrypoint- Premi il tasto [ESC].
Per uscire da vi e salvare il file, immetti il comando seguente e premi il tasto Invio:
:wq
Crea una nuova directory denominata dynamic:
root@ubuntu:~/n8n-compose# mkdir dynamic
Crea un file di certificato dinamico:
root@ubuntu:~/n8n-compose# vi dynamic/certificates.yaml
Inserisci le seguenti informazioni e sostituisci il segnaposto Private_Key_Per_DOMINIO.key. Presta attenzione alle indentazioni:
# Configurazione dinamica: certificati
tls:
certificates:
# Percorso *interno del container* alla catena
- certFile: /opt/certs/n8n.fullchain.cer
keyFile: /opt/certs/Private_Key_Per_DOMINIO.key
# Configurazione dinamica: reindirizzamento globale HTTP-to-HTTPS
http:
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
permanent: true- Verifica i percorsi nelle righe certFile e keyFile e modificali se necessario.
- Premi il tasto [ESC].
Per uscire da vi e salvare il file, digita il seguente comando e premi il tasto Invio:
:wq
Crea una directory con il nome local-files. Questa verrà usata come bind-mount per consentire l'accesso ai file dal container. Per farlo, digita il seguente comando:
root@ubuntu:~/n8n-compose# mkdir local-files
Per creare il file Docker Compose richiesto, digita il seguente comando:
root@ubuntu:~/n8n-compose# vi compose.yaml
Aggiungi le informazioni seguenti e assicurati che le voci nella sezione # Definizione del middleware del Security-Header-Middleware (nome: n8n-secure-headers) siano su una sola riga.
services:
traefik:
image: "traefik:v2.11" # Versione fissa per la stabilità
restart: always
command:
- "--configFile=/etc/traefik/traefik.yaml"
porte:
- "80:80"
- "443:443"
- "127.0.0.1:8080:8080"
volumi:
- traefik_data:/data # Memoria interna per Traefik (es. ACME info, se utilizzate)
- /var/run/docker.sock:/var/run/docker.sock:ro
# Montare i certificati (come prima)
- /opt/certs:/opt/certs:ro
# Montare il nuovo file di configurazione statica
- ./traefik.yaml:/etc/traefik/traefik.yaml:ro
# Montare la nuova cartella di configurazione dinamica
- ./dynamic:/etc/traefik/dynamic:ro
n8n:
immagine: docker.n8n.io/n8nio/n8n
riavvio: sempre
porte:
- "127.0.0.1:5678:5678"
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
# Il router risponde solo a 'websecure' (HTTPS)
- traefik.http.routers.n8n.entrypoints=websecure
# Indica al router di usare TLS
- traefik.http.routers.n8n.tls=true
# Definizione del Security-Header-Middleware (nome: n8n-secure-headers)
- traefik.http.middlewares.n8n-secure-headers.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n-secure-headers.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n-secure-headers.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n-secure-headers.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n-secure-headers.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n-secure-headers.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n-secure-headers.headers.STSPreload=true
# Assegnazione del middleware al router
- traefik.http.routers.n8n.middlewares=n8n-secure-headers@docker
environment:
# Queste variabili d'ambiente usano il file .env
- 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}
volumi:
- n8n_data:/home/node/.n8n
- ./local-files:/files
volumi:
n8n_data:
traefik_data:
- Premi il tasto [ESC].
Per uscire da vi e salvare il file, immetti il comando seguente e premi il tasto Invio:
:wq
Per scoprire quale processo utilizza la porta 5678, digita il seguente comando:
root@ubuntu:~/n8n-compose# sudo lsof -i :5678
Per terminare un processo, adatta il seguente comando e inseriscilo:
root@ubuntu:~/n8n-compose# sudo kill INSERIRE_QUI_PID
Dopo l'adeguamento, digita il comando seguente per arrestare i vecchi container:
root@ubuntu:~/n8n-compose# docker compose down
Per avviare i container definiti in compose.yaml come demoni in background, inserisci il comando seguente. Questo comando avvia e configura le istanze di Traefik e n8n.
root@ubuntu:~/n8n-compose# docker compose up -d
Per verificare che i container siano in esecuzione, digita il seguente comando:
root@ubuntu:~/n8n-compose# docker ps
Assicurati che i 2 container seguenti siano in esecuzione e che il loro stato sia "UP". Per farlo, digita i seguenti comandi.
root@ubuntu:~/n8n-compose# n8n-compose-traefik-1
root@ubuntu:~/n8n-compose# n8n-compose-n8n-1
Aiuto in caso di problemi
Se uno dei cotainer non ha lo stato "Up" (ad esempio "Restarting" o "Exited"), hai identificato l'errore. In questo caso, controlla le voci di registro di Traefik. Per farlo, digita il seguente comando:
root@ubuntu:~/n8n-compose# docker logs n8n-compose-traefik-1
- Cerca quindi i messaggi di errore, come ad esempio:
certificate not found
unable to read
permission denied (questo indicherebbe un problema di chmod)
router not found for domain - Verifica le impostazioni del firewall nel Cloud Panel e assicurati che il traffico in entrata sia autorizzato per le porte 80 (TCP) e 443 (TCP).
- Verifica l'accessibilità del sottodominio.
- Controlla l'indentazione dei file .yaml.
Accesso all'interfaccia n8n
Una volta avviati correttamente i servizi Docker (container), l'accesso a n8n sarà gestito dal proxy Traefik. Traefik assicura la crittografia SSL e inoltra le richieste alla tua istanza n8n. L'accesso avviene ora esclusivamente tramite il dominio che hai configurato in precedenza nel file .env.
Nota bene
L'accesso diretto tramite http://SERVER-IP:5678 non è più possibile. La configurazione in compose.yaml (alla voce porte: - "127.0.0.1:5678:5678") assicura che n8n sia accessibile solo "internamente" (per Traefik), ma non pubblicamente tramite l'IP del server.
- Apri il browser.
- Immetti l'URL completo e sicuro, composto dalle variabili SUBDOMAIN e DOMAIN_NAME del file .env. Ad esempio:
https://n8n.example.com - Al primo accesso apparirà la finestra Set up owner account. Inserisci l'indirizzo e-mail desiderato nel campo Email address.
- Inserisci il nome e il cognome desiderati nei campi First Name e Last Name.
- Inserisci una password nel campo Password.
- Fai clic su Next. Si apre la finestra Customize n8n to you.

- Rispondi alle domande della finestra Customize n8n to you e fai clic su Getstarted . A questo punto puoi iniziare a utilizzare n8n.

Contenuto
- Riassunto dei passaggi necessari
- Installare un'immagine sul server
- Preparare la configurazione
- Stabilire una connessione SSH al server
- Salvare i file dei certificati SSL sull'host
- Creare un file fullchain
- Configurare n8n per una connessione SSL
- Aiuto in caso di problemi
- Accesso all'interfaccia n8n
- Torna su