Come configurare la tua VPN WireGuard su un VPS (passo passo)

Difficoltà: Principiante 9 min di lettura Aggiornato: 18.07.2026 11
Come configurare la tua VPN WireGuard su un VPS (passo passo)
Noleggiare un VPS economico e trasformarlo nella tua VPN WireGuard ti da un tunnel privato che nessun altro condivide - nessun abbonamento mensile, nessuna azienda che registra il tuo traffico. Questa guida ti accompagna attraverso l'intero processo su un server Ubuntu appena creato, passo dopo passo, con ogni comando da copiare e incollare. Non serve alcuna esperienza pregressa con i server.

Cosa ti serve prima di iniziare

Questa e tutta la lista della spesa. Non c'e niente di esotico e il costo totale e di pochi dollari al mese:

  • Un VPS economico (server virtuale). Il piano piu piccolo - 1 vCPU e 1 GB di RAM - e piu che sufficiente per uso personale. Scegli Ubuntu 22.04 o 24.04 quando lo crei.
  • L'indirizzo IP pubblico del server e l'accesso SSH come root (o sudo). Il tuo provider te li invia via email subito dopo il pagamento.
  • Un client SSH. Su Windows usa l'ssh integrato in PowerShell oppure PuTTY, su macOS e Linux basta aprire un terminale.
  • Un VPS basato su KVM. Quasi tutti i piani lo sono, ma evita quelli OpenVZ piu economici - condividono il kernel dell'host e non possono caricare WireGuard, quindi questa configurazione non funzionera li. In caso di dubbio, chiedi al provider o scegli un piano che indichi "KVM".
  • Circa 15 minuti.
Perche WireGuard: e il protocollo VPN moderno - poche centinaia di righe di codice, molto veloce e semplice da configurare. Rispetto a OpenVPN si connette piu in fretta, consuma meno batteria sul mobile ed e molto piu facile da leggere e verificare. Proprio questa semplicita e il motivo per cui partiamo da qui.

Passo 1: Connettiti e aggiorna il server

Apri il terminale ed effettua l'accesso, sostituendo l'indirizzo con l'IP del tuo server:

ssh root@YOUR_SERVER_IP

La prima cosa da fare su qualsiasi server appena creato e installare gli ultimi aggiornamenti di sicurezza:

apt update && apt upgrade -y

Passo 2: Installa WireGuard

Un solo comando installa WireGuard e qrencode, un piccolo strumento che useremo piu avanti per trasferire la configurazione sul telefono come codice QR:

apt install wireguard qrencode -y

Passo 3: Genera le chiavi del server

WireGuard usa una chiave privata e una pubblica su ciascun lato. Crea la coppia del server all'interno della sua directory di configurazione. Il comando umask 077 assicura che la chiave privata non sia leggibile dagli altri utenti:

cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

Stampa entrambe le chiavi e tienile a portata di mano per i passi successivi:

cat server_private.key
cat server_public.key

Passo 4: Trova la tua interfaccia di rete

Per instradare il tuo traffico verso internet, il server deve conoscere il nome della sua scheda di rete pubblica. Esegui:

ip route list default

Guarda la parola subito dopo dev nell'output - di solito e eth0 o ens3. Annotala; ci servira nel passo successivo.

Passo 5: Crea la configurazione del server

Crea il file /etc/wireguard/wg0.conf (per esempio con nano /etc/wireguard/wg0.conf) e incolla il blocco qui sotto. Sostituisci SERVER_PRIVATE_KEY con la chiave privata del Passo 3 e sostituisci eth0 con il nome dell'interfaccia del Passo 4:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

In parole semplici: il server prende l'indirizzo 10.8.0.1 all'interno di una rete VPN privata, ascolta sulla porta UDP 51820, e le due righe iptables attivano il masquerading che permette ai tuoi dispositivi di raggiungere internet attraverso di esso.

Passo 6: Attiva l'IP forwarding

Per impostazione predefinita Linux non trasferisce il traffico da un'interfaccia all'altra. Attivalo con un suo piccolo file di configurazione - un modo pulito e ripetibile che non entra in conflitto con altre impostazioni e non si accumula se lo esegui due volte:

echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-wireguard.conf
sysctl --system

