Vue d'ensemble

Documentation Infrastructure OBBConnect — Montréal

Version
v5.9 — 24 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 · Kernel 6.8.0-107-generic
Réseau
UniFi Dream Machine SE · VLAN 1/30/50/60
Domaine
obbconnect.net · Cloudflare Zero Trust : obbconnect
Audit sécurité 05/04/2026 complété. HomeKit filtré 07/04/2026. Rapport Graylog Intelligent déployé 10/04/2026. Harmony Hubs intégrés HA 10/04/2026. TR-004U migré NAS Storage Mode 09/04/2026. Vault épinglé 1.17.6 (15/04/2026). 1641 — WiZ Entrée 1+2 intégrés HA + automation crépuscule (19/04/2026). Sun2 + binary sensors solaires template (golden_hour, blue_hour_reelle, nuit_nautique_reelle) déployés. Sensibo Air Pro x2 installés (Chambre Gauche + Droite) + 12 automations Sensibo déployées (20/04/2026).
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

MachineIPVLANRôle
homeserver (GMKtec NucBox K8 Plus)192.168.1.21VLAN 1 AdminMini PC principal · AMD Ryzen 7 8845HS · 32 Go · 1 To · Héberge tous les conteneurs Docker · Refroidissement : dual-fan Hyper Ice Chamber 2.0 (CPU Fan + System Fan) · BIOS Full Speed abaissé à 65°C (10/04/2026)
QNAP TS-435XeU192.168.1.60VLAN 1 AdminNAS — sauvegardes automatiques SMB, serveur NTP primaire. TR-004U : Storage Pool 2 (External RAID), Volume VOL_TR004U 21.61 TB, partages FILMS / TV_SHOWS / IPHONE_OBB
Raspberry Pi 4192.168.1.70VLAN 1 AdminMonitoring températures rack — Prometheus + Grafana
UDM-SE192.168.1.1VLAN 1 AdminUniFi Dream Machine SE — routeur/firewall, VLANs, WireGuard
CyberPower UPS192.168.1.62VLAN 1 AdminOnduleur CP1500PFCLCDa — monitoring batterie, interface web, alertes Uptime Kuma
MacBook ProDHCPVLAN 1 AdminPoste d'administration — SSH ed25519 via 1Password + Touch ID
Section 2

Services Docker — homeserver

14 conteneurs · Structure normalisée /opt/docker/[service]/

Tous les services sont dans /opt/docker/[service]/docker-compose.yml. Structure normalisée le 05/04/2026.
ConteneurImagePort(s)Dossier composeURL externe
homeassistantghcr.io/home-assistant/home-assistant:stable8123/opt/docker/homeassistant/ha-ext.obbconnect.net
music-assistantghcr.io/music-assistant/server:latest8095/8097/opt/docker/music-assistant/ma-ext.obbconnect.net
portainerportainer/portainer-ce:latest9000/opt/docker/portainer/
adguardhomeadguard/adguardhome:latest53/3000/opt/docker/adguard/
nginx-proxy-managerjc21/nginx-proxy-manager:latest80/443/81/opt/docker/nginx-proxy-manager/
graylog (stack)graylog/graylog + MongoDB + OpenSearch9001/opt/docker/graylog/
n8nn8nio/n8n:latest5678/opt/docker/n8n/
vaulthashicorp/vault:1.17.68200 (interne Docker)/opt/docker/vault/
cloudflare-ddnsfavonia/cloudflare-ddns:latest/opt/docker/cloudflare-ddns/
cloudflaredcloudflare/cloudflared:latestTunnel ZT
watchtowercontainrrr/watchtower:latest/opt/docker/watchtower/
uptime-kumalouislam/uptime-kuma:13001/opt/docker/uptime-kuma/
Port 8097 requis pour Music Assistant (streamserver Sonos) — règle firewall IoT → homeserver distincte du port 8095.

Réseaux Docker

Réseau DockerSubnetUsage
nginx-proxy-manager_default172.19.0.0/16NPM, AdGuard, Graylog, cloudflared, n8n, Vault
bridge (défaut)172.17.0.0/16Portainer, Watchtower, Uptime Kuma
hosthomeassistant, music-assistant — utilisent directement l'IP du homeserver
Les IPs Docker (172.19.x.x) changent à chaque reboot. NPM doit toujours pointer vers les noms de conteneurs, jamais vers des IPs Docker.
Section 3

