2026-04-12 23:15:02 +02:00
# 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
```
2026-05-04 23:58:36 +02:00
L'unica variabile obbligatoria è `TZ` (già precompilata con `Europe/Rome` ). Le porte possono essere lasciate ai valori di default.
2026-04-12 23:15:02 +02:00
2026-05-04 23:58:36 +02:00
| Variabile | Descrizione | Default |
2026-04-12 23:15:02 +02:00
|---|---|---|
2026-05-04 23:58:36 +02:00
| `TZ` | Fuso orario (formato IANA) | `Europe/Rome` |
| `WG_PORT` | Porta UDP WireGuard | `51820` |
| `WG_UI_PORT` | Porta TCP interfaccia web | `51821` |
2026-04-12 23:15:02 +02:00
2026-05-04 23:58:36 +02:00
> **Nota v15:** host VPN, password e DNS si configurano dalla web UI al primo avvio.
2026-04-12 23:15:02 +02:00
2026-05-04 23:58:36 +02:00
### 3. Apri la porta sul router
2026-04-12 23:15:02 +02:00
Inoltra la porta **UDP 51820 ** (o quella scelta in `WG_PORT` ) verso l'IP locale del server.
2026-05-04 23:58:36 +02:00
### 4. Avvia il container
2026-04-12 23:15:02 +02:00
``` bash
docker compose up -d
```
2026-05-07 08:07:57 +02:00
Al primo avvio, un init container crea automaticamente `wg-data/` con permessi `700` prima che wg-easy scriva le chiavi private.
2026-05-04 23:58:36 +02:00
### 5. Completa il setup dalla web UI
2026-04-12 23:15:02 +02:00
```
http://IP_DEL_TUO_SERVER:51821
```
2026-05-04 23:58:36 +02:00
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.
2026-04-12 23:15:02 +02:00
---
## Struttura del progetto
```
2026-05-03 22:41:38 +02:00
vpn/
2026-04-12 23:15:02 +02:00
├── docker-compose.yml # Definizione del servizio
├── .env.example # Template variabili (committato)
2026-05-04 23:58:36 +02:00
├── .env # Variabili locali (NON committato)
2026-04-12 23:15:02 +02:00
├── .gitignore
├── README.md
2026-05-07 08:07:57 +02:00
└── 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
2026-04-12 23:15:02 +02:00
```
---
## Aggiornare wg-easy
2026-05-04 23:58:36 +02:00
Esegui mensilmente per ricevere patch di sicurezza:
2026-04-12 23:15:02 +02:00
``` bash
docker compose pull
docker compose up -d
```
---
## Sicurezza
2026-05-07 08:07:57 +02:00
- `wg-data/` contiene chiavi crittografiche private ed è completamente ignorata da git. I permessi `700` vengono impostati automaticamente dall'init container al primo avvio.
2026-05-04 23:58:36 +02:00
- `.env` contiene variabili locali specifiche del server. Non committarlo.