Passo 7: Crea un client e aggiungilo come peer

Ora genera una coppia di chiavi per il tuo primo dispositivo (il tuo portatile o telefono):

wg genkey | tee client_private.key | wg pubkey > client_public.key
cat client_private.key
cat client_public.key

Comunica al server l'esistenza di questo client aggiungendo un blocco [Peer] in fondo a /etc/wireguard/wg0.conf. Qui usa la chiave pubblica del client:

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Passo 8: Apri il firewall e avvia WireGuard

Consenti SSH (per non escluderti da solo) e la porta di WireGuard, poi attiva il firewall:

ufw allow 22/tcp
ufw allow 51820/udp
ufw enable
Controlla prima la tua porta SSH. Se il tuo provider ha messo SSH su una porta non standard (diversa da 22), consenti quella porta invece - per esempio ufw allow 2222/tcp - prima di eseguire ufw enable, altrimenti il firewall ti escludera dal tuo stesso server.

Avvia il tunnel e impostalo perche parta automaticamente a ogni riavvio:

systemctl enable --now wg-quick@wg0

Verifica che sia in esecuzione - dovresti vedere l'interfaccia e la tua porta in ascolto:

wg show

Passo 9: Crea la configurazione del client

Ogni dispositivo che si connette ha bisogno di un piccolo file di configurazione. Sul server, crea un file chiamato client.conf e compila CLIENT_PRIVATE_KEY (dal Passo 7), SERVER_PUBLIC_KEY (dal Passo 3) e l'IP pubblico del tuo server:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

La riga AllowedIPs = 0.0.0.0/0, ::/0 e cio che invia tutto il tuo traffico attraverso il tunnel. Impostare DNS = 1.1.1.1 impedisce alle tue query di trapelare verso il tuo provider locale. Questo stesso client.conf e quello che caricherai su ogni dispositivo qui sotto.

Passo 10: Installa l'app WireGuard e connettiti

WireGuard ha un'app ufficiale gratuita per ogni piattaforma. Ci sono due modi per caricare il tuo client.conf: scansionare un codice QR (piu facile sui telefoni) oppure importare il file (piu facile sui computer). Per creare un codice QR, esegui questo comando sul server e mantieni la finestra del terminale larga perche il codice non venga distorto:

qrencode -t ansiutf8 < client.conf

Android: installa l'app WireGuard da Google Play. Apri l'app, tocca il pulsante +, scegli Scan from QR code, punta la fotocamera sul codice nel terminale, dai un nome al tunnel, poi sposta l'interruttore per connetterti.

iPhone e iPad: installa l'app WireGuard dall'App Store. Tocca +, scegli Create from QR code, scansiona il codice, dai un nome al tunnel e attivalo. Consenti la configurazione VPN quando iOS lo chiede.

Windows: scarica l'app da wireguard.com/install. Copia il tuo client.conf sul PC, apri l'app, clicca su Import tunnel(s) from file, seleziona client.conf, poi clicca su Activate.

macOS: installa l'app WireGuard dal Mac App Store. Clicca su Import tunnel(s) from file, seleziona il tuo client.conf, consenti la configurazione VPN, poi clicca su Activate.

