Rimuove le variabili d'ambiente obsolete (WG_HOST, PASSWORD_HASH, WG_DEFAULT_DNS) ora gestite dalla web UI. Aggiunge INSECURE=true per accesso HTTP locale. Pulisce i commenti superflui dal compose. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
WireGuard VPN con wg-easy (Docker)
Una configurazione Docker pronta all'uso per eseguire un server VPN WireGuard con interfaccia web wg-easy, ideale per Raspberry Pi o qualsiasi server Linux.
Prerequisiti
- Docker e Docker Compose installati sul server
- Una porta UDP aperta sul router/firewall (default: 51820)
- Un indirizzo IP pubblico statico oppure un hostname DDNS (es. DuckDNS, No-IP)
Configurazione rapida
1. Clona il repository
git clone https://santantonio.sytes.net/davide/vpn.git
cd vpn
2. Crea il file .env
cp .env.example .env
Apri .env con un editor e compila i valori richiesti:
| Variabile | Descrizione | Obbligatoria |
|---|---|---|
WG_HOST |
IP pubblico o hostname DDNS del server | Sì |
PASSWORD_HASH |
Hash della password per la UI web (vedi sotto) | Sì |
TZ |
Fuso orario (formato IANA, es. Europe/Rome) |
Sì |
WG_PORT |
Porta UDP WireGuard (default: 51820) |
No |
WG_UI_PORT |
Porta TCP interfaccia web (default: 51821) |
No |
WG_DEFAULT_DNS |
DNS inviati ai client (default: 1.1.1.1,8.8.8.8) |
No |
3. Genera e imposta la password
La password non si scrive in chiaro nel file .env: va convertita in un hash (una stringa cifrata che wg-easy usa per verificare il login senza conservare la password originale).
Passo 1 — Scegli la password che vuoi usare per accedere all'interfaccia web, poi esegui questo comando sostituendo LatuaPassword con quella scelta:
docker run --rm -it ghcr.io/wg-easy/wg-easy wgpw 'LatuaPassword'
Passo 2 — Il comando stampa una riga simile a questa:
PASSWORD_HASH='$2a$12$cDMCiMmFTuMOlT1E4BvxEO4CJfzMKSanRZSMqiE1234abcXYZ'
Passo 3 — Copia solo la parte dopo PASSWORD_HASH=, senza le virgolette singole. Nel file .env deve apparire così:
PASSWORD_HASH=$2a$12$cDMCiMmFTuMOlT1E4BvxEO4CJfzMKSanRZSMqiE1234abcXYZ
Attenzione: non aggiungere virgolette, spazi o altri caratteri intorno al valore. Copia e incolla esattamente quello che hai ottenuto.
4. Apri la porta sul router
Inoltra la porta UDP 51820 (o quella scelta in WG_PORT) verso l'IP locale del server.
5. Avvia il container
docker compose up -d
Al primo avvio la directory wg-data/ viene creata automaticamente con tutte le chiavi crittografiche. Non è necessario modificarla manualmente.
6. Accedi all'interfaccia web
http://IP_DEL_TUO_SERVER:51821
Da qui puoi aggiungere client, scaricare i file di configurazione e generare QR code per dispositivi mobili.
Struttura del progetto
vpn/
├── docker-compose.yml # Definizione del servizio
├── .env.example # Template variabili (committato)
├── .env # Variabili locali con segreti (NON committato)
├── .gitignore
├── README.md
└── wg-data/ # Generato automaticamente dal container (NON committato)
├── wg0.conf # Configurazione WireGuard (chiavi reali)
└── wg0.json # Stato interno wg-easy (chiavi reali)
Aggiornare wg-easy
docker compose pull
docker compose up -d
Sicurezza
wg-data/contiene chiavi crittografiche private. Non committarla mai su Git..envcontiene la password (hash) e il tuo hostname. Non committarlo.- Entrambi sono esclusi da
.gitignore.