wg-easy v15 (2026): installazione con Docker Compose e pannello blindato

Installare wg-easy v15 con Docker Compose: il file attuale, la procedura che sostituisce PASSWORD_HASH, la migrazione v14, il 2FA e un pannello fuori da Internet.

Di Eric GerardFondatore · VPNSmith - Specialista in VPN autogestite e VPS GDPR

Aggiornato 14 min lettura14 min

Link di affiliazione: possibile commissione, senza costi extra. Metodo

Genera il mio docker-composeLeggi la guida

fig. 01 / self-host-vpnencrypted tunnelUDP 51820DEVICE10.8.0.2SERVER10.8.0.1INTERNETNATAllowedIPs = 0.0.0.0/0, ::/0ListenPort = 51820 (server)
fig. 01 / self-host-vpn

wg-easy è un'immagine Docker gratuita che esegue WireGuard con un pannello di amministrazione web sul tuo server: aggiungi dispositivi, scarichi le loro configurazioni e mostri i codici QR dal browser invece di modificare wg0.conf. La versione 15 è quella attuale; serve un VPS con la porta UDP 51820 aperta. Questa guida usa un Cloud VPS di Contabo come server di esempio.

fig. 01 / self-host-vpnencrypted tunnelUDP 51820DEVICE10.8.0.2SERVER10.8.0.1INTERNETNATAllowedIPs = 0.0.0.0/0, ::/0ListenPort = 51820 (server)
fig. 01 / self-host-vpn

Non hai ancora scelto il server? La nostra classifica dei VPS più economici per WireGuard confronta quanto fattura davvero ogni fornitore per un server utilizzabile.

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.

Senza copia e incolla: il generatore docker-compose di wg-easy, gratuito, scrive il docker-compose.yml della v15 per la tua installazione nel browser: pannello di amministrazione solo su localhost o in HTTPS sul tuo dominio tramite Caddy, e un primo avvio non presidiato facoltativo.

Genera qui il tuo docker-compose.yml per wg-easy v15

Inserisci l'indirizzo del server e come accedi al pannello: ottieni il file compose, il Caddyfile se serve e i comandi di installazione.

01Descrivi il tuo server

Tutto viene generato nel tuo browser. Nulla di ciò che scrivi, password compresa, viene inviato ai nostri server.

L'indirizzo a cui si collegano i client WireGuard.

Come raggiungerai il pannello?

Un record A per questo nome deve puntare al server, con le porte 80 e 443 aperte.

Senza installazione automatica, apri il pannello dopo il primo avvio: la procedura chiede l'account amministratore, poi host e porta. Inserisci la stessa porta UDP indicata sopra.

02Copia i file

docker-compose.yml
# wg-easy v15 - generated on vpnsmith.com/en/tools/wg-easy-compose-generator
# Host: vpn.example.com - WireGuard port: 51820/udp - panel: https://wg.example.com

volumes:
  etc_wireguard:
  caddy_data:
  caddy_config:

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy:15
    container_name: wg-easy
    environment:
      - PORT=80
      - TRUSTED_PROXIES=10.42.42.43,fdcc:ad94:bacf:61a3::2b
    networks:
      wg:
        ipv4_address: 10.42.42.42
        ipv6_address: fdcc:ad94:bacf:61a3::2a
    volumes:
      - etc_wireguard:/etc/wireguard
      - /lib/modules:/lib/modules:ro
    ports:
      - "51820:51820/udp"   # WireGuard: the only port clients need
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.all.forwarding=1
      - net.ipv6.conf.default.forwarding=1

  caddy:
    image: caddy:2-alpine
    container_name: caddy
    ports:
      - "80:80/tcp"
      - "443:443/tcp"
      - "443:443/udp"
    networks:
      wg:
        ipv4_address: 10.42.42.43
        ipv6_address: fdcc:ad94:bacf:61a3::2b
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config
    restart: unless-stopped

networks:
  wg:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: 10.42.42.0/24
        - subnet: fdcc:ad94:bacf:61a3::/64
Caddyfile
wg.example.com {
	reverse_proxy wg-easy:80
}

03Esegui i comandi di installazione

install.sh
# 1. Firewall: prima SSH, poi la porta di WireGuard
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw enable
# Nota: le porte pubblicate da Docker aggirano ufw. Aprile/chiudile anche nel firewall del provider.

# 2. Crea la cartella e incolla il o i file generati
sudo mkdir -p /etc/docker/containers/wg-easy
cd /etc/docker/containers/wg-easy
sudo nano docker-compose.yml
sudo nano Caddyfile

