df78675198
- .gitignore: remove .gitkeep exception, ignore wg-data/ entirely and fix stale comment (directory is generated by the container, not created manually) - README: document init container behaviour in setup step 4, update project structure (wg0.json -> wg-easy.db), align security section Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
93 lines
2.5 KiB
Markdown
93 lines
2.5 KiB
Markdown
# 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.
|