Réseau & VLANs

UniFi Dream Machine SE · Zones firewall

VLANNomSubnetÉquipements / Usage
VLAN 1Admin192.168.1.0/24homeserver, NAS, Pi, UDM-SE, UPS, MacBook Pro. DNS : 192.168.1.21
VLAN 30IoT192.168.30.0/24Sonos, Philips Hue, Lutron, Apple TV, Shelly EM (à venir)
VLAN 50GuestTHE INVADERS — réseau invités isolé
VLAN 60Apt192.168.60.0/241641 — appartement isolé. WiZ: .40-.49 · Sensibo: .30-.32 · Lutron Bridge Pro: .10 · Apple TV: .20

Règles firewall IoT → homeserver

RègleProtoPortDestinationRaison
ALLOW IoT → HATCP8123192.168.1.21Home Assistant API
ALLOW IoT → MA APITCP8095192.168.1.21Music Assistant commandes
ALLOW IoT → MA StreamTCP8097192.168.1.21Sonos streamserver audio
Section 4

Règles UFW — homeserver

Audit sécurité 05/04/2026 · Règles ciblées par port et subnet

Audit UFW 05/04/2026 — règles larges ALLOW Anywhere depuis LAN et IoT supprimées. DNS port 53 restreint aux 4 subnets légitimes. Toutes les règles sont maintenant ciblées par port et subnet.
RègleActionSourceCommentaire
22/tcpALLOW192.168.1.0/24SSH — Admin VLAN uniquement
8123/tcpALLOW192.168.1.0/24Home Assistant — Admin VLAN
8123/tcpALLOW192.168.30.0/24Home Assistant — IoT VLAN
8123/tcpALLOW172.16.0.0/12Home Assistant — réseaux Docker
9000/tcpALLOW192.168.1.0/24Portainer — Admin VLAN
9001/tcpALLOW192.168.1.0/24Graylog UI — Admin VLAN
5140/tcp+udpALLOW192.168.1.0/24Graylog Syslog — Admin VLAN
3000/tcpALLOW192.168.1.0/24AdGuard UI — Admin VLAN
81/tcpALLOW192.168.1.0/24NPM Admin — Admin VLAN
80/tcp · 443/tcpALLOWAnywhereNPM HTTP/HTTPS
53/tcp+udpALLOW192.168.1.0/24AdGuard DNS — Admin VLAN
53/tcp+udpALLOW192.168.30.0/24AdGuard DNS — IoT VLAN
53/tcp+udpALLOW192.168.2.0/24AdGuard DNS — WireGuard VPN
53/tcp+udpALLOW172.16.0.0/12AdGuard DNS — Docker networks
21064ALLOW192.168.1.0/24HomeKit Bridge — Admin VLAN
AnywhereALLOW192.168.2.0/24WireGuard VPN clients — accès admin complet
8095/tcpALLOW192.168.30.0/24Music Assistant API — IoT VLAN Sonos
8097/tcpALLOW192.168.30.0/24Music Assistant Streamserver — IoT VLAN Sonos
8095/tcpALLOW172.19.0.0/16Music Assistant — NPM Docker
5678/tcpALLOW172.19.0.0/16n8n — NPM Docker
2375/tcpALLOW172.19.0.0/16Docker API — n8n
22/tcpALLOW172.19.0.0/16SSH — n8n Docker network
3001/tcpALLOW192.168.1.0/24Uptime Kuma — Admin VLAN
Section 5

Accès distant

VPN · Cloudflare Zero Trust · Tunnels SSH

MéthodePortéeDétailsUsage
SSH directLocal + VPNssh homeserver — ed25519 via 1Password + Touch IDAdministration système, Docker CLI
WireGuard VPNDistantvpn.obbconnect.net:51820 — split-tunnel subnets LANAccès complet LAN depuis l'extérieur
Cloudflare Zero TrustDistant sans VPNTunnel chiffré — policy Accès OBB (Tutanota, 1 mois)ha-ext, nas-ext, ups-ext, ma-ext
Nabu CasaDistant (fallback)Compte iCloud — Alexa + Google AssistantApps mobiles HA, assistants vocaux
Tunnels SSHLocal + VPNssh -N tunnel-[service] — 7 tunnels configurésSecours si NPM ou VPN indisponible