# 3. Avvia wg-easy
sudo docker compose up -d
# Segui i log (Ctrl+C per uscire)
sudo docker compose logs -f wg-easy

# 4. Apri il pannello: https://wg.example.com

Questo file ha bisogno di un server con IP pubblico

Contabo Cloud VPS 4 (4 vCPU, 8 GB di RAM, IPv4 dedicato, traffico illimitato): 5,50 € al mese con durata di 24 mesi (prezzo verificato il 17/10/2026), tutto ciò che serve a wg-easy.

Link di affiliazione: riceviamo una commissione senza costi aggiuntivi per te.

Carta rifiutata, o preferisci un provider statunitense? Il VPS Basic di Ultahost costa 5,52 $/mese su 24 mesi (letto il 21 ottobre 2026) e accetta anche Bitcoin, Alipay, WeChat Pay e Qiwi; controlla le sue condizioni per il tuo paese. Vedi i VPS Ultahost

Vedi il piano su Contabo

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.

Cavi in fibra ottica turchese che scendono ad anello verso una fila di connettori bianchi su apparati montati in rack
Cavi in fibra ottica turchese che scendono ad anello verso una fila di connettori bianchi su apparati montati in rack

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. Contabo è qui l'esempio scelto 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 →

Una seconda opzione se preferisci un periodo di rimborso di 30 giorni: il VPS Basic di Ultahost, letto su ultahost.com il 21 ottobre 2026 a 5,52 $ al mese fatturati su 24 mesi (prezzo di listino 9,19 $), con 1 core CPU, 1 GB di DDR5, 30 GB NVMe, un IPv4 dedicato e garanzia di rimborso di 30 giorni. 1 GB basta per Docker e il container wg-easy su una VPN personale. Il piano non pubblica né velocità della porta né volume di traffico, verificali prima di contarci per un uso intenso.

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 (wg-easy v15)

Verifica della versione (24 ottobre 2026): la versione attuale è la v15.5.0 (24 ottobre 2026). La v15 è una riscrittura completa: WG_HOST, PASSWORD_HASH e quasi tutte le altre variabili della v14 sono sparite, e le loro impostazioni ora stanno nell'interfaccia web. Un tutorial v14 incollato sull'immagine :latest avvia un container che ignora in silenzio host e password. Tutto ciò che segue è il metodo v15, preso dal file compose e dalla documentazione del progetto.

La v15.5.0 in un minuto: include le correzioni di sicurezza di Node.js di ottobre 2026, quindi aggiorna anche se tutto funziona: sudo docker compose pull && sudo docker compose up -d (il tag :15 usato sotto segue la nuova versione, client e chiavi restano nel volume). Porta inoltre il supporto integrato ad AmneziaWG alla versione 3.1, aggiunge WG_INTERFACE (predefinito wg0) per eseguire due istanze sullo stesso host e TRUSTED_PROXIES per un pannello dietro un reverse proxy (vedi la sezione sulla protezione). Fonte: note di rilascio v15.5.0 e documentazione della configurazione opzionale del progetto.

Questo file segue quello ufficiale, con una modifica voluta: l'interfaccia web è pubblicata solo su 127.0.0.1, quindi il pannello di amministrazione non è mai raggiungibile da Internet e lo apri tramite un tunnel SSH. Vuoi un pannello HTTPS sul tuo dominio con Caddy, o un primo avvio del tutto automatico? Il nostro generatore docker-compose per wg-easy scrive questa variante per te.

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy:15
    container_name: wg-easy
    environment:
      - INSECURE=true   # panel over plain HTTP, reached only through an SSH tunnel
    networks:
      wg:
        ipv4_address: 10.42.42.42
        ipv6_address: fdcc:ad94:bacf:61a3::2a
    volumes:
      - etc_wireguard:/etc/wireguard
      - /lib/modules:/lib/modules:ro
    ports:
      - "51820:51820/udp"             # WireGuard data: open to the internet
      - "127.0.0.1:51821:51821/tcp"   # web UI: bound to localhost only
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.all.forwarding=1
      - net.ipv6.conf.default.forwarding=1

networks:
  wg:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: 10.42.42.0/24
        - subnet: fdcc:ad94:bacf:61a3::/64

volumes:
  etc_wireguard:

