Vue d'ensemble
Documentation Infrastructure OBBConnect — Montréal
Version
v5.1 — 04 April 2026
Serveur
homeserver · 192.168.1.21
Matériel
GMKtec NucBox K8 Plus · AMD Ryzen 7 8845HS · 32 Go · 1 To SSD
OS
Ubuntu 24.04.4 LTS Server
Réseau
UniFi Dream Machine SE · VLAN 1/30/50/60
Domaine
obbconnect.net · Cloudflare Zero Trust : obbconnect
Document de référence opérationnelle pour l'administration du homeserver domotique OBBConnect. Généré automatiquement — toujours à jour.
Section 1
Inventaire des machines
Rôles et adresses IP de chaque équipement
| Machine | IP | VLAN | Rôle |
|---|---|---|---|
| homeserver (GMKtec NucBox K8 Plus) | 192.168.1.21 | VLAN 1 Admin | Mini PC principal · AMD Ryzen 7 8845HS · 32 Go · 1 To · Héberge tous les conteneurs Docker |
| QNAP TS-435XeU | 192.168.1.60 | VLAN 1 Admin | NAS — sauvegardes automatiques SMB, serveur NTP primaire |
| Raspberry Pi 4 | 192.168.1.70 | VLAN 1 Admin | Monitoring températures rack — Prometheus + Grafana |
| UDM-SE | 192.168.1.1 | VLAN 1 Admin | UniFi Dream Machine SE — routeur/firewall, VLANs, WireGuard |
| CyberPower UPS | 192.168.1.62 | VLAN 1 Admin | Onduleur réseau — monitoring batterie |
| MacBook Pro | DHCP | VLAN 1 Admin | Poste d'administration — SSH ed25519 via 1Password + Touch ID |
Section 2
Services Docker — homeserver
Gestion via Portainer · Mises à jour automatiques via Watchtower
| Conteneur | Image | Port(s) | URL locale | URL externe |
|---|---|---|---|---|
| homeassistant | ghcr.io/home-assistant/home-assistant:stable | 8123 | http://192.168.1.21:8123 | ha-ext.obbconnect.net |
| music-assistant | ghcr.io/music-assistant/server:latest | 8095/8097 | http://192.168.1.21:8095 | ma-ext.obbconnect.net |
| portainer | portainer/portainer-ce:latest | 9000 | http://192.168.1.21:9000 | — |
| adguardhome | adguard/adguardhome:latest | 53/3000 | http://192.168.1.21:3000 | — |
| nginx-proxy-manager | jc21/nginx-proxy-manager:latest | 80/443/81 | http://192.168.1.21:81 | — |
| graylog (stack) | graylog/graylog + MongoDB + OpenSearch | 9001 | http://192.168.1.21:9001 | — |
| n8n | n8nio/n8n:latest | 5678 | http://192.168.1.21:5678 | — |
| vault | hashicorp/vault:latest | 8200 | http://192.168.1.21:8200 | — |
| cloudflare-ddns | favonia/cloudflare-ddns:latest | — | — | — |
| cloudflared | cloudflare/cloudflared:latest | — | Tunnel sortant | Tunnel ZT |
| watchtower | containrrr/watchtower:latest | — | — | — |
Port 8097 requis pour Music Assistant (streamserver Sonos) — règle firewall IoT → homeserver distincte du port 8095.
Réseaux Docker
| Réseau Docker | Subnet | Usage |
|---|---|---|
| nginx-proxy-manager_default | 172.19.0.0/16 | NPM, AdGuard (172.19.0.3), Graylog, cloudflared |
| bridge (défaut) | 172.17.0.0/16 | homeassistant, portainer, watchtower |
| host | — | music-assistant — utilise directement l'IP du homeserver |
Section 3
Réseau & VLANs
UniFi Dream Machine SE · Zones firewall
| VLAN | Nom | Subnet | Équipements / Usage |
|---|---|---|---|
| VLAN 1 | Admin | 192.168.1.0/24 | homeserver, NAS, Pi, UDM-SE, UPS, MacBook Pro. DNS : 192.168.1.21 |
| VLAN 30 | IoT | 192.168.30.0/24 | Sonos, Philips Hue, Lutron, Apple TV, Shelly EM (à venir) |
| VLAN 50 | Guest | — | THE INVADERS — réseau invités isolé |
| VLAN 60 | Apt | — | 1641 — appartement isolé |
Règles firewall IoT → homeserver
| Règle | Proto | Port | Destination | Raison |
|---|---|---|---|---|
| ALLOW IoT → HA | TCP | 8123 | 192.168.1.21 | Home Assistant API |
| ALLOW IoT → MA API | TCP | 8095 | 192.168.1.21 | Music Assistant commandes |
| ALLOW IoT → MA Stream | TCP | 8097 | 192.168.1.21 | Sonos streamserver audio |
Section 4
Règles UFW — homeserver
Audit complet 26/03/2026 · Mis à jour 29/03/2026
| Règle | Action | Source | Commentaire |
|---|---|---|---|
| Anywhere | ALLOW | 192.168.1.0/24 | Local LAN — accès complet |
| Anywhere | ALLOW | 192.168.30.0/24 | Sonos VLAN — Music Assistant host |
| Anywhere | ALLOW | 192.168.2.0/24 | WireGuard VPN clients ← ajouté 27/03/2026 |
| 22/tcp | ALLOW | 192.168.1.0/24 | SSH — Admin VLAN uniquement |
| 8123/tcp | ALLOW | 172.16.0.0/12 | Home Assistant — réseaux Docker |
| 8095/tcp | ALLOW | 172.19.0.0/16 | Music Assistant — NPM Docker |
| 8200/tcp | ALLOW | 172.19.0.0/16 | HashiCorp Vault — NPM Docker |
| 80/tcp · 443/tcp | ALLOW | Anywhere | NPM HTTP/HTTPS |
| 53/tcp+udp | ALLOW | Anywhere | AdGuard DNS |
| 21064 | ALLOW | 192.168.1.0/24 | HomeKit Bridge — Admin VLAN |
Section 5
Accès distant
VPN · Cloudflare Zero Trust · Tunnels SSH
| Méthode | Portée | Détails | Usage |
|---|---|---|---|
| SSH direct | Local + VPN | ssh homeserver — ed25519 via 1Password + Touch ID | Administration système, Docker CLI |
| WireGuard VPN | Distant | vpn.obbconnect.net:51820 — split-tunnel subnets LAN | Accès complet LAN depuis l'extérieur |
| Cloudflare Zero Trust | Distant sans VPN | Tunnel chiffré — policy Accès OBB (Tutanota, 1 mois) | ha-ext, nas-ext, ups-ext, ma-ext |
| Nabu Casa | Distant (fallback) | Compte iCloud — Alexa + Google Assistant | Apps mobiles HA, assistants vocaux |
| Tunnels SSH | Local + VPN | ssh -N tunnel-[service] — 7 tunnels configurés | Secours si NPM ou VPN indisponible |
Tunnels SSH Mac
| Alias SSH | Port local | URL après tunnel |
|---|---|---|
| tunnel-ha | 18123 | http://localhost:18123 |
| tunnel-portainer | 19000 | http://localhost:19000 |
| tunnel-adguard | 13000 | http://localhost:13000 |
| tunnel-graylog | 19001 | http://localhost:19001 |
| tunnel-nas | 18080 | http://localhost:18080 |
| tunnel-vault | 18200 | http://localhost:18200/ui |
| tunnel-n8n | 15678 | http://localhost:15678 |
Toujours fermer le tunnel avec
Ctrl+C après utilisation.WireGuard VPN
| Paramètre | Valeur |
|---|---|
| Domaine | vpn.obbconnect.net (Cloudflare DNS only, TTL 2 min) |
| Port | 51820/UDP |
| Subnet VPN | 192.168.2.0/24 — gateway 192.168.2.1 |
| Clients | OBB24 (192.168.2.2), MacBook Pro OBB (192.168.2.3), CLIENT_NAS_CATH (192.168.2.4) |
| Split-tunnel | 192.168.2.0/24 + 192.168.1.0/24 + 192.168.30.0/24 |
Fix 27/03/2026 : route statique 192.168.2.0/24 ajoutée dans /etc/netplan/50-cloud-init.yaml + règle UFW ALLOW from 192.168.2.0/24.
Section 6
Nginx Proxy Manager
Certificat SSL wildcard *.obbconnect.net
| Paramètre | Valeur |
|---|---|
| Ports exposés | 80 (HTTP), 443 (HTTPS), 81 (interface admin) |
| Certificat SSL | Wildcard *.obbconnect.net — Let's Encrypt + Cloudflare DNS |
| Expiration cert. | 21 juin 2026 — renouvellement automatique via NPM |
Proxy Hosts HTTPS actifs
| URL publique | Backend | Service |
|---|---|---|
| ha.obbconnect.net | 192.168.1.21:8123 | Home Assistant |
| ma.obbconnect.net | 192.168.1.21:8095 | Music Assistant |
| portainer.obbconnect.net | 192.168.1.21:9000 | Portainer Docker |
| adguard.obbconnect.net | 192.168.1.21:3000 | AdGuard Home |
| graylog.obbconnect.net | 192.168.1.21:9001 | Graylog logs |
| n8n.obbconnect.net | 192.168.1.21:5678 | n8n automatisation |
| npm.obbconnect.net | 127.0.0.1:81 | NPM interface admin |
| vault.obbconnect.net | 192.168.1.21:8200 | HashiCorp Vault |
| nas.obbconnect.net | 192.168.1.60:443 | QNAP NAS |
| grafana.obbconnect.net | 192.168.1.70:3000 | Grafana Pi |
| ups.obbconnect.net | 192.168.1.62 | CyberPower UPS |
Section 7
Cloudflare DNS & Zero Trust
obbconnect.net · Plan Free · team: obbconnect
Entrées DNS actives
| Sous-domaine | Type | Cible | Proxy | Notes |
|---|---|---|---|---|
| vpn | A | 70.24.246.252 | DNS only | WireGuard — IP WAN Bell, MAJ par cloudflare-ddns |
| ha / portainer / graylog / adguard / ma / npm / n8n / vault | A | 192.168.1.21 | DNS only | Services homeserver via NPM |
| nas | A | 192.168.1.60 | DNS only | QNAP NAS via NPM |
| grafana | A | 192.168.1.70 | DNS only | Grafana Pi — accès direct port 3000 |
| ups | A | 192.168.1.62 | DNS only | CyberPower UPS — accès direct |
| home | CNAME | obbconnect-home.pages.dev | Proxied | Dashboard Cloudflare Pages |
| docs | CNAME | obbconnect-home.pages.dev | Proxied | Documentation Cloudflare Pages |
Tunnels Zero Trust exposés
| URL externe | Backend | Notes |
|---|---|---|
| ha-ext.obbconnect.net | homeassistant:8123 | trusted_proxies configuré dans HA |
| nas-ext.obbconnect.net | 192.168.1.60 (HTTPS+NoTLS) | Accès NAS externe |
| ups-ext.obbconnect.net | 192.168.1.62 | Accès UPS externe |
| ma-ext.obbconnect.net | homeassistant:8095 | Accès Music Assistant externe |
Politique Access "Accès OBB" — email Tutanota uniquement, session 1 mois. Applications Access : Home Dashboard + OBB Touch Icon (Bypass Everyone) + docs.obbconnect.net.
Section 8
Home Assistant
Domotique centrale · HACS · Mushroom Cards · Kiosk Mode
| Intégration | Bridge / IP | VLAN | Notes |
|---|---|---|---|
| Philips Hue | Hue Bridge Pro | IoT 30 | Intégration native HA |
| Lutron Caseta | Bridge Pro | IoT 30 | Intégration native HA |
| Sonos | IPs manuelles | IoT 30 | IPs fixes dans configuration.yaml — mDNS ne traverse pas les VLANs |
| Google Cast | Auto-discovery | Admin 1 | Nest Hub, Chromecast, TV Streamer |
| Apple TV Salon | 192.168.1.168 | Admin 1 | Hub HomeKit cross-VLAN |
| Apple TV Loft | 192.168.1.169 | Admin 1 | ATV-LOFT |
| HomeKit Bridge | Port 21064 | Admin 1 | iPhone → ATV Salon → HASS Bridge → HA → IoT |
| Nabu Casa | Cloud (iCloud) | — | Alexa + Google Assistant. 0 entité exposée volontairement |
| DS18B20 x3 | REST → Prometheus | Admin 1 | Températures rack via Pi 192.168.1.70:9090 |
| Music Assistant | 8095 / 8097 | IoT 30 | Sonos multi-pièces — port 8097 streamserver |
Assistants vocaux
| Assistant | Méthode | Status |
|---|---|---|
| Amazon Alexa | Skill 'Home Assistant' via Nabu Casa | Actif |
| Google Assistant | Skill 'Home Assistant Cloud by Nabu Casa' | Actif |
| Synthèse vocale HA | BrigitteNeural — français | Actif |
Section 9
HashiCorp Vault
Gestionnaire de secrets machine · Auto-unseal AWS KMS
| Paramètre | Valeur |
|---|---|
| Image Docker | hashicorp/vault:latest |
| Compose | /opt/docker/compose/vault-compose.yml |
| Config | /opt/docker/vault/config/vault.hcl |
| Port binding | 192.168.1.21:8200 (corrigé le 29/03/2026 — était 127.0.0.1) |
| api_addr | http://192.168.1.21:8200 |
| Auto-unseal | AWS KMS — us-east-2 |
| Accès HTTPS | https://vault.obbconnect.net (via NPM) |
| Accès tunnel SSH | ssh -N tunnel-vault → http://localhost:18200/ui |
| Emergency Kit | 1Password : Vault — Emergency Kit — homeserver |
Secrets engines actifs
| Chemin | Type | Contenu |
|---|---|---|
| obbconnect/backup/unifi | KV | UNIFI_PASS — mot de passe UniFi pour scripts backup |
| obbconnect/backup/rclone | KV | account, key, crypt_password, crypt_password2 — Backblaze B2 |
| obbconnect/ai/anthropic | KV | Clé API Claude — workflows n8n |
Architecture secrets OBBConnect
Règle fondamentale : un humain tape le secret → 1Password. Un processus lit le secret → Vault.
| Coffre | Type | Contenu |
|---|---|---|
| 1Password | Humain | Logins, SSH keys, accès admin, emergency kits, credentials cloud |
| HashiCorp Vault | Machine | Tokens API, credentials scripts, secrets Docker, rclone B2 |
Section 10
n8n — Automatisation
Workflows · Rapport Graylog · Intégrations Telegram
| Paramètre | Valeur |
|---|---|
| Port | 5678 |
| Accès local | http://192.168.1.21:5678 |
| Accès HTTPS | https://n8n.obbconnect.net |
| Tunnel SSH | ssh -N tunnel-n8n → http://localhost:15678 |
Workflows actifs
| Workflow | Déclencheur | Action |
|---|---|---|
| 🔴 Alerte Docker - Services Down | Cron toutes les 5 min | Docker TCP API → Telegram si service down |
| 📊 Rapport Graylog quotidien | Cron 7h00 | Graylog API → Claude Haiku → Telegram |
| Graylog → Claude Ops Advisor | Webhook /webhook/graylog-alert | Claude Sonnet → analyse → action Docker ou SSH Pi |
Ops Advisor — Actions supportées
| Action | Méthode | Cible |
|---|---|---|
| restart_homeassistant | Docker API 172.19.0.1:2375 | Conteneur homeassistant |
| restart_musicassistant | Docker API 172.19.0.1:2375 | Conteneur music-assistant |
| restart_nginx | Docker API 172.19.0.1:2375 | Conteneur nginx-proxy-manager |
| restart_adguard | Docker API 172.19.0.1:2375 | Conteneur adguardhome |
| restart_graylog | Docker API 172.19.0.1:2375 | Conteneur graylog |
| reboot_pi | SSH credential Pi - SSH | 192.168.1.70 |
Section 11
Dashboard
home.obbconnect.net · Cloudflare Pages · GitHub
| Paramètre | Valeur |
|---|---|
| URL | https://home.obbconnect.net |
| Protection | Cloudflare Access — OTP email Tutanota, session 1 mois |
| Hébergement | Cloudflare Pages — déploiement auto à chaque git push |
| Repo GitHub | github.com/olivierbb73/obbconnect-home (privé) |
| Clone local Mac | ~/Documents/obbconnect-home/ |
| Éditeur | VS Code — NE PAS utiliser TextEdit (corrompt UTF-8) |
| Fond de page | background.jpg à la racine — image aérienne rétro-futuriste |
| Icône iPhone | apple-touch-icon.png 180×180px — Cloudflare Access Bypass |
| Documentation web | home.obbconnect.net/docs.html — générée par generate.py |
Workflow ajout tuile / mise à jour doc
# 1. Copier l'image dans le repo
cp ~/Documents/obbconnect-home/sources/NomImage.png ~/Documents/obbconnect-home/images/service.png
# 2. Modifier index.html avec Python (jamais TextEdit)
python3 << 'EOF'
# insérer le bloc JS du service
EOF
# 3. Mettre à jour la doc
python3 ~/Documents/obbconnect-home/generate.py
# 4. Pousser sur GitHub
cd ~/Documents/obbconnect-home && git add . && git commit -m '...' && git push origin mainToujours copier depuis sources/ → images/ avant git add. Git compare les hash — si identique, pas de commit.
Tuiles actives
| Service | Image | Liens |
|---|---|---|
| Home Assistant | ha.png | Local + HTTPS + Tunnel CF + SSH tunnel |
| Music Assistant | ma.png | Local + HTTPS + Tunnel CF |
| Portainer | portainer.png | Local + HTTPS + SSH tunnel |
| AdGuard Home | adguard.png | Local + HTTPS + SSH tunnel |
| Nginx Proxy Manager | npm.png | Local + HTTPS |
| Cloudflare | cloudflare.png | dash.cloudflare.com + one.dash.cloudflare.com |
| Graylog | graylog.png | Local + HTTPS + SSH tunnel |
| Grafana | grafana.png | Local + HTTPS |
| NAS QNAP | nas.png | Local + HTTPS + Tunnel CF + SSH tunnel |
| CyberPower UPS | ups.png | Local + HTTPS + Tunnel CF |
| Backblaze B2 | backblaze.png | secure.backblaze.com (cloud) |
| Nabu Casa | nabucasa.png | account.nabucasa.com + HA local |
| iCloud | icloud.png | icloud.com + mail + photos + drive + find + appleid |
| HashiCorp Vault | vault.png | Local + HTTPS + SSH tunnel |
| n8n | n8n.png | Local + HTTPS + SSH tunnel |
Section 12
Sauvegardes
Backup quotidien homeserver → NAS QNAP via SMB
| Paramètre | Valeur |
|---|---|
| Fréquence | Quotidienne à 3h00 du matin (cron) |
| Source | /home/homeadmin/docker/ (toutes les données persistantes) |
| Destination | /mnt/nas-backup/homeserver-backup/ (SMB sur QNAP) |
| Rétention | 14 copies — rotation automatique |
| Montage NAS | /mnt/nas-backup — credentials dans /etc/nas-credentials (chmod 600) |
0 3 * * * /usr/local/bin/backup-homeserver.sh >> /var/log/backup-homeserver.log 2>&1
Section 13
Points de vigilance
Pièges connus · Fixes documentés · Bonnes pratiques
mDNS ne traverse pas les VLANs — Sonos et appareils similaires nécessitent des IPs fixes dans configuration.yaml HA.
NAT WireGuard disparaît après reset modem — Règle persistée via /data/on_boot.d/10-wireguard-nat.sh avec sleep 10.
Route retour VPN homeserver — La route 192.168.2.0/24 doit être dans /etc/netplan/50-cloud-init.yaml pour survivre aux reboots.
Music Assistant — mode host networking — NPM contacte MA via 192.168.1.21:8095. La règle UFW 172.19.0.0/16 → port 8095 est indispensable.
Vault port binding — vault-compose.yml doit avoir 192.168.1.21:8200:8200 (pas 127.0.0.1). Si modifié, redémarrer le conteneur.
Certificat SSL wildcard — *.obbconnect.net expire le 21 juin 2026 — renouvellement auto via NPM à surveiller.
TextEdit corrompt UTF-8 — Toujours utiliser VS Code pour éditer index.html. Jamais TextEdit.
Images dashboard — Toujours copier depuis sources/ → images/ avant git add. Git compare les hash.
SSH UDM-SE — Doit rester désactivé quand non utilisé.
Section 14
Checklist de santé système
Vérifications rapides après maintenance ou reboot
homeserver (192.168.1.21)
- Docker actif —
sudo systemctl status docker - Tous conteneurs UP —
docker ps --format 'table {{.Names}}\t{{.Status}}' - Home Assistant — http://192.168.1.21:8123
- AdGuard DNS test —
dig @192.168.1.21 google.com - Route VPN homeserver —
ip route show | grep 192.168.2 - DDNS résolution —
dig vpn.obbconnect.net +short → IP WAN Bell - Tunnel Cloudflare —
docker logs cloudflared - Vault unsealed —
docker exec -e VAULT_ADDR=http://192.168.1.21:8200 vault vault status - Backup NAS monté —
ls /mnt/nas-backup/ - Sauvegardes présentes —
ls /mnt/nas-backup/homeserver-backup/ | wc -l (max 14)
Accès distant
- WireGuard VPN —
App WireGuard iPhone — handshake < 30 secondes - Accès homeserver via VPN — http://192.168.1.21:8123 depuis iPhone 5G + VPN
- Cloudflare Tunnel HA — https://ha-ext.obbconnect.net sans VPN
- Dashboard centralisé —
home.obbconnect.net — OTP Tutanota requis - HashiCorp Vault — https://vault.obbconnect.net
- n8n automatisation — https://n8n.obbconnect.net
- Documentation —
home.obbconnect.net/docs.html