Avviso di affiliazione - Questa guida rimanda a Contabo, il VPS su cui facciamo girare il nostro WireGuard auto-ospitato. Se ordini tramite il nostro link guadagniamo una commissione senza costi aggiuntivi per te. Ogni comando qui sotto è documentato dal progetto ufficiale wg-easy e scritto per essere riproducibile sulla tua macchina.
WireGuard è veloce e moderno, ma l'installazione standard sono file e riga di comando: generare chiavi, modificare wg0.conf a mano, lanciare wg set per ogni dispositivo, spostare configurazioni da una parte all'altra. Per un dispositivo va bene. Per una famiglia, qualche laptop e un paio di telefoni diventa noioso - ed è nel noioso che nascono gli errori (e le chiavi che trapelano). wg-easy risolve esattamente questo: tiene il vero WireGuard sotto, intatto, e ci monta sopra una dashboard web pulita. Aggiungere un client in due clic, mostrare un codice QR per un telefono, vedere chi è connesso e quanto trasferisce. Questa è l'installazione completa 2026, incluso il cambio di password che fa inciampare chiunque aggiorni.
Consiglio: se il tunnel non si connette, la causa è quasi sempre la porta. Vedi la nostra guida sulla porta predefinita di WireGuard (UDP 51820) e come aprirla, inoltrarla o cambiarla.
Cos'è davvero wg-easy (e cosa non è)
wg-easy è un unico contenitore Docker che esegue un server WireGuard e una piccola applicazione web per gestirlo. La cosa importante da capire subito: non sostituisce né reimplementa WireGuard. Il tunnel è sempre lo stesso WireGuard del kernel, con le stesse chiavi e lo stesso protocollo sul filo. wg-easy è gestione, non una nuova VPN. Due conseguenze:
- Nessuna penalizzazione di velocità. Throughput e latenza sono identici a una configurazione scritta a mano, perché il percorso dei dati non tocca mai l'applicazione web.
- L'interfaccia web è la superficie d'attacco. La dashboard può creare client, quindi chi la controlla controlla la tua VPN. Proteggere quel pannello è tutta la storia della sicurezza (più sotto).
Cosa ottieni in cambio: una pagina del browser che elenca ogni client, creare/disabilitare/eliminare con un clic, un codice QR per client per i telefoni e un contatore di trasferimento in tempo reale per peer. Per attivare una manciata di dispositivi senza toccare il terminale, niente è più veloce.

