Files
vpn/README.md
T

93 lines
2.5 KiB
Markdown
Raw Normal View History

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
```
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
| Variabile | Descrizione | Default |
2026-04-12 23:15:02 +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
> **Nota v15:** host VPN, password e DNS si configurano dalla web UI al primo avvio.
2026-04-12 23:15:02 +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.
### 4. Avvia il container
2026-04-12 23:15:02 +02:00
```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
2026-04-12 23:15:02 +02:00
```
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.
2026-04-12 23:15:02 +02:00
---
## Struttura del progetto
```
vpn/
2026-04-12 23:15:02 +02:00
├── docker-compose.yml # Definizione del servizio
├── .env.example # Template variabili (committato)
├── .env # Variabili locali (NON committato)
2026-04-12 23:15:02 +02:00
├── .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
2026-04-12 23:15:02 +02:00
```
---
## Aggiornare wg-easy
Esegui mensilmente per ricevere patch di sicurezza:
2026-04-12 23:15:02 +02:00
```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.