Un Raspberry Pi 5 da 8 GB è un eccellente server WireGuard sempre attivo. Aspettati una velocità di trasmissione pari alla tua velocità di upload domestica (comunemente ~80 Mbps), un consumo energetico intorno ai 6-8W, e un costo totale in 5 anni ben inferiore a un singolo abbonamento annuale a NordVPN. Questa guida ti fornisce ogni comando, in ordine, senza omissioni.
Per decidere se un Pi 5 è la scelta giusta rispetto a un VPS cloud o Tailscale, inizia con il nostro confronto delle migliori soluzioni VPN autogestite 2026.
Perché scegliere Raspberry Pi 5 per una VPN domestica
Un Raspberry Pi 5 a $100 rispetto a un VPS a $5/mese — il punto di pareggio avviene a 20 mesi. Dopo di che, sono solo risparmi meno $10-12/anno in elettricità.
Ma il costo non è l'unico motivo. Argomenti concreti per un Pi rispetto a un VPS:
- Controllo completo dell'hardware e dei log — Niente esce da casa tua. Un VPS, anche se criptato, comporta un provider che gestisce l'hypervisor.
- Accesso LAN nativo — Dalla tua connessione VPN, puoi raggiungere il tuo NAS, stampanti, telecamere IP direttamente tramite IP locale. Impossibile con un VPS.
- Co-installazione di Pi-hole — Blocco degli annunci DNS per tutti i tuoi dispositivi mobili, ovunque nel mondo. Una lista di blocco tipica elimina una quota significativa di query DNS (puoi vedere la cifra esatta sulla dashboard di Pi-hole).
- Apprendimento pratico della rete — Il modo migliore per comprendere NAT, IP forwarding, PKI e WireGuard è configurare tutto da solo.
Limiti onesti: dipendi dalla connettività e dall'energia domestica. Per una VPN critica per i viaggi, consulta la sezione manutenzione.
Hardware necessario
Ecco esattamente cosa ho usato, con i prezzi in EUR/USD di inizio 2026:
| Componente | Modello | Prezzo indicativo |
|---|---|---|
| Raspberry Pi 5 | 8 GB RAM (consigliato) | ~$100 / €100 |
| Alimentatore | Ufficiale USB-C 27W (PI-PSU) | ~$12 / €12 |
| microSD | SanDisk Extreme 32 GB UHS-I | ~$12 / €12 |
| Custodia + dissipatore | Argon NEO 5 o custodia ufficiale + Active Cooler | ~$15-20 / €15-20 |
| Cavo Ethernet | Cat 5e/6, 2 m | ~$5 / €5 |
| Totale | ~$145-150 una tantum |
Perché 8 GB di RAM? Se co-installi Pi-hole + eventualmente Nextcloud o Home Assistant, 4 GB possono risultare stretti. Con 8 GB, hai margine per 3 anni di evoluzione della configurazione.
Perché l'alimentatore ufficiale da 27W? Il Pi 5 sotto carico VPN + Pi-hole può assorbire fino a 12W sulla linea USB-C. Un alimentatore economico da 15W causa un throttling silenzioso della CPU (sottotensione). Quello ufficiale garantisce una tensione stabile.
Ethernet è obbligatorio: mai mettere un server VPN su WiFi. La latenza extra (2-5 ms) e le micro-disconnessioni WiFi rendono il tunnel instabile. Collegamento diretto al router.
Configurazione del sistema operativo — Raspberry Pi OS 64-bit
Flash della scheda
- Scarica Raspberry Pi Imager (Windows/Mac/Linux)
- Seleziona Raspberry Pi OS Lite 64-bit (Bookworm — Debian 12) — non serve il desktop
- Clicca sull'icona dell'ingranaggio (opzioni avanzate):
- Nome host:
vpn-pi - Abilita SSH: chiave pubblica (incolla il tuo
~/.ssh/id_ed25519.pub) - Nome utente:
eric(nonpi, disabilitato di default dal 2022) - Locale: il tuo fuso orario, layout tastiera corretto
- Nome host:
- Flash sulla microSD. Inserisci nel Pi, collega Ethernet, accendi.
Primo accesso SSH e IP statico
# Dal tuo Mac/PC, trova il Pi sulla tua rete locale
ssh eric@vpn-pi.local
# IP statico in /etc/dhcpcd.conf
sudo nano /etc/dhcpcd.conf
Aggiungi alla fine del file:
interface eth0
static ip_address=192.168.1.10/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
sudo reboot
# Riconnettiti sull'IP fisso:
ssh eric@192.168.1.10
Firewall UFW
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH (cambia se modifichi la porta)
sudo ufw allow 51820/udp # WireGuard
sudo ufw enable
sudo ufw status verbose
Installazione di WireGuard
Pacchetti e generazione delle chiavi
sudo apt update && sudo apt upgrade -y
sudo apt install -y wireguard qrencode
# Genera le chiavi del server
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
sudo chmod 600 /etc/wireguard/server_private.key
# Mostra le chiavi
SERVER_PRIVKEY=$(sudo cat /etc/wireguard/server_private.key)
SERVER_PUBKEY=$(sudo cat /etc/wireguard/server_public.key)
echo "Privata: $SERVER_PRIVKEY"
echo "Pubblica: $SERVER_PUBKEY"
Configurazione del server wg0.conf
sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVKEY>
# NAT — sostituisci eth0 con la tua interfaccia (controlla con: ip route | grep default)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
IP Forwarding e avvio
# Abilita l'IP forwarding
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# Avvia WireGuard
sudo systemctl enable --now wg-quick@wg0
sudo wg show # dovrebbe mostrare l'interfaccia wg0 attiva
Configurazione della rete — router, DuckDNS, MTU
Port forwarding sul tuo router
Ogni ISP ha un'interfaccia di amministrazione diversa, ma la regola è la stessa: UDP, porta esterna 51820 → IP locale 192.168.1.10, porta interna 51820.
Testa da un'altra rete (mobile 4G): nc -zvu YOUR_PUBLIC_IP 51820.
DuckDNS — DNS dinamico gratuito
# Crea un account su duckdns.org, annota il tuo token
# Crea lo script di aggiornamento
mkdir -p ~/duckdns
cat > ~/duckdns/duck.sh << 'EOF'
#!/bin/bash
echo url="https://www.duckdns.org/update?domains=myvpn&token=YOUR_TOKEN&ip=" | curl -k -o ~/duckdns/duck.log -K -
EOF
chmod +x ~/duckdns/duck.sh
# Cron ogni 5 minuti
(crontab -l 2>/dev/null; echo "*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1") | crontab -
Ottimizzazione MTU
WireGuard di default usa MTU 1420. Se vedi pacchetti frammentati:
# Testa la frammentazione
ping -M do -s 1392 8.8.8.8
# Se fallisce, aggiungi in wg0.conf [Interface]:
# MTU = 1380
Per dettagli completi sui template di configurazione WireGuard e casi limite MTU, consulta la nostra guida ai template di configurazione WireGuard.
Configurazione del client — Mac, Windows, iOS, Android
Genera una configurazione client
# Sul server, per ogni client:
CLIENT_PRIVKEY=$(wg genkey)
CLIENT_PUBKEY=$(echo $CLIENT_PRIVKEY | wg pubkey)
cat << EOF
[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.8.0.2/32
DNS = 10.8.0.1
[Peer]
PublicKey = $SERVER_PUBKEY
Endpoint = myvpn.duckdns.org:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
Aggiungi il client al server:
sudo wg set wg0 peer $CLIENT_PUBKEY allowed-ips 10.8.0.2/32
sudo wg-quick save wg0 # persiste la configurazione
Codice QR per iOS e Android
# Salva la configurazione del client in un file
cat > /tmp/client1.conf << 'EOF'
[Interface]
PrivateKey = CLIENT_PRIVKEY_HERE
Address = 10.8.0.2/32
DNS = 10.8.0.1
[Peer]
PublicKey = SERVER_PUBKEY_HERE
Endpoint = myvpn.duckdns.org:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
# Mostra il codice QR nel terminale
qrencode -t ansiutf8 < /tmp/client1.conf
# Elimina dopo la scansione (non lasciare chiavi private in giro)
rm /tmp/client1.conf
Scansiona con l'app ufficiale WireGuard (iOS App Store / Google Play). La connessione si stabilisce in meno di 2 secondi.
macOS e Windows: scarica l'app ufficiale WireGuard, importa direttamente il file .conf.
Per confrontare con l'alternativa Tailscale che elimina tutta questa configurazione manuale, leggi la guida al nodo di uscita Tailscale. E per capire come Cloudflare WARP si confronta con la tua configurazione Pi, vedi WARP vs WireGuard autogestito.
Per gli utenti che viaggiano in paesi censurati (Cina, Iran, Russia): WireGuard su un Pi 5 sarà bloccato — il GFW rileva le sessioni WireGuard. Gli utenti avanzati possono preferire V2Ray con VLESS + REALITY per una migliore resistenza alla censura su un VPS cloud con un nodo di uscita a Singapore o Tokyo. La configurazione Pi 5 rimane ideale per la privacy domestica, l'accesso LAN locale e i paesi senza ispezione profonda dei pacchetti.
Ottimizzazioni e manutenzione
Aggiornamenti di sicurezza automatici
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
# Scegli "Sì" per abilitare gli aggiornamenti di sicurezza automatici
Monitoraggio con journalctl
# Log di WireGuard in tempo reale
sudo journalctl -u wg-quick@wg0 -f
# Vedi peer connessi e statistiche
sudo wg show
# Traffico per peer (byte ricevuti/inviati)
sudo wg show all dump
fail2ban contro le scansioni SSH
sudo apt install -y fail2ban
cat | sudo tee /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 3600
findtime = 600
EOF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
Backup configurazione WireGuard
# Backup automatico settimanale su unità USB o NAS locale
(crontab -l; echo "0 3 * * 0 sudo cp -r /etc/wireguard ~/backup/wg-$(date +%Y%m%d)") | crontab -
Swap se si utilizza 4 GB di RAM
Se stai usando il modello da 4 GB con Pi-hole + WireGuard attivi:
sudo dphys-swapfile swapoff
sudo nano /etc/dphys-swapfile # Imposta CONF_SWAPSIZE=1024
sudo dphys-swapfile setup
sudo dphys-swapfile swapon
Monitoraggio della temperatura
Con una custodia passiva come l'Argon NEO 5, un Pi 5 tipicamente rimane nei 40°C sotto carico VPN + Pi-hole. Senza una custodia funziona molto più caldo — il throttling della CPU inizia a 80°C, quindi è consigliato un dissipatore o una custodia.
# Temperatura in tempo reale
watch -n 2 vcgencmd measure_temp
Per una panoramica completa della configurazione avanzata della rete di cui avrai bisogno quando gestisci più client simultanei, consulta la nostra guida VPN multi-client WireGuard su Contabo — i concetti NAT sono identici su Pi.
Cosa aspettarsi: velocità di trasmissione pari alla tua velocità di upload domestica, latenza aggiunta a una cifra millisecondo sul lato LAN, un consumo energetico di ~6-8W, e una solida sicurezza con fail2ban e SSH solo con chiavi. Una cosa da pianificare: un'interruzione di corrente domestica interrompe il tunnel — un piccolo UPS (ad es. un APC 500VA) lo mantiene attivo durante brevi interruzioni.
WireGuard è sufficiente per la maggior parte degli usi autogestiti. Tuttavia, gli utenti avanzati possono preferire V2Ray per una migliore resistenza alla censura — particolarmente utile se devi connetterti dalla Cina, Iran o Russia dove i protocolli VPN standard sono attivamente bloccati.
★ Datacenter GDPR di Norimberga · ✓ IPv4 dedicato incluso · 200+ Mbps garantiti
Self-host your VPN on your own VPS → ContaboFull root access · public IPv4 · pick your region→