Una VPN cambia il tuo IP. Non cambia il tuo browser.
Un tunnel sostituisce l'indirizzo che un servizio vede. Non cambia nulla di ciò che il tuo browser dichiara da solo - caratteri, schermo, fuso orario, stack grafico - e quella combinazione basta spesso a riconoscerti da una sessione all'altra.
Misura la tua impronta del browser - misurazione passiva, senza domande, senza account, senza email.
Prima di iniziare: l'host che ti serve
wg-easy è un contenitore, quindi ti serve un host Linux capace di eseguire Docker e con un IP pubblico. Per una VPN raggiungibile da ovunque, significa un piccolo VPS - WireGuard è così leggero che un'istanza da 4-6 €/mese satura la sua porta di rete molto prima che la CPU se ne accorga. Noi facciamo girare il nostro su Contabo per il rapporto prezzo/banda, e la procedura bare-metal è nella nostra guida a WireGuard auto-ospitato su Contabo se vuoi confrontare la via manuale.
Prendi un VPS Contabo per eseguire wg-easy →
Sull'host ti servono Docker e il plugin Compose installati, il modulo kernel di WireGuard disponibile (ogni distro moderna, Linux 5.6+, lo include) e la possibilità di aprire l'UDP 51820 in sia il firewall dell'host sia il gruppo di sicurezza del tuo provider.
Il file docker-compose
Questo è il deployment moderno di wg-easy. Sostituisci WG_HOST con l'IP pubblico o il nome host del tuo server, e imposta una password di amministrazione robusta (la sezione successiva spiega il requisito di hash dalla v14):
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
environment:
- WG_HOST=ip.pubblico.del.tuo.server
- PASSWORD_HASH=$2a$12$SOSTITUISCI_CON_IL_TUO_HASH_BCRYPT
- WG_DEFAULT_DNS=1.1.1.1
volumes:
- ./etc_wireguard:/etc/wireguard
ports:
- "51820:51820/udp" # dati WireGuard - aperto a Internet
- "51821:51821/tcp" # interfaccia web - limitala SOLO al TUO IP
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
Tre cose fanno il lavoro vero e sono i soliti punti di rottura:
cap_add: NET_ADMINconsente al contenitore di gestire l'interfaccia WireGuard. Senza, il contenitore parte ma non riesce ad attivare il tunnel.sysctls: net.ipv4.ip_forward=1trasforma la macchina in un router. Senza, il tunnel si connette e poi non instrada nulla - il classico «connesso ma senza Internet».volumespersiste chiavi e client sull'host, così undocker compose down && upnon cancella ogni dispositivo.
Avvialo con docker compose up -d, poi apri http://IP_DEL_TUO_SERVER:51821 ed esegui il login.
Il cambio di password che rompe gli aggiornamenti
È il maggiore tranello del 2026. Il vecchio wg-easy usava una variabile d'ambiente PASSWORD in chiaro. Le release recenti (v14 e successive) hanno rimosso il PASSWORD in chiaro e ora richiedono un hash bcrypt in PASSWORD_HASH. Se copi la riga PASSWORD=segreto da un vecchio tutorial in un'immagine attuale, il contenitore rifiuterà il login o non partirà, e giurerai che la documentazione sia sbagliata.
Genera l'hash con l'immagine stessa per non incollare mai una password in chiaro nella cronologia della shell:
docker run --rm ghcr.io/wg-easy/wg-easy wgpw 'la-tua-password-robusta'
# stampa: PASSWORD_HASH=$2a$12$....
Copia l'intero valore $2a$12$... nel file compose. Nota che i caratteri $ vanno protetti (raddoppiati come $$) se metti l'hash in un file .env che Compose interpola - questo bug di escape è la seconda lamentela più comune dopo la rinomina della variabile.
Aggiungi il tuo primo client
Nella dashboard, clicca New Client, dagli un nome (es. laptop, telefono-pixel), e wg-easy genera la coppia di chiavi e una configurazione pronta. Per un computer, scarica il .conf e importalo nell'app WireGuard o nei modelli di configurazione; per un telefono, clicca l'icona QR e scansionalo con l'app mobile WireGuard - niente da digitare, nessun trasferimento di file. L'interruttore per client disabilita un dispositivo all'istante senza eliminarlo, ed è il modo giusto di revocare un telefono perso.
Blindare il pannello di amministrazione - fallo subito, non dopo
L'interfaccia web può creare client VPN, quindi un pannello esposto e poco protetto è il vero pericolo di wg-easy. Tre livelli, in ordine di preferenza:
- Non pubblicare mai 51821 su Internet. Nel firewall del tuo provider VPS, lascia aperto l'UDP 51820 e tieni il TCP 51821 chiuso al mondo. Raggiungi il pannello solo dal tuo IP, o - il modo più pulito - connettiti prima alla VPN e apri la dashboard attraverso il tunnel, così la porta di amministrazione non si affaccia mai su Internet.
- Usa una password robusta e con hash. Il requisito
PASSWORD_HASHesiste per questo. Trattala come una password di root. - Metti il TLS davanti se devi raggiungerla da remoto: un reverse proxy (Caddy, Traefik, nginx) che termina HTTPS con un certificato reale, idealmente con una lista di autorizzazione. HTTP in chiaro su una porta pubblica è l'unica configurazione da evitare.
Una VPN auto-ospitata a cui qualsiasi passante può aggiungersi è peggio di nessuna VPN. Il pannello sono le chiavi del regno - proteggilo di conseguenza.
wg-easy contro le alternative
- vs PiVPN - PiVPN installa WireGuard direttamente sull'host e gestisce i peer dal terminale (
pivpn add,pivpn -qr). Niente contenitore, niente interfaccia web. Scegli PiVPN per una macchina bare-metal snella e scriptabile; scegli wg-easy quando vuoi davvero una dashboard cliccabile e statistiche in tempo reale. - vs una configurazione scritta a mano - Modificare
wg0.confda soli è l'opzione più trasparente e leggera, ideale per una macchina VPN a scopo unico e per l'infrastruttura come codice. wg-easy scambia un po' di superficie in più (l'app web) per una gestione dei client rapida e senza CLI. - vs altri stack auto-ospitati - Se vuoi un mesh (ogni dispositivo che parla direttamente, con il NAT traversal gestito per te) invece di un classico server a stella, wg-easy ha la forma sbagliata; quello è il terreno di Tailscale/Headscale/NetBird, confrontati nella nostra guida alla migliore VPN auto-ospitata.
wg-easy gira anche benissimo accanto ad altri contenitori, motivo per cui si abbina naturalmente a un'installazione di WireGuard in Docker più ampia.
Quando wg-easy è la scelta giusta - e quando no
Usa wg-easy quando attivi diverse persone o dispositivi, vuoi la configurazione del telefono via QR, ti piace vedere lo stato della connessione in tempo reale, o semplicemente preferisci un pannello a un file di configurazione. Trasforma «configurare un client VPN» da un'incombenza CLI di cinque minuti in due clic.
Evita wg-easy quando la macchina non fa altro che servire uno o due peer WireGuard (una configurazione a mano è più semplice e ha un componente mobile in meno), quando non puoi tenere in sicurezza la porta di amministrazione fuori da Internet, o quando in realtà vuoi un mesh e non un server. Per tutti gli altri, wg-easy è il percorso onesto più rapido da un VPS appena creato a una VPN WireGuard funzionante e gestibile.
Il limite onesto
wg-easy rende WireGuard più facile da gestire, non più privato o più sicuro di quanto WireGuard già sia. Condivide il kernel dell'host, gira con NET_ADMIN, ed è blindato solo quanto l'host e il pannello di amministrazione che gli metti davanti. Non controlla i tuoi client, non impedisce da solo le fughe DNS (imposta WG_DEFAULT_DNS e verifica), e non ti protegge se lasci 51821 aperto. Trattalo come uno strato di comodità sopra il vero WireGuard: distribuiscilo, irrobustisci host e pannello, tieni la porta dati pubblica e quella di amministrazione privata - e avrai una VPN auto-ospitata che puoi davvero gestire per un'intera famiglia senza vivere nel terminale.
★ Datacenter GDPR di Norimberga · ✓ IPv4 dedicato incluso · 200+ Mbps garantiti
Ospita la tua VPN sul tuo VPS → ContaboAccesso root completo · IPv4 pubblico · scegli la tua regione→