Tunnels SSH Mac

Alias SSHPort localURL après tunnel
tunnel-ha18123http://localhost:18123
tunnel-portainer19000http://localhost:19000
tunnel-adguard13000http://localhost:13000
tunnel-graylog19001http://localhost:19001
tunnel-nas18080http://localhost:18080
tunnel-vault18200http://localhost:18200/ui
tunnel-n8n15678http://localhost:15678
Toujours fermer le tunnel avec Ctrl+C après utilisation.

WireGuard VPN

ParamètreValeur
Domainevpn.obbconnect.net (Cloudflare DNS only, TTL 2 min)
Port51820/UDP
Subnet VPN192.168.2.0/24 — gateway 192.168.2.1
ClientsOBB24 (192.168.2.2), MacBook Pro OBB (192.168.2.3), CLIENT_NAS_CATH (192.168.2.4)
Split-tunnel192.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 · Proxy hosts par nom

ParamètreValeur
Ports exposés80 (HTTP), 443 (HTTPS), 81 (interface admin)
Certificat SSLWildcard *.obbconnect.net — Let's Encrypt + Cloudflare DNS
Expiration cert.21 juin 2026 — renouvellement automatique cron 3h15 via Certbot
Compose/opt/docker/nginx-proxy-manager/docker-compose.yml
Certbot config/opt/docker/certbot/config/
Cert NPM/opt/docker/nginx-proxy-manager/letsencrypt/live/npm-1/

Proxy Hosts HTTPS actifs

URL publiqueBackend (nom conteneur)Service
ha.obbconnect.nethomeassistant:8123Home Assistant
ma.obbconnect.net172.17.0.1:8095Music Assistant (host network)
portainer.obbconnect.netportainer:9000Portainer Docker
adguard.obbconnect.netadguardhome:3000AdGuard Home
graylog.obbconnect.netgraylog:9001Graylog logs
n8n.obbconnect.netn8n:5678n8n automatisation
npm.obbconnect.net127.0.0.1:81NPM interface admin
vault.obbconnect.netvault:8200HashiCorp Vault (Docker interne)
nas.obbconnect.net192.168.1.60:443QNAP NAS
grafana.obbconnect.net192.168.1.70:3000Grafana Pi
ups.obbconnect.net192.168.1.62CyberPower UPS
Tous les proxy hosts utilisent les noms de conteneurs (ex: vault, adguardhome) — jamais les IPs Docker qui changent après reboot.
Section 7

Cloudflare DNS & Zero Trust

obbconnect.net · Plan Free · team: obbconnect

Entrées DNS actives

Sous-domaineTypeCibleProxyNotes
vpnA70.24.246.252DNS onlyWireGuard — IP WAN Bell, MAJ par cloudflare-ddns
ha / portainer / graylog / adguard / ma / npm / n8n / vaultA192.168.1.21DNS onlyServices homeserver via NPM
nasA192.168.1.60DNS onlyQNAP NAS via NPM
grafanaA192.168.1.70DNS onlyGrafana Pi — accès direct port 3000
upsA192.168.1.62DNS onlyCyberPower UPS — accès direct
homeCNAMEobbconnect-home.pages.devProxiedDashboard Cloudflare Pages
docsCNAMEobbconnect-home.pages.devProxiedDocumentation Cloudflare Pages

Tunnels Zero Trust exposés

URL externeBackendNotes
ha-ext.obbconnect.nethomeassistant:8123trusted_proxies 172.19.0.0/16 dans HA
nas-ext.obbconnect.net192.168.1.60 (HTTPS+NoTLS)Accès NAS externe
ups-ext.obbconnect.net192.168.1.62Accès UPS externe
ma-ext.obbconnect.nethomeassistant:8095Accès Music Assistant externe
Politique Access "Accès OBB" — email Tutanota uniquement, session 1 mois. Portainer NON exposé via tunnel. vault.obbconnect.net résout en IP privée uniquement.
Section 8