Linux desktop: installa il pacchetto con apt install wireguard (o l'equivalente della tua distro; vedi wireguard.com/install), copia client.conf in /etc/wireguard/ e avvialo con wg-quick up client. Disconnetti con wg-quick down client.

Vuoi aggiungere un altro dispositivo? Ripeti il Passo 7 per ogni nuovo telefono o portatile: genera una nuova coppia di chiavi, assegna al dispositivo il successivo indirizzo libero (10.8.0.3/32, poi 10.8.0.4/32 e cosi via), aggiungi il suo blocco [Peer] a wg0.conf e applica la modifica con systemctl restart wg-quick@wg0. Dai a ogni dispositivo la propria chiave - non caricare mai una sola configurazione su due dispositivi contemporaneamente.

Passo 11: Verifica che il tunnel funzioni davvero

Attiva la connessione e verifica due cose sulla nostra pagina Strumenti di rete. Primo, che internet veda l'IP del tuo server e non quello di casa - la pagina mostra il tuo IP attuale e il paese in alto. Secondo, apri la scheda DNS Leak Test ed esegui il controllo: ogni resolver elencato deve appartenere al tuo provider DNS, mai al tuo ISP domestico. Se entrambi i controlli vanno bene, hai una VPN privata funzionante.

Errori comuni

  • Nome dell'interfaccia sbagliato. Se eth0 nella configurazione non corrisponde a quello mostrato dal Passo 4, il traffico si connettera ma non raggiungera mai internet. Questa e la causa numero uno di un tunnel "connesso ma senza internet".
  • Dimenticato l'IP forwarding. Saltare il Passo 6 produce lo stesso sintomo senza via d'uscita. Riesegui sysctl --system e controlla che cat /proc/sys/net/ipv4/ip_forward restituisca 1.
  • Firewall del provider. Alcuni host hanno il proprio firewall in un pannello di controllo sopra a ufw. Assicurati che anche la porta UDP 51820 sia aperta li.
  • Chiavi scambiate. La configurazione del server contiene la chiave pubblica del client; la configurazione del client contiene la chiave pubblica del server. Le chiavi private non lasciano mai la macchina su cui sono state create.
  • IPv6 che sfugge. Questa guida invia l'IPv6 nel tunnel (::/0) ma configura il server solo per l'IPv4, quindi alcuni siti solo-IPv6 potrebbero caricarsi lentamente o non caricarsi affatto. Se succede, la soluzione piu semplice e disattivare l'IPv6 sul dispositivo client, oppure aggiungere il supporto IPv6 sul server in un secondo momento.
  • Orologio sfasato. WireGuard va bene, ma se l'orologio del server e gravemente errato, il TLS verso i siti web si rompe. Esegui timedatectl e attiva NTP se necessario.

Quando il solo WireGuard non basta

Un tunnel WireGuard self-hosted e eccellente per la privacy - il tuo traffico e cifrato e legato a un server che usi solo tu. Ma nei paesi con censura aggressiva ha un punto debole: i sistemi di deep packet inspection (DPI) possono riconoscere il traffico WireGuard dalla sua impronta e rallentarlo o bloccarlo, anche se non riescono a leggere cosa c'e dentro. Gli operatori russi, per esempio, sono passati a bloccare le VPN sui box TSPU installati su ogni rete, e i regolatori li hanno apertamente spinto verso il blocco totale del traffico VPN. Se il tuo obiettivo e aggirare quel tipo di DPI piuttosto che la privacy quotidiana, un protocollo che si maschera da normale HTTPS - come VLESS con Reality - e lo strumento migliore. Tratteremo quella configurazione in una guida separata in questa sezione.

Gestire la propria VPN e legale?

Nella maggior parte del mondo, noleggiare un server e gestire la propria VPN su di esso e del tutto legale - e la stessa tecnologia che le aziende usano per il lavoro da remoto. Sei pero responsabile di cio che fai attraverso di essa: una VPN cambia il punto da cui sembra provenire il tuo traffico, non ti mette al di sopra della legge. Una manciata di paesi limita o richiede una licenza per l'uso delle VPN, quindi controlla le regole del luogo in cui vivi davvero. E ricorda i limiti onesti del self-hosting: il tuo traffico e privato rispetto alla tua rete locale e al tuo ISP, ma l'azienda che ti noleggia il VPS puo comunque vedere che a quell'IP esiste un server e quanti dati muove. Per la maggior parte delle persone quel compromesso vale ampiamente la pena - ottieni un tunnel che nessun altro condivide, alle tue condizioni.

Mantienila tua: fai il backup di /etc/wireguard/ in un posto sicuro, non condividere mai una chiave privata e crea un blocco [Peer] separato con la propria coppia di chiavi per ogni nuovo dispositivo invece di riutilizzarne una. Se un dispositivo viene perso, potrai revocare solo quel peer. Una volta configurato un dispositivo, elimina dal server i file client residui cosi la sua chiave privata non resta in giro: rm client.conf client_private.key.
Per andare oltre: vuoi che il tuo server non conservi alcun registro? Leggi la nostra guida Come fare in modo che il tuo VPS non conservi log.
Tag: wireguard vpn vps self-hosted privacy tutorial linux