- Published on
Come ho creato una rete privata sicura con WireGuard e Proxmox
- Authors

- Name
- Alessandro Iannacone
Una delle cose più importanti in un'infrastruttura self-hosted è la sicurezza del traffico interno. Per proteggere i miei container, VM e servizi come Jenkins, Portainer, Grafana o backend API, ho configurato una rete privata VPN usando WireGuard.
WireGuard è leggero, moderno, facile da configurare e perfetto per reti interne su Proxmox.
🎯 Obiettivo
Creare una VPN che:
- Isoli tutto il traffico interno tra i nodi
- Consenta solo accessi autenticati tramite chiavi
- Possa essere estesa ad altri dispositivi o server
- Non esponga porte sensibili su internet
🏗️ Ambiente
- Proxmox VE 8.x
- 1 nodo principale + più container/VM
- OS: Debian 12 su ogni nodo/container
- VPN interna gestita via WireGuard
🔧 Installazione di WireGuard
Su ogni nodo (VM o container) installo WireGuard:
sudo apt update
sudo apt install wireguard
Creo la directory:
mkdir -p /etc/wireguard
cd /etc/wireguard
Genero le chiavi:
wg genkey | tee privatekey | wg pubkey > publickey
🔐 Configurazione del server (es. 10.10.0.1)
Creo /etc/wireguard/wg0.conf:
[Interface]
Address = 10.10.0.1/24
PrivateKey = <CHIAVE_PRIVATA_SERVER>
ListenPort = 51820
# Abilita IP forwarding
PostUp = sysctl -w net.ipv4.ip_forward=1
PostDown = sysctl -w net.ipv4.ip_forward=0
🔗 Configurazione di un peer (es. container Jenkins 10.10.0.2)
[Interface]
Address = 10.10.0.2/24
PrivateKey = <CHIAVE_PRIVATA_CLIENT>
[Peer]
PublicKey = <CHIAVE_PUBBLICA_SERVER>
Endpoint = <IP_SERVER>:51820
AllowedIPs = 10.10.0.1/32
PersistentKeepalive = 25
🚀 Avvio del tunnel
Su ogni nodo:
wg-quick up wg0
Per rendere persistente al boot:
systemctl enable wg-quick@wg0
📦 Esempi d’uso in ambienti DevOps
Una volta connessi:
- Jenkins può fare deploy via SSH solo su IP interni (es.
10.10.0.3) - Il monitoring Prometheus/Grafana può raccogliere metriche in rete privata
- I container Docker possono essere raggiunti tramite
10.10.x.xvia Nginx Proxy Manager (anch’esso interno)
🔒 Sicurezza
- Le chiavi sono asimmetriche e uniche per ogni nodo
- Nessuna porta è esposta direttamente su WAN
- Il traffico è cifrato con Curve25519
- Uso regole firewall per permettere solo il traffico
wg0
Esempio (iptables):
iptables -A INPUT -i wg0 -j ACCEPT
iptables -A FORWARD -i wg0 -j ACCEPT
🧪 Debug utile
Controllo lo stato del tunnel:
wg show
Log di sistema:
journalctl -u wg-quick@wg0
✅ Conclusione
WireGuard mi ha permesso di collegare in modo sicuro tutti i miei servizi Proxmox-based senza esporre nulla su internet. È veloce, stabile e facilmente estendibile a nuovi peer o server remoti.
Se lavori con Jenkins, backup, automazione o hosting privato, una VPN interna è il punto di partenza per un’infrastruttura sicura.
💬 Vuoi replicare la mia configurazione?
Scrivimi via email o apri una discussione su GitHub per esempi reali e script avanzati!