Home Assistant

Domotique centrale · HACS · Mushroom Cards · Kiosk Mode

IntégrationBridge / IPVLANNotes
Philips HueHue Bridge ProIoT 30Intégration native HA
Lutron CasetaBridge ProIoT 30Intégration native HA
SonosIPs manuellesIoT 30IPs fixes dans configuration.yaml HA — mDNS ne traverse pas les VLANs
Google CastAuto-discoveryAdmin 1Nest Hub, Chromecast, TV Streamer
Apple TV Salon192.168.1.168Admin 1Hub HomeKit cross-VLAN
Apple TV Loft192.168.1.169Admin 1ATV-LOFT
HomeKit BridgePort 21064Admin 1iPhone → ATV Salon → HASS Bridge → HA → IoT. Domaines exposés : light, climate, cover, switch, remote, sensor, media_player. Limite 150 appareils — scene/button/automation exclus (07/04/2026)
Nabu CasaCloud (iCloud)Alexa + Google Assistant. 0 entité exposée volontairement
WiZ 1641 — Entrée192.168.60.40 / .41Apt 60UDP 38899 (HA→WiZ) + 38900 (WiZ→HA). Firewall UniFi: Internal→WiZ + WiZ→HA. Automation crépuscule: fade 100%→50% sur golden/blue hour, 50% nuit, météo le jour
Sensibo Air Pro — 1641 Chambre Gauche192.168.60.30Apt 60climate.chambre_gauche. AirQ intégré (CO2, TVOC). Cloud API. 6 automations: Confort Climatique, Alerte CO2, Alerte Filtre, Lumière, Alerte TVOC, Firmware.
Sensibo Air Pro — 1641 Chambre Droite192.168.60.31Apt 60climate.chambre_droite. AirQ intégré (CO2, TVOC). Cloud API. 6 automations identiques Chambre Gauche. MAC: 10:06:1C:50:8B:84.
Music Assistant8095 / 8097IoT 30Sonos multi-pièces — port 8097 streamserver

Assistants vocaux

AssistantMéthodeStatus
Amazon AlexaSkill 'Home Assistant' via Nabu CasaActif
Google AssistantSkill 'Home Assistant Cloud by Nabu Casa'Actif
Synthèse vocale HABrigitteNeural — françaisActif
trusted_proxies resserré à 172.19.0.0/16 (réseau Docker NPM uniquement) — audit 05/04/2026.
Section 9

HashiCorp Vault

Gestionnaire de secrets machine · Isolé réseau Docker · AWS KMS

ParamètreValeur
Image Dockerhashicorp/vault:1.17.6 — épinglée (latest incompatible kernel Ubuntu 15/04/2026)
Compose/opt/docker/vault/docker-compose.yml
Config/opt/docker/vault/config/vault.hcl
Secrets AWS KMS/opt/docker/vault/vault.env (chmod 600, root)
Port bindingInterne Docker uniquement — aucun port publié sur le host (audit 05/04/2026)
api_addrhttp://192.168.1.21:8200
Auto-unsealAWS KMS — us-east-2
Accès HTTPShttps://vault.obbconnect.net (via NPM, nom conteneur vault)
Accès tunnel SSHssh -N tunnel-vault → http://localhost:18200/ui
Emergency Kit1Password : Vault — Emergency Kit — homeserver
3 contrôles routiniers Vault :
1. dig vault.obbconnect.net +short → doit retourner IP privée (192.168.1.21) uniquement
2. docker ps | grep vault → doit afficher 8200/tcp sans IP host devant
3. curl -s --max-time 3 http://192.168.1.21:8200 → doit retourner vide

Secrets engines actifs

CheminTypeContenu
obbconnect/backup/unifiKVUNIFI_PASS — mot de passe UniFi pour scripts backup
obbconnect/backup/rcloneKVaccount, key, crypt_password, crypt_password2 — Backblaze B2
obbconnect/ai/anthropicKVClé API Claude — workflows n8n
obbconnect/graylog/configKVCredentials Graylog
obbconnect/network/cloudflare-ddnsKVToken Cloudflare DDNS
obbconnect/network/unifi-proxyKVCredentials UniFi proxy

