5.7 KiB
Runbook — VPN NAS↔VPS + pont SAV + api.navier-instruments.com
Objectif : exposer un seul service public (
api.navier-instruments.com) qui relaie vers le pont (interne, sur le NAS), lequel parle à la gestion (Dolibarr) + ThingsBoard. La gestion n'est JAMAIS exposée. Documenté pour être reproductible — ne rien casser.
Architecture cible
public ──HTTPS──▶ api.navier-instruments.com
(VPS 78.138.45.8, Nginx Proxy Manager + SSL)
│
▼ VPN OpenVPN (le VPS est client du serveur OpenVPN du NAS)
pont @navier/sav-pont (NAS 10.8.0.1:8080)
│
┌─────────┴─────────┐
▼ ▼
Dolibarr (interne) ThingsBoard (navier-cloud.com)
Inventaire (état 2026-07-13)
| Élément | Détail |
|---|---|
| NAS | Synology N_instruments, LAN 192.168.10.104, DSM 6.2.4. SSH : ssh nas (SteveC, port 1981, clé id_ed25519_nas). |
| NAS = serveur OpenVPN | server 10.8.0.0/24, proto udp6, port 1194, dev tun. NAS = 10.8.0.1. IP publique actuelle = IPv6 2a05:6e02:106c:fc10:.... |
| Pont | @navier/sav-pont (Node ≥20, TS). Source propre = repo Ecosystem-Navier/SAV/pont (Dockerfile, écoute :8080, métriques :9100). ⚠️ Le dossier /volume1/docker/sav/ du NAS est un dump de build cassé (noms mélangés) → NE PAS l'utiliser. |
| Gestion | Dolibarr en Docker sur le NAS (/volume1/docker/dolibarr/, image tuxgasy/dolibarr + mariadb). Interne uniquement. |
| VPS | 78.138.45.8, ssh navier-vps (user deploy). NPM (conteneur) fait le reverse-proxy + SSL. |
Choix du VPN — recommandation : WireGuard (VPS serveur / NAS client)
Contrainte : le serveur OpenVPN du NAS est en udp6 + IP publique IPv6 → dépendance IPv6 ou
port‑forward box. On l'évite en inversant le sens : le VPS (IPv4 publique stable) = serveur,
le NAS = client qui compose (dial‑out) → aucun port à ouvrir sur la box, pas d'IPv6.
Reco : WireGuard (moderne, léger, self‑hosted/souverain, reconnexion propre). Sur DSM 6.2.4 = conteneur Docker.
Sous‑réseau VPN choisi : 10.9.0.0/24 (VPS = 10.9.0.1, NAS = 10.9.0.2).
- Alternative simplicité : Tailscale (WireGuard clé‑en‑main, gère NAT/IPv6/clés) — service tiers.
- Alternative « réutiliser l'existant » : OpenVPN NAS‑serveur (voir annexe) — plus contraignant.
Étape 1 — VPN WireGuard (VPS serveur, NAS client)
- VPS (root) — serveur :
sudo apt-get update && sudo apt-get install -y wireguard umask 077; wg genkey | tee /etc/wireguard/vps.key | wg pubkey > /etc/wireguard/vps.pub # /etc/wireguard/wg0.conf : # [Interface] Address=10.9.0.1/24 ListenPort=51820 PrivateKey=<contenu vps.key> # [Peer] PublicKey=<nas.pub> AllowedIPs=10.9.0.2/32 sudo systemctl enable --now wg-quick@wg0 sudo ufw allow 51820/udp # (ou règle firewall équivalente) - NAS (Docker, root) — client (conteneur
linuxserver/wireguard) :mkdir -p /volume1/docker/wireguard # /volume1/docker/wireguard/wg_confs/wg0.conf : # [Interface] Address=10.9.0.2/32 PrivateKey=<contenu nas.key> # [Peer] PublicKey=<vps.pub> Endpoint=<IP_PUBLIQUE_VPS>:51820 AllowedIPs=10.9.0.1/32 PersistentKeepalive=25 docker run -d --name wireguard --cap-add NET_ADMIN --restart unless-stopped \ -v /volume1/docker/wireguard:/config linuxserver/wireguard - Vérifier :
ssh navier-vps 'ping -c2 10.9.0.2'(le VPS doit joindre le NAS). Le pont sera en10.9.0.2:8080. (Générer les clés :wg genkey|tee nas.key|wg pubkey>nas.pubcôté NAS ; échanger les .pub entre les deux.)
Étape 2 — Déployer le pont (sur le NAS, proprement)
Depuis la source du repo (pas le dossier cassé). Le pont a un Dockerfile (écoute :8080).
# sur le NAS (root — Docker DSM 6)
mkdir -p /volume1/docker/sav-pont && cd /volume1/docker/sav-pont
# récupérer Ecosystem-Navier/SAV/pont (git clone ou rsync du sous-dossier)
docker build -t navier-sav-pont .
# pont.env = VRAIE config (URL Dolibarr interne, ThingsBoard, secrets) — à recréer proprement
docker run -d --name sav-pont --restart unless-stopped \
-p 8080:8080 --env-file /volume1/docker/sav-pont/pont.env navier-sav-pont
curl -s http://localhost:8080/health # doit répondre 200
Étape 3 — Exposer api.navier-instruments.com (VPS)
- DNS (LWS) :
api.navier-instruments.com A 78.138.45.8(+AAAAsi IPv6 VPS). - NPM (Nginx Proxy Manager) : Proxy Host
api.navier-instruments.com→10.8.0.1:8080(le pont via le VPN) + SSL Let's Encrypt (Force SSL, HTTP/2). - Vérifier :
curl -I https://api.navier-instruments.com/health→ 200.
Étape 4 — Brancher les consommateurs
- Espace client, PWA SAV atelier, webapp → base API =
https://api.navier-instruments.com(le seul point d'entrée).
Résilience / ne rien casser
- VPN VPS :
openvpn-client@nasenenable→ reconnexion auto. Si NAS/box down →api.down → les consommateurs doivent dégrader proprement (cache / message « temporairement indisponible »). - Dolibarr jamais exposé — accessible seulement via le pont, scopé par client.
- Ne pas exposer le port 9100 (métriques) publiquement.
- Sauvegardes : base mariadb Dolibarr (sur le NAS) — vérifier la tâche de sauvegarde Synology.
Vérifs de bout en bout
ssh navier-vps 'ping -c2 10.8.0.1 && curl -s http://10.8.0.1:8080/health'
curl -I https://api.navier-instruments.com/health