n8n self-hosted conforme alla DSGVO 2026: guida passo-passo con Hetzner
Gestisci n8n in modo conforme alla DSGVO su server tedeschi: configura un Hetzner Cloud CX22 in 30 minuti, con Docker Compose, TLS automatico tramite Caddy, backup giornalieri sulla Hetzner Storage Box e monitoraggio continuo, a partire da 5 EUR al mese, senza dipendere da cloud statunitensi.
Il self-hosting di n8n significa una cosa: gestisci la piattaforma open source di automazione dei workflow n8n su un tuo server, sotto il tuo pieno controllo, in un data center UE, senza che i dati dei workflow o le credenziali lascino mai un server di terze parti.
Perché ospitare n8n in proprio? DSGVO, costi e controllo dei dati
Per le imprese tedesche che fanno transitare dati personali attraverso le automazioni — contatti dei clienti, fatture, dati HR — la scelta dell'hosting non è una questione puramente tecnica. È una questione di compliance. n8n Cloud e le piattaforme SaaS concorrenti come Zapier o Make.com archiviano i dati di esecuzione dei workflow su server al di fuori della Germania, il che richiede un contratto di responsabile del trattamento ai sensi dell'art. 28 della DSGVO in presenza di dati sensibili e, in alcuni casi, può rivelarsi problematico.
Il self-hosting risolve completamente il problema: tutti i dati dei workflow, le credenziali e i log di esecuzione restano sul tuo server, nel data center tedesco di Hetzner Cloud, certificato ISO 27001 e conforme alla DSGVO secondo il diritto tedesco. Il Compendio BSI IT-Grundschutz, modulo OPS.1.1.7 (automazione dei processi operativi) raccomanda esplicitamente di gestire i processi automatizzati che trattano dati personali o rilevanti per la sicurezza sotto pieno controllo organizzativo, introducendo concetti di autorizzazione separati.
Il secondo vantaggio è di natura economica: la n8n Community Edition è priva di canoni di licenza (licenza MIT). Paghi esclusivamente il server Hetzner, a partire da 5 EUR al mese per un Hetzner CX22. Con esso puoi gestire fino a 100 workflow attivi con centinaia di esecuzioni giornaliere. A titolo di confronto, Zapier costa tra 99 e 299 USD al mese per un volume di esecuzioni equivalente.
Il controllo totale dei dati è il terzo aspetto: decidi tu per quanto tempo conservare i dati di esecuzione, quali collaboratori possono accedere alle credenziali e come strutturare backup e piani di emergenza. Ai sensi dell'art. 32 della DSGVO (sicurezza del trattamento) queste misure tecniche e organizzative sono comunque obbligatorie: il self-hosting ne rende l'attuazione più semplice e più facilmente dimostrabile.
Costi di infrastruttura per un setup n8n pronto alla produzione (Hetzner CX22)
Quelle: Listino prezzi Hetzner Cloud 2025, 2025Da server vuoto a istanza n8n operativa con TLS
Quelle: Dato empirico Wito AI (n=12 progetti self-hosted), 2025con il self-hosting, rispetto al 61 % di un uso del cloud non regolamentato
Quelle: Guida Bitkom all'uso del cloud conforme alla DSGVO 2024, 2024con il self-hosting, nessun trattamento dei dati da parte di terzi (art. 28 DSGVO)
Quelle: Art. 28 DSGVO — responsabile del trattamento, 2024Requisiti hardware: quale server Hetzner basta?
Per la maggior parte degli ambienti delle PMI, con un massimo di 100 workflow attivi, un Hetzner CX22 (2 vCPU, 4 GB di RAM, 40 GB di SSD) è del tutto sufficiente. Questo tipo di server costa 5 EUR al mese e gestisce senza difficoltà diverse migliaia di esecuzioni di workflow al giorno, senza degrado delle prestazioni.
I requisiti minimi per n8n con backend PostgreSQL e coda Redis in modalità queue sono: 2 vCPU, 4 GB di RAM, 40 GB di SSD. Con 50-100 esecuzioni di workflow simultanee conviene passare a un Hetzner CX32 (4 vCPU, 8 GB di RAM, 80 GB di SSD, circa 10 EUR/mese). Un'istanza Redis per la modalità queue occupa circa 50-100 MB di RAM, PostgreSQL di norma 300-500 MB.
Raccomandazione sulla localizzazione del server: nbg1 (Norimberga) oppure fsn1 (Falkenstein) — entrambi i data center si trovano in Germania, sono certificati ISO 27001 e sono soggetti esclusivamente al diritto tedesco ed europeo. In fase di provisioning, evita le località statunitensi come i data center Hetzner di Ashburn (us-east), anche se sembrano più economiche: ricadono sotto il diritto statunitense e il Cloud Act.
- Hetzner CX22 (2 vCPU / 4 GB / 40 GB): 5 EUR/mese — fino a 100 workflow, circa 5.000 esecuzioni/giorno
- Hetzner CX32 (4 vCPU / 8 GB / 80 GB): 10 EUR/mese — fino a 300 workflow, circa 50.000 esecuzioni/giorno
- Hetzner CCX23 (4 vCPU dedicate / 16 GB): 22 EUR/mese — per setup ad alto volume e critici per la produzione
Setup di n8n self-hosted in 6 passi: dal provisioning al monitoraggio
Passo 1: provisioning del server Hetzner
Apri la console Hetzner Cloud (console.hetzner.cloud) e crea un nuovo progetto. Scegli il tipo di server CX22, l'immagine "Ubuntu 24.04 LTS" e la località "nbg1" (Norimberga, Germania). Carica la tua chiave SSH. Crea le regole del firewall: porta 22 (SSH, solo dal tuo IP), porte 80 e 443 (HTTP/HTTPS, pubbliche). Un Floating IP è opzionale per un indirizzo fisso. Durata: 5 minuti.
Passo 2: installazione di Docker + Docker Compose
Connettiti al server via SSH. Installa il Docker Engine tramite lo script di installazione ufficiale di pkg.docker.com (curl -fsSL https://get.docker.com | sh). Il plugin Docker Compose è incluso da Docker 23 (docker compose al posto di docker-compose). Aggiungi l'utente al gruppo docker (usermod -aG docker $USER). Applica gli aggiornamenti di sistema (apt update && apt upgrade). Abilita il servizio Docker (systemctl enable docker). Durata: 10 minuti.
Passo 3: avvio dei container n8n + PostgreSQL
Usa come modello il docker-compose.yml della documentazione ufficiale di n8n (docs.n8n.io/hosting/installation/server-setups/docker-compose/). Servizi: n8n (versione più recente), postgres:16-alpine, redis:7-alpine. Esternalizza le variabili d'ambiente in un file .env: N8N_ENCRYPTION_KEY (stringa casuale da 32 byte), DB_TYPE=postgresdb, DB_POSTGRESDB_*, QUEUE_BULL_REDIS_HOST. La porta interna di n8n è 5678, senza mapping diretto verso l'esterno (se ne occupa il reverse proxy). Durata: 10 minuti.
Passo 4: TLS tramite Caddy o Traefik
Caddy è l'opzione più semplice per il TLS automatico via Let's Encrypt: basta un Caddyfile di due righe (dominio + reverse_proxy n8n:5678). In alternativa, Traefik come ulteriore servizio Docker con label sul container n8n. Imposta il record DNS del dominio n8n sull'IP del server Hetzner. Caddy o Traefik richiedono automaticamente un certificato Let's Encrypt e lo rinnovano ogni 60 giorni. Importante: senza TLS non vanno salvate credenziali reali in n8n. Durata: 10 minuti.
Passo 5: configurazione dei backup (Hetzner Storage Box)
Configura una Hetzner Storage Box BX11 (1 TB, 3,81 EUR/mese) come destinazione dei backup. Cronjob giornaliero sul server: dump di PostgreSQL via pg_dump + compressione, upload via rclone o rsync sulla Hetzner Storage Box con SFTP/Samba. Esegui inoltre il backup della cartella /home/node/.n8n (che può contenere dati locali). Policy di retention: 7 giorni in giornaliero, 4 settimane in settimanale. Il BSI IT-Grundschutz OPS.1.1.7 raccomanda un RPO massimo di 24 ore per le automazioni critiche per il business. Durata: 15 minuti.
Passo 6: monitoraggio + aggiornamenti automatici
Uptime Kuma (gratuito, self-hosted, anch'esso via Docker) per il monitoraggio della disponibilità: check HTTP sull'URL di n8n ogni 60 secondi, con alert via e-mail o Telegram in caso di guasto. Attiva l'error workflow nativo di n8n: a ogni workflow di produzione fallito, un messaggio Slack o un'e-mail ai responsabili. Aggiornamenti: container Watchtower per l'aggiornamento automatico delle immagini Docker, oppure uno script di update manuale (docker compose pull && docker compose up -d) ogni mese nella finestra di manutenzione. Durata: 15 minuti.
Configurazione di Docker Compose: il setup completo
La documentazione ufficiale di n8n alla pagina docs.n8n.io/hosting/installation/server-setups/docker-compose/ mette a disposizione un modello `docker-compose.yml` completo. Il setup pronto alla produzione per le PMI comprende quattro servizi: n8n (motore dei workflow), postgres (archiviazione persistente dei dati), redis (backend di coda per le esecuzioni parallele) e caddy (reverse proxy con TLS automatico).
L'elemento più critico della configurazione è la N8N_ENCRYPTION_KEY: questa chiave da 32 byte cifra tutte le credenziali salvate in n8n (chiavi API, token OAuth, password) all'interno del database PostgreSQL. Deve essere generata prima del primo avvio (`openssl rand -hex 32`), conservata in modo sicuro nel file `.env` e salvata separatamente, idealmente in un password manager come Bitwarden o 1Password. Senza questa chiave, le credenziali salvate diventano inutilizzabili dopo un cambio di server.
Per la configurazione della protezione dei dati ai sensi della DSGVO, due variabili d'ambiente di n8n sono particolarmente rilevanti: `N8N_EXECUTIONS_DATA_PRUNE=true` limita l'archiviazione dei dati di esecuzione dei workflow, mentre `N8N_EXECUTIONS_DATA_MAX_AGE=720` fissa il tempo massimo di conservazione a 30 giorni. Per i workflow con dati particolarmente sensibili (dati sanitari, dati finanziari) si consiglia inoltre `N8N_EXECUTIONS_DATA_SAVE_ON_SUCCESS=none`, in modo da non persistere le esecuzioni andate a buon fine.
Esempio di file `.env` di configurazione (campi obbligatori):
N8N_ENCRYPTION_KEY=<stringa-hex-da-32-byte> | DB_TYPE=postgresdb | DB_POSTGRESDB_HOST=postgres | DB_POSTGRESDB_DATABASE=n8n | DB_POSTGRESDB_USER=n8n | DB_POSTGRESDB_PASSWORD=<password-sicura> | QUEUE_BULL_REDIS_HOST=redis | N8N_HOST=n8n.tuo-dominio.it | N8N_PROTOCOL=https | N8N_EXECUTIONS_DATA_PRUNE=true | N8N_EXECUTIONS_DATA_MAX_AGE=720
Tutte le immagini Docker andrebbero ancorate a tag di versione espliciti (ad esempio `n8nio/n8n:1.85.0` anziché `n8nio/n8n:latest`), per evitare breaking change inattesi dovuti agli aggiornamenti automatici. La strategia di manutenzione consigliata è una finestra di aggiornamento mensile e manuale, con verifica dei backup eseguita in anticipo.
I workflow automatizzati richiedono concetti di autorizzazione separati e audit periodici. Per i sistemi che trattano in modo automatizzato dati personali o riservati, registrazione dei log, controllo degli accessi e un piano di emergenza documentato sono componenti obbligatorie del concetto di sicurezza.
TLS, backup, monitoraggio: le tre parti obbligatorie
TLS automatico tramite Caddy o Traefik
Caddy è l'opzione più semplice per chi inizia con il self-hosting: un `Caddyfile` di due righe (`n8n.tuo-dominio.it { reverse_proxy n8n:5678 }`) è sufficiente per un TLS automatico completo via Let's Encrypt. Caddy rinnova i certificati automaticamente prima della scadenza. Traefik è l'alternativa per setup più complessi con più servizi sullo stesso server, configurabile esclusivamente tramite label Docker sul container n8n. Entrambe le soluzioni sono gratuite, ampiamente diffuse e documentate nella community di n8n.
Backup giornalieri di PostgreSQL sulla Hetzner Storage Box
I dati più critici di un setup n8n sono il database PostgreSQL (definizioni dei workflow, cronologia delle esecuzioni, credenziali) e il file `.env` con la chiave di cifratura. Un cronjob giornaliero (`pg_dump | gzip | rclone copy`) salva il database sulla Hetzner Storage Box BX11 (1 TB, 3,81 EUR/mese). Retention: 7 backup giornalieri, 4 settimanali. Non lasciare mai la chiave di cifratura solo sul server: conservala sempre separatamente in un password manager.
Monitoraggio tramite Uptime Kuma
Uptime Kuma è un servizio di monitoraggio gratuito e self-hosted, eseguito in un container Docker sullo stesso server Hetzner. Check HTTP sull'URL di n8n ogni 60 secondi, con alert via e-mail, Telegram o Slack in caso di guasto. Combinato con l'error workflow nativo di n8n (messaggio Slack per i workflow di produzione falliti), si ottiene un setup di monitoraggio completo senza ulteriori costi SaaS.
Checklist di compliance prima del go-live
Prima che la prima istanza n8n con dati personali vada in produzione, tutti i punti di questa checklist dovrebbero essere soddisfatti. Si basa sui requisiti dell'art. 32 della DSGVO (misure tecniche e organizzative) e sulle raccomandazioni del BSI IT-Grundschutz OPS.1.1.7.
- Contratto di responsabile del trattamento concluso con Hetzner — ai sensi dell'art. 28 della DSGVO (gratuito, disponibile nel Customer Center di Hetzner)
- Chiave di cifratura n8n conservata in modo sicuro — in un password manager (Bitwarden, 1Password), non solo nel file .env sul server
- TLS attivo e verificato — il test SSL Labs (ssllabs.com/ssltest) restituisce almeno un rating A
- Ripristino del backup testato — almeno un ripristino eseguito manualmente, con verifica della completezza del backup
- Cronologia delle esecuzioni limitata — N8N_EXECUTIONS_DATA_PRUNE=true, tempo di conservazione impostato a 30 giorni
- Formazione dei collaboratori documentata — chi può accedere a n8n e chi no; gestione delle credenziali regolamentata
- Piano di emergenza disponibile — per iscritto: cosa succede in caso di guasto del server? Quanto dura il ripristino? Chi è il responsabile?
- Valutazione d'impatto sulla protezione dei dati verificata — per i workflow con dati particolarmente sensibili (salute, finanze, dati dei dipendenti) può essere necessaria una DPIA ai sensi dell'art. 35 della DSGVO