VPNSmith
self-host-vpn-headINFO

VPN Autogestito su Raspberry Pi 5 (2026): Guida all'Installazione di WireGuard

Configura una VPN WireGuard su Raspberry Pi 5 nel 2026: hardware, configurazione del sistema operativo, configurazione del server, port forwarding, DuckDNS, client iOS/Android/Mac/Windows. Velocità tipica ~80 Mbps, consumo energetico ~6W.

Di Eric Gerard · Fondateur · VPNSmith — Spécialiste self-host VPN & VPS GDPR8 min letturaPhoto : Harrison Broadbent — Unsplash

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:

ComponenteModelloPrezzo indicativo
Raspberry Pi 58 GB RAM (consigliato)~$100 / €100
AlimentatoreUfficiale USB-C 27W (PI-PSU)~$12 / €12
microSDSanDisk Extreme 32 GB UHS-I~$12 / €12
Custodia + dissipatoreArgon NEO 5 o custodia ufficiale + Active Cooler~$15-20 / €15-20
Cavo EthernetCat 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

File di server in un data center
File di server in un data center

Flash della scheda

  1. Scarica Raspberry Pi Imager (Windows/Mac/Linux)
  2. Seleziona Raspberry Pi OS Lite 64-bit (Bookworm — Debian 12) — non serve il desktop
  3. 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 (non pi, disabilitato di default dal 2022)
    • Locale: il tuo fuso orario, layout tastiera corretto
  4. 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