Architecture secrets OBBConnect

Règle fondamentale : un humain tape le secret → 1Password. Un processus lit le secret → Vault.
CoffreTypeContenu
1PasswordHumainLogins, SSH keys, accès admin, emergency kits, credentials cloud
HashiCorp VaultMachineTokens API, credentials scripts, secrets Docker, rclone B2
Section 10

n8n — Automatisation

Workflows · Rapport Graylog Intelligent · Ops Advisor v4 · Telegram

ParamètreValeur
Port5678
Compose/opt/docker/n8n/docker-compose.yml
Données/opt/docker/n8n/data/ (bind mount — migré de volume anonyme 05/04/2026)
Accès HTTPShttps://n8n.obbconnect.net
Tunnel SSHssh -N tunnel-n8n → http://localhost:15678

Workflows actifs

WorkflowDéclencheurAction
🔴 Alerte Docker - Services DownCron toutes les 5 minDocker TCP API → Telegram si service down
🧠 Rapport Graylog Intelligent - OBBConnectCron 7h00Graylog API → Claude #1 (analyse + commandes SSH) → SSH homeserver → Claude #2 (décision) → Switch action → Telegram
⚙️ Graylog → Claude Ops Advisor v4Webhook /webhook/graylog-alertClaude → analyse → action Docker ou SSH Pi

Ops Advisor v4 — Actions supportées

ActionMéthodeCible
restart_homeassistantDocker API 172.19.0.1:2375Conteneur homeassistant
restart_musicassistantDocker API 172.19.0.1:2375Conteneur music-assistant
restart_nginxDocker API 172.19.0.1:2375Conteneur nginx-proxy-manager
restart_adguardDocker API 172.19.0.1:2375Conteneur adguardhome
restart_graylogDocker API 172.19.0.1:2375Conteneur graylog
reboot_piSSH credential SSH Private Key pi192.168.1.70

Credentials SSH

Credential n8nCibleUsage
SSH Private Key Homeadmin192.168.1.21 (homeadmin)Rapport Graylog Intelligent — diagnostics SSH
SSH Private Key pi192.168.1.70 (pi)Ops Advisor v4 + Rapport Intelligent reboot Pi
Section 11

Dashboard

home.obbconnect.net · Cloudflare Pages · GitHub

ParamètreValeur
URLhttps://home.obbconnect.net
ProtectionCloudflare Access — OTP email Tutanota, session 1 mois
HébergementCloudflare Pages — déploiement auto à chaque git push
Repo GitHubgithub.com/olivierbb73/obbconnect-home (privé)
Clone local Mac~/Documents/obbconnect-home/
ÉditeurVS Code + Claude Code — NE PAS utiliser TextEdit (corrompt UTF-8)
Structure reposcripts/ · dist/ · assets/ · docs/ · index.html · CLAUDE.md
Scripts actifsscripts/generate/generate_current.py → dist/docs.html
Imagesassets/images/ — dossier unique (sources/ supprimé)
Documentation webhome.obbconnect.net — nav → /dist/docs.html · /dist/glossaire.html · /dist/network.html

Workflow mise à jour doc

# 1. Modifier le script via Claude Code (VS Code) ou directement
# Les scripts sont dans scripts/generate|glossaire|network/

# 2. Régénérer les HTML
python3 ~/Documents/obbconnect-home/scripts/generate/generate_current.py
python3 ~/Documents/obbconnect-home/scripts/glossaire/glossaire_current.py
python3 ~/Documents/obbconnect-home/scripts/network/network_current.py

# 3. Pousser sur GitHub
cd ~/Documents/obbconnect-home && git add -A && git commit -m '...' && git push origin main

# OU utiliser update-obbdoc (place les scripts versionnés dans ~/Downloads/)
update-obbdoc
Ne jamais éditer dist/ directement. HTML générés par les scripts Python. Images dans assets/images/ — dossier unique.

Tuiles actives