Cosa fa ogni parte, e dove di solito si rompe:

  • 127.0.0.1:51821:51821/tcp tiene il pannello fuori dall'interfaccia pubblica. Conta più di quanto sembri: le porte pubblicate da Docker scavalcano UFW, quindi un semplice "51821:51821/tcp" è aperto al mondo anche se ufw status dice il contrario.
  • INSECURE=true serve perché qui il pannello è servito in HTTP semplice (la cifratura la fa il tunnel SSH). Senza, la v15 marca il cookie di accesso come Secure, il browser lo scarta in HTTP e torni alla pagina di login a ogni tentativo.
  • cap_add: NET_ADMIN e sysctls: net.ipv4.ip_forward=1 permettono al container di creare l'interfaccia WireGuard e di instradare per i tuoi client. Se manca uno dei due, il tunnel si connette e poi non instrada nulla.
  • Il volume con nome etc_wireguard contiene il database con tutte le chiavi e i client, quindi docker compose down seguito da up conserva i tuoi dispositivi.

Mettilo al suo posto e avvialo, con la struttura di cartelle della documentazione ufficiale:

sudo mkdir -p /etc/docker/containers/wg-easy
cd /etc/docker/containers/wg-easy
sudo nano docker-compose.yml   # paste the file above
sudo docker compose up -d
sudo docker compose logs -f wg-easy   # Ctrl+C once it is listening

Poi apri il pannello dal tuo computer, attraverso il tunnel:

# on your own computer, not on the server
ssh -L 51821:127.0.0.1:51821 user@YOUR_SERVER_IP
# then open http://localhost:51821 in your browser

Primo avvio: la procedura guidata (addio PASSWORD_HASH)

Il PASSWORD_HASH bcrypt e il comando wgpw, a cui ogni tutorial v14 dedica una sezione, non esistono più. Alla prima visita la v15 apre invece una procedura guidata:

  1. Crea l'account di amministrazione: nome utente e password. wg-easy salva da solo la password come hash argon2, quindi non c'è nulla da generare né da proteggere con escape in un file .env.
  2. «Hai una configurazione esistente?» Rispondi No per un'installazione nuova (Sì è l'importazione della v14, più sotto).
  3. Host e porta: l'IP pubblico o il dominio che i client chiameranno (un indirizzo IPv6 va tra parentesi quadre, come [2001:db8::1]) e la porta UDP, 51820 se non hai cambiato la mappatura. I client ricevono esattamente questo valore come Endpoint.

DNS, intervallo di indirizzi dei client e allowed IPs predefiniti si impostano ora nel pannello di amministrazione, non più con variabili d'ambiente. Per saltare la procedura (Ansible, cloud-init), la v15 legge INIT_ENABLED=true con INIT_USERNAME, INIT_PASSWORD, INIT_HOST e INIT_PORT solo al primissimo avvio; rimuovile quando il container è partito, così la password non resta nel file. Il generatore può scrivere queste righe per te.

Password dimenticata? Reimpostala dal server:

cd /etc/docker/containers/wg-easy
sudo docker compose exec -it wg-easy cli db:admin:reset

Se arrivi dalla v14

Non esiste un aggiornamento sul posto. Nel vecchio pannello, clicca Backup per scaricare wg0.json e annota le vecchie variabili d'ambiente, esegui docker compose down, avvia il file v15 qui sopra, poi rispondi Sì nella procedura e carica wg0.json: chiavi e client vengono importati, le vecchie variabili no, quindi reimposta DNS e allowed IPs nel pannello di amministrazione. Un limite netto della guida di migrazione: gli host armv6 e armv7 (Raspberry Pi più vecchi) non possono passare alla v15 e devono restare fissati su :14.

Resti sulla v14 o abbandoni il pannello? Lo stesso file di backup si può incollare in WireGuard Manager, la nostra dashboard ospitata (gratis per 1 server e 3 peer): poiché wg0.json contiene la chiave privata di ogni client, il .conf e il codice QR di ogni dispositivo tornano subito disponibili, e genera un wg0.conf normale per wg-quick se dismetti wg-easy. L'importazione non cambia nulla sul server.

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.

