# WireGuard VPN con wg-easy (Docker) Una configurazione Docker pronta all'uso per eseguire un server VPN WireGuard con interfaccia web [wg-easy](https://github.com/wg-easy/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 ```bash git clone https://santantonio.sytes.net/davide/vpn.git cd vpn ``` ### 2. Crea il file `.env` ```bash cp .env.example .env ``` L'unica variabile obbligatoria è `TZ` (già precompilata con `Europe/Rome`). Le porte possono essere lasciate ai valori di default. | Variabile | Descrizione | Default | |---|---|---| | `TZ` | Fuso orario (formato IANA) | `Europe/Rome` | | `WG_PORT` | Porta UDP WireGuard | `51820` | | `WG_UI_PORT` | Porta TCP interfaccia web | `51821` | > **Nota v15:** host VPN, password e DNS si configurano dalla web UI al primo avvio. ### 3. Apri la porta sul router Inoltra la porta **UDP 51820** (o quella scelta in `WG_PORT`) verso l'IP locale del server. ### 4. Avvia il container ```bash docker compose up -d ``` Al primo avvio, un init container crea automaticamente `wg-data/` con permessi `700` prima che wg-easy scriva le chiavi private. ### 5. Completa il setup dalla web UI ``` http://IP_DEL_TUO_SERVER:51821 ``` Al primo avvio appare un wizard che guida nella configurazione di password, hostname DDNS e DNS per i client. Dopo il setup puoi aggiungere client, scaricare configurazioni 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 (NON committato) ├── .gitignore ├── README.md └── wg-data/ # Generato dal container al primo avvio (ignorato da git) ├── wg0.conf # Configurazione WireGuard con chiavi private └── wg-easy.db # Database interno wg-easy ``` --- ## Aggiornare wg-easy Esegui mensilmente per ricevere patch di sicurezza: ```bash docker compose pull docker compose up -d ``` --- ## Sicurezza - `wg-data/` contiene chiavi crittografiche private ed è completamente ignorata da git. I permessi `700` vengono impostati automaticamente dall'init container al primo avvio. - `.env` contiene variabili locali specifiche del server. Non committarlo.