Se usi Make, Zapier o n8n Cloud, probabilmente conosci bene quella sensazione: il contatore delle esecuzioni che sale, il piano che non basta più, i costi che lievitano. La soluzione esiste, ed è più accessibile di quanto pensi: self-hostare n8n.
n8n è uno strumento di automazione workflow open source che ti permette di connettere app, API e servizi in flussi automatizzati. La versione self-hosted ti dà controllo totale, zero limiti di esecuzione e costi drasticamente ridotti. In questa guida ti mostro come installarlo passo-passo.
Perché self-hostare n8n
La domanda è legittima: perché complicarsi la vita quando esistono soluzioni gestite? Ecco i motivi concreti:
- Nessun limite di esecuzione: con n8n Cloud paghi per task, con Make paghi per operazioni. Self-hosted? Esegui quanti workflow vuoi.
- Costi prevedibili: un VPS da 4-5 euro al mese sostituisce piani da 20-100 euro mensili.
- Controllo sui dati: i tuoi dati restano sul tuo server. Nessun passaggio su infrastrutture terze.
- Personalizzazione: puoi installare moduli npm custom, modificare configurazioni, integrare con sistemi interni.
- Nessun vendor lock-in: se n8n cambia pricing o policy, la tua istanza resta tua.
Ho migrato da Make a n8n self-hosted quando le mie automazioni superavano le 10.000 operazioni mensili. Ora pago 5 euro al mese invece di 59, e non devo più preoccuparmi di ottimizzare per risparmiare task.
Requisiti: cosa ti serve
Prima di iniziare, verifica di avere:
Per Docker su VPS
- VPS Linux: Ubuntu 22.04+ consigliato, minimo 1GB RAM e 1 vCPU (2GB RAM consigliati per workflow complessi)
- Docker e Docker Compose: li installeremo insieme
- Dominio: per HTTPS e accesso sicuro (opzionale ma fortemente consigliato)
- Conoscenze base terminale: saper usare ssh, nano/vim, comandi base Linux
Per Railway/Render
- Account GitHub: per autenticazione
- Carta di credito: richiesta per verifica, ma esistono tier gratuiti
- Nessuna competenza tecnica: tutto via interfaccia web
Provider VPS consigliati: Hetzner (ottimo rapporto qualità/prezzo, da 3.79 euro/mese, prezzi soggetti a variazione), Contabo, DigitalOcean, Vultr. Per Railway e Render, il tier gratuito è sufficiente per iniziare.
Opzione 1: Docker (consigliata)
Docker è il metodo più flessibile e robusto. Ti da controllo completo e facilita backup e aggiornamenti.
Step 1: Prepara il server
Connettiti al tuo VPS via SSH e aggiorna il sistema:
# Aggiorna pacchetti
sudo apt update && sudo apt upgrade -y
# Installa dipendenze
sudo apt install -y ca-certificates curl gnupg lsb-release
Step 2: Installa Docker
# Aggiungi repository Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installa Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Permetti uso senza sudo
sudo usermod -aG docker $USER
newgrp docker
Step 3: Crea la struttura
# Crea directory per n8n
mkdir -p ~/n8n-docker
cd ~/n8n-docker
# Crea file docker-compose.yml
nano docker-compose.yml
Step 4: Configura docker-compose.yml
Incolla questa configurazione:
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.tuodominio.it
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.tuodominio.it/
- GENERIC_TIMEZONE=Europe/Rome
- N8N_ENCRYPTION_KEY=chiave-segreta-32-caratteri-min
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Importante: genera una N8N_ENCRYPTION_KEY sicura con openssl rand -hex 32. Questa chiave cripta le credenziali salvate. Se la perdi, perdi accesso alle credenziali.
Step 5: Avvia n8n
# Avvia in background
docker compose up -d
# Verifica che funzioni
docker compose logs -f n8n
Ora n8n è raggiungibile su http://IP-SERVER:5678. Ma non è ancora sicuro: manca HTTPS.
Opzione 2: Railway/Render (facile)
Se Docker ti sembra troppo, Railway e Render offrono deploy con un click. Perfetto per iniziare o per chi non vuole gestire server.
Deploy su Railway
- Vai su railway.com/deploy/n8n
- Clicca "Deploy Now"
- Autentica con GitHub
- Railway crea automaticamente il progetto con PostgreSQL
- Attendi il deploy (2-3 minuti)
- Clicca sul link generato per accedere a n8n
Railway offre 5 dollari di credito gratuito mensile (verifica crediti attuali su railway.app), sufficienti per un'istanza base. Per workflow intensivi, il piano Pro parte da 20 dollari.
Deploy su Render
- Vai su render.com/docs/deploy-n8n
- Segui la guida per creare un Web Service
- Usa l'immagine Docker
n8nio/n8n - Configura un database PostgreSQL (consigliato) o usa SQLite con persistent disk
- Attendi il deploy
Render (nota: il tier gratuito non è più disponibile dal 2024, i piani partono da $7/mese). Per produzione, consiglio almeno il piano Starter a 7 dollari/mese.
Railway vs Render: Railway è più semplice per n8n grazie ai template pronti. Render offre più controllo ma richiede configurazione manuale. Railway è più economico con crediti gratuiti.
Configurazione iniziale
Al primo accesso, n8n ti chiede di creare un account owner:
- Inserisci email e password sicura
- Scegli nome e cognome
- Opzionalmente, iscriviti alla newsletter
Dopo il login, configura le impostazioni essenziali:
Timezone
Vai in Settings > General e verifica che il timezone sia Europe/Rome. Fondamentale per trigger temporali corretti.
Execution Data
In Settings > Workflow Settings, configura:
- Save Data Error Execution: all (salva esecuzioni fallite)
- Save Data Success Execution: all o none (salva tutto o solo errori)
- Execution Timeout: 3600 secondi per workflow lunghi
Prima credenziale
Testa che tutto funzioni creando una credenziale semplice. Vai in Credentials > Add Credential > HTTP Header Auth e crea un test. Se riesci a salvare, la crittografia funziona.
Sicurezza: SSL, autenticazione
Un'istanza n8n esposta senza protezione è un rischio serio. Ecco come proteggerla.
HTTPS con Caddy (reverse proxy)
Caddy gestisce automaticamente i certificati SSL. Aggiungi al tuo docker-compose.yml:
version: '3.8'
services:
caddy:
image: caddy:2-alpine
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
depends_on:
- n8n
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
expose:
- "5678"
environment:
- N8N_HOST=n8n.tuodominio.it
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.tuodominio.it/
- GENERIC_TIMEZONE=Europe/Rome
- N8N_ENCRYPTION_KEY=la-tua-chiave-segreta
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
caddy_data:
caddy_config:
Crea il file Caddyfile:
n8n.tuodominio.it {
reverse_proxy n8n:5678
}
Punta il DNS del tuo dominio all'IP del server, poi:
docker compose down
docker compose up -d
Caddy ottiene automaticamente il certificato Let's Encrypt.
Autenticazione base
n8n supporta autenticazione integrata. Aggiungi queste variabili d'ambiente:
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=password-sicura
Sicurezza extra: considera un firewall (ufw), fail2ban per bloccare brute force, e VPN se l'istanza è solo per uso interno.
Backup e manutenzione
Backup automatico
Crea uno script per backup giornalieri:
#!/bin/bash
# backup-n8n.sh
BACKUP_DIR=/home/user/backups/n8n
DATE=$(date +%Y-%m-%d)
mkdir -p $BACKUP_DIR
# Backup volume Docker
docker run --rm -v n8n-docker_n8n_data:/data -v $BACKUP_DIR:/backup alpine tar czf /backup/n8n-$DATE.tar.gz -C /data .
# Mantieni solo ultimi 7 giorni
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
Aggiungi a crontab per esecuzione giornaliera:
crontab -e
# Aggiungi:
0 3 * * * /home/user/backup-n8n.sh
Aggiornamenti
# Scarica ultima versione
docker compose pull
# Riavvia con nuova immagine
docker compose up -d
# Verifica versione
docker exec n8n n8n --version
Prima di aggiornare: leggi sempre le release notes su GitHub. Alcune versioni hanno breaking changes. Fai un backup prima di ogni aggiornamento.
n8n Cloud vs Self-hosted: quando scegliere cosa
Non esiste una risposta universale. Ecco una guida decisionale:
Scegli n8n Cloud se:
- Non hai competenze tecniche e non vuoi acquisirle
- Hai budget ma non tempo
- Hai bisogno di supporto ufficiale
- I tuoi workflow sono pochi e leggeri
- La compliance richiede un provider certificato
Scegli Self-hosted se:
- Hai molti workflow o esecuzioni frequenti
- Vuoi controllo totale su dati e infrastruttura
- Il budget è limitato ma hai tempo
- Hai bisogno di personalizzazioni avanzate
- Integri n8n con sistemi interni non esposti a internet
Confronto costi reali
Domande Frequenti
Quanto costa self-hostare n8n?
Il software n8n è gratuito e open source. I costi sono solo per l'hosting: con Docker su un VPS si parte da 4-5 euro al mese, con Railway o Render esistono tier gratuiti con limitazioni. In ogni caso, è drasticamente meno costoso rispetto ai 20-50 euro mensili di n8n Cloud o Make.
Ho bisogno di competenze tecniche per installare n8n?
Per Railway o Render servono competenze minime: basta un account e qualche click. Per Docker su VPS servono basi di terminale Linux. Questa guida copre entrambi gli scenari con istruzioni passo-passo adatte anche a chi parte da zero.
n8n self-hosted ha limiti di esecuzione?
No, nessun limite. A differenza di n8n Cloud, Make o Zapier che contano le esecuzioni, con n8n self-hosted puoi eseguire quanti workflow vuoi. L'unico limite è la potenza del server che scegli.
Posso migrare da n8n Cloud a self-hosted?
Sì, n8n permette di esportare e importare workflow in formato JSON. Puoi esportare tutti i tuoi workflow da n8n Cloud e importarli nella tua istanza self-hosted senza perdere nulla.
Come gestisco gli aggiornamenti di n8n?
Con Docker basta fare docker pull n8nio/n8n:latest e riavviare il container. Con Railway o Render gli aggiornamenti sono spesso automatici. Consiglio di fare sempre un backup prima di aggiornare e di leggere le release notes per eventuali breaking changes.
Vuoi implementare queste strategie?
Raccontami il tuo progetto. Rispondo entro 24 ore, senza impegno.
Parliamone