Client importato ma non funziona niente? Tre cause coprono quasi tutti i casi, e ognuna ha il suo strumento. Lo stato resta senza handshake: la porta UDP 51820 non arriva al container, usa il verificatore di porta WireGuard, che scrive la regola del firewall del tuo host (ufw, firewalld, nftables, iptables) e un test tcpdump che mostra se i pacchetti arrivano. Handshake corretto ma pagine bloccate o caricate a metà: un problema di MTU, che il calcolatore MTU dimensiona per la tua linea (riporta il valore nella config del client). Vuoi far passare nel tunnel solo una parte del traffico, o continuare a vedere la rete di casa: il calcolatore AllowedIPs dà l'elenco esatto da incollare negli allowed IPs predefiniti di wg-easy.

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:

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

  2. Password robusta, poi 2FA. La v15 offre l'accesso a due fattori TOTP: apri il menu in alto a destra, poi Account, attiva l'autenticazione a due fattori e scansiona il codice QR con la tua app di autenticazione. Tratta l'accesso al pannello come una password di root.

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

    Dalla v15.5.0 imposta anche TRUSTED_PROXIES con l'indirizzo di origine del tuo proxy (per un container Caddy sulla stessa rete Docker, il suo IP su quella rete). wg-easy leggerà X-Forwarded-Host e X-Forwarded-For solo da quell'indirizzo, e gli accessi falliti vengono registrati con il vero IP del client: uno strumento come CrowdSec blocca l'attaccante e non il tuo proxy. Un indirizzo scritto male impedisce l'avvio del container: controlla docker compose logs dopo la modifica.

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

Per avere l'essenziale a portata di mano: la WireGuard Cheat Sheet gratuita (PDF di 5 pagine in inglese, download diretto, senza registrazione) raccoglie le tabelle di keepalive e MTU, i comandi wg genkey/wg pubkey/wg genpsk e i quattro controlli del server in una riga da lanciare per primi quando un tunnel non fa passare traffico. Il WireGuard Self-Hosting Kit a pagamento (9 USD, in inglese) aggiunge una checklist di diagnosi con 12 cause e 11 modelli di configurazione, tra cui una per wg-easy.

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.

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 il DNS nel pannello di amministrazione 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.

Link di affiliazione

Prezzo verificato il 17/10/2026, durata 24 mesi

Domande frequenti

Che cos'è wg-easy?
wg-easy è un progetto open-source che avvolge WireGuard in una piccola interfaccia web. Lo esegui come un unico contenitore Docker; gestisce il server WireGuard al posto tuo e ti dà una dashboard nel browser per aggiungere e rimuovere client, scaricare o scansionare via QR le loro configurazioni e osservare upload/download in tempo reale per peer. La cifratura resta WireGuard puro che gira nel kernel dell'host - wg-easy si occupa solo della gestione dei peer e dell'interfaccia, quindi non c'è alcuna penalizzazione di prestazioni rispetto a una configurazione scritta a mano.
È sicuro esporre wg-easy a Internet?
Solo la porta dati di WireGuard (UDP 51820 di default) deve affacciarsi su Internet. La porta web di amministrazione (51821) NON deve essere aperta al mondo - chiunque la raggiunga e indovini o forzi la password può crearsi un client VPN. Limita la porta web alla tua IP con una regola del firewall, mettila dietro un reverse proxy con TLS, oppure raggiungila attraverso il tunnel stesso. Nella v15, lega il pannello a 127.0.0.1 e raggiungilo con un tunnel SSH, oppure servilo in HTTPS, e attiva l'accesso a due fattori integrato: un pannello esposto è il rischio principale.
Qual è la differenza tra wg-easy e PiVPN?
Entrambi semplificano WireGuard, ma in modo diverso. PiVPN è uno script di installazione che imposta WireGuard (o OpenVPN) direttamente sull'host e ti dà comandi CLI (pivpn add, pivpn -qr) per gestire i peer - niente contenitore, niente interfaccia web. wg-easy gira come contenitore Docker e tutto il suo scopo è la dashboard nel browser. Scegli PiVPN se preferisci un'installazione bare-metal guidata da terminale su un Raspberry Pi o un VPS; scegli wg-easy se vuoi un pannello cliccabile e statistiche in tempo reale.
Mi serve ancora un VPS per wg-easy?
Se vuoi una VPN raggiungibile da ovunque con un IP pubblico stabile, sì - wg-easy ha comunque bisogno di un host con un indirizzo instradabile, esattamente come qualsiasi server WireGuard. Un piccolo VPS (4-6 €/mese) è la scelta standard e satura facilmente la sua banda con WireGuard. Solo per l'accesso remoto a una rete domestica, puoi eseguire wg-easy su un server casalingo dietro al port forwarding, ma perdi l'IP statico pulito.
Perché wg-easy si connette ma non instrada traffico?
Quasi sempre il firewall dell'host o l'inoltro IP. Il contenitore ha bisogno della capacità NET_ADMIN e l'host deve inoltrare i pacchetti (net.ipv4.ip_forward=1) - wg-easy lo imposta nel suo file compose, ma il gruppo di sicurezza separato di un provider cloud può comunque bloccare l'UDP 51820. Apri quella porta nel firewall del provider, non solo sull'host. Se l'handshake si completa ma le pagine restano bloccate, il sospettato successivo è la MTU e non wg-easy in sé.