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.
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.

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→

