security: harden wg-init and wg-easy container isolation

- wg-init: isolate with network_mode:none, drop repo mount, use
  explicit PUID/PGID env vars instead of stat trick
- wg-easy: add read_only filesystem, /run tmpfs, no-new-privileges
- .env.example: simplify and document PUID/PGID

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-07 08:32:20 +02:00
parent fc5d6209c1
commit 9016605f0d
2 changed files with 22 additions and 30 deletions
+11 -28
View File
@@ -1,36 +1,19 @@
# ============================================================
# WireGuard VPN — Configurazione locale
# Copia .env.example in .env e compila i valori richiesti.
# ============================================================
# Fuso orario (formato IANA)
# Lista completa: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# Fuso orario IANA — obbligatorio
TZ=Europe/Rome
# --- OPZIONALI (valori di default mostrati) ---
# UID/GID dell'utente host proprietario di wg-data/ (trova con: id -u && id -g)
# PUID=1000
# PGID=1000
# Porta UDP WireGuard
WG_PORT=51820
# Porte esposte sull'host (opzionali, default mostrati)
# WG_PORT=51820
# WG_UI_PORT=51821
# Porta TCP interfaccia web
WG_UI_PORT=51821
# --- OPZIONALI — Limiti risorse container (SBC) ---
# Decommenta e adatta alla RAM disponibile:
# 512 MB RAM (RPi 3B) → WG_MEM_LIMIT=96m (reale: ~37 MB, 96 m è già doppio)
# 1 GB RAM (RPi 3B+) → WG_MEM_LIMIT=128m
# 2 GB+ RAM (RPi 4/5) → WG_MEM_LIMIT=256m (default)
# Limiti risorse container (opzionali — adatta alla RAM disponibile)
# 512 MB → WG_MEM_LIMIT=96m
# 1 GB → WG_MEM_LIMIT=128m
# 2 GB+ → WG_MEM_LIMIT=256m ← default
# Tenere WG_MEMSWAP_LIMIT = WG_MEM_LIMIT per disabilitare lo swap del container.
# Su single-core (Pi Zero / Pi 1) impostare WG_CPUS=0.75.
#
# ATTENZIONE — RPi 3 con uptime lungo: il processo Node.js può crescere nel
# tempo. Con 1 GB di RAM totale e OS+Docker che occupano ~350 MB, un limite
# di 256 m lascia pochissimo margine; il kernel OOM-killa SSH prima del
# container. Usare 96-128 m e assicurarsi che lo swap host sia >= 512 MB
# (vedi CLAUDE.md §SBC per il comando).
# WG_MEM_LIMIT=256m
# WG_MEMSWAP_LIMIT=256m
# WG_CPUS=1.0
# NOTA: host VPN, password e DNS si configurano dalla web UI al primo avvio —
# non servono variabili d'ambiente per questi valori (comportamento v15+).