ServiceImageLiens
Home Assistantha.pngLocal + HTTPS + Tunnel CF + SSH tunnel
Music Assistantma.pngLocal + HTTPS + Tunnel CF
Portainerportainer.pngLocal + HTTPS + SSH tunnel
AdGuard Homeadguard.pngLocal + HTTPS + SSH tunnel
Nginx Proxy Managernpm.pngLocal + HTTPS
Cloudflarecloudflare.pngdash.cloudflare.com + one.dash.cloudflare.com
Grayloggraylog.pngLocal + HTTPS + SSH tunnel
Grafanagrafana.pngLocal + HTTPS
NAS QNAPnas.pngLocal + HTTPS + Tunnel CF + SSH tunnel
CyberPower UPSups.pngLocal + HTTPS + Tunnel CF
Backblaze B2backblaze.pngsecure.backblaze.com (cloud)
Nabu Casanabucasa.pngaccount.nabucasa.com + HA local
iCloudicloud.pngicloud.com + mail + photos + drive + find + appleid
HashiCorp Vaultvault.pngLocal + HTTPS + SSH tunnel
n8nn8n.pngLocal + HTTPS + SSH tunnel
Section 12

Sauvegardes

Backup quotidien cloud · Backblaze B2 · Certbot auto

ParamètreValeur
FréquenceQuotidienne à 2h00 du matin (cron)
Source/opt/docker/ (toutes les données persistantes)
DestinationBackblaze B2 via rclone + chiffrement
Rétention14 copies — rotation automatique
Certbot renouvellementCron 3h15 — /opt/docker/certbot/
0 2 * * * /usr/local/bin/cloud-backup.sh >> /var/log/cloud-backup.log 2>&1
0 3 * * * /opt/docker/backup-ha.sh >> /var/log/ha-backup.log 2>&1
15 3 * * * docker run --rm -v /opt/docker/certbot/config:/etc/letsencrypt \
  -v /opt/docker/certbot/logs:/var/log/letsencrypt \
  -v /opt/docker/certbot/cloudflare:/cloudflare \
  certbot/dns-cloudflare renew --dns-cloudflare \
  --dns-cloudflare-credentials /cloudflare/credentials.ini --quiet
30 3 * * * docker restart music-assistant
0 3 * * 1 /usr/local/bin/vault-renew-tokens.sh
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 172.17.0.1:8095. Ports 8095 et 8097 requis depuis VLAN IoT.
Vault — accès interne Docker uniquement — Vault n'écoute plus sur l'IP du host. Accès via vault.obbconnect.net (NPM) uniquement. Contrôle : dig vault.obbconnect.net → IP privée seulement.
Certificat SSL wildcard — *.obbconnect.net expire le 21 juin 2026 — renouvellement auto cron 3h15 via Certbot.
NPM proxy hosts — noms de conteneurs — Toujours utiliser les noms de conteneurs (ex: vault, adguardhome) — les IPs Docker changent après reboot.
TextEdit corrompt UTF-8 — Toujours utiliser VS Code pour éditer index.html. Jamais TextEdit.
Images dashboard — Toujours copier depuis assets/images/ avant git add. Git compare les hash.
TR-004U — NAS Storage Mode uniquement — Ne jamais reconfigurer en External Storage + Software RAID (mdadm+LVM). QTS ne remonte pas ce type de volume automatiquement au boot. Toujours utiliser NAS Storage Mode natif (Storage Pool 2).
GMKtec — ventilateurs non visibles par Linux — Contrôle propriétaire BIOS. Linux ne lit pas les RPM (cat /sys/class/hwmon/hwmon*/fan*_input → vide). Normal. BIOS modifié : Full Speed 85°C → 65°C (10/04/2026). Dual-fan Hyper Ice Chamber 2.0 : CPU Fan (sous carte mère) + System Fan (sous couvercle transparent). CPU sous stress ≤ 48°C.
Vault — image épinglée à 1.17.6 — Ne jamais utiliser hashicorp/vault:latest — incompatible avec le kernel Ubuntu (CAP_SETFCAP bloqué). Toujours épingler une version explicite.
Structure Docker normalisée — Tous les services dans /opt/docker/[service]/docker-compose.yml. /home/homeadmin/docker/ supprimé le 05/04/2026.
Section 14

Checklist de santé système

Vérifications rapides après maintenance ou reboot

homeserver (192.168.1.21)

Accès distant