Progetti
TailscaleLinuxDockerWireGuardNginxAnsible

Rete VPN mesh multi-sede + server self-hosted

Un'azienda con tre sedi (due uffici + datacenter privato) e zero connettività sicura tra di esse. I dipendenti accedevano ai server tramite credenziali FTP in chiaro. L'obiettivo: rete privata cifrata, accesso remoto per i dipendenti, servizi self-hosted sostituendo tool SaaS costosi, tutto gestibile senza un team IT dedicato.

Architettura

Mesh VPN con Tailscale

Tailscale usa WireGuard come layer di cifratura ma aggiunge il coordinamento automatico dei peer tramite un control plane centralizzato. Ogni nodo (server, laptop, telefono) riceve un IP stabile nella subnet 100.x.x.x e comunica direttamente con gli altri peer senza passare per un server centrale quando possibile (NAT traversal).

La configurazione per ogni sede:

Sede A (ufficio):  subnet router → espone 192.168.1.0/24
Sede B (ufficio):  subnet router → espone 192.168.2.0/24
Datacenter:        exit node + subnet router → espone 10.0.0.0/24

I subnet router permettono ai dispositivi già in rete locale di essere raggiungibili da tutta la mesh senza installare Tailscale su ciascuno.

Topologia mesh: tre sedi connesse con subnet router Tailscale

Server self-hosted

Sul datacenter, una stack Docker Compose con sei servizi che sostituiscono altrettanti SaaS:

Servizio self-hosted Sostituisce
Gitea GitHub (repo privati)
Nextcloud Google Drive
Vaultwarden 1Password Business
Grafana + Prometheus Datadog
Nginx Proxy Manager
Portainer

Tutto raggiungibile esclusivamente via Tailscale: nessun servizio esposto su internet pubblico. Nginx Proxy Manager gestisce i certificati Let's Encrypt via DNS challenge (nessuna porta 80/443 aperta).

Provisioning con Ansible

La configurazione dei server è completamente automatizzata con Ansible. Un singolo playbook gestisce:

  • Installazione e hardening del sistema (SSH solo con chiavi, fail2ban, ufw)
  • Installazione Docker e Docker Compose
  • Deploy dei service con le variabili d'ambiente corrette
  • Rinnovo automatico certificati
  • Backup notturno su storage S3-compatible (Backblaze B2)

Il playbook è idempotente: rieseguirlo su un server già configurato non cambia nulla.

Accesso remoto dipendenti

Ogni dipendente installa Tailscale sul proprio dispositivo. L'accesso ai servizi interni è immediato, da qualsiasi rete. Per i dispositivi aziendali, il profilo Tailscale viene distribuito via MDM.

ACL Tailscale configurate per gruppo:

"action": "accept",
"src": ["group:employees"],
"dst": ["tag:internal-services:*"]

"action": "accept",
"src": ["group:admins"],
"dst": ["*:*"]

Gli impiegati vedono solo i servizi interni. Gli admin vedono tutto.

ACL e gruppi: permessi differenziati per ruolo nella mesh

Monitoring

Prometheus raccoglie metriche da tutti i container via cAdvisor e Node Exporter. Grafana visualizza dashboard per:

  • Utilizzo CPU/RAM/disco per server
  • Traffico di rete per nodo Tailscale
  • Uptime dei servizi
  • Alert via email su soglie critiche

Risultati

  • Latenza inter-sede: 8-15ms (WireGuard nativo, vs 35-50ms del precedente tunnel SSL)
  • Risparmio SaaS: ~€800/anno eliminando GitHub Pro + Google Workspace + 1Password Business
  • Zero accessi non autorizzati dall'implementazione
  • RTO (recovery time objective) per un server: <20 minuti con Ansible da zero