Homeserver10.10.1.21 · homeadmin
Connexion
ssh homeadmin@10.10.1.21Connexion SSH depuis le Mac
Docker — état
docker psConteneurs actifs
docker ps -aTous les conteneurs (y.c. arrêtés)
docker stats --no-streamRAM/CPU de tous les conteneurs
Docker — logs
docker logs homeassistant --tail 50Derniers logs Home Assistant
docker logs music-assistant --tail 50Derniers logs Music Assistant
docker logs adguardhome --tail 50Derniers logs AdGuard Home
docker logs n8n --tail 50Derniers logs n8n
docker logs cloudflared --tail 50Derniers logs tunnel Cloudflare
docker logs nginx-proxy-manager --tail 50Derniers logs Nginx Proxy Manager
docker logs graylog --tail 50Derniers logs Graylog
docker logs vault --tail 50Derniers logs HashiCorp Vault
journalctl -u docker --since "1 hour ago"Logs du service Docker (systemd)
Docker — redémarrage
docker restart homeassistantRedémarrer Home Assistant
docker restart music-assistantRedémarrer Music Assistant
docker restart adguardhomeRedémarrer AdGuard Home
docker restart n8nRedémarrer n8n
docker restart nginx-proxy-managerRedémarrer Nginx Proxy Manager
docker compose -f /opt/docker/homeassistant/docker-compose.yml up -dRelancer HA via compose (si arrêté)
docker compose -f /opt/docker/n8n/docker-compose.yml up -dRelancer n8n via compose (si arrêté)
docker compose -f /opt/docker/adguardhome/docker-compose.yml up -dRelancer AdGuard via compose (si arrêté)
docker compose -f /opt/docker/music-assistant/docker-compose.yml up -dRelancer MA via compose (si arrêté)
Fichiers de config — Home Assistant
cat /opt/docker/homeassistant/config/configuration.yamlConfig principale HA
cat /opt/docker/homeassistant/config/automations.yamlAutomations HA
ls /opt/docker/homeassistant/config/scripts/Liste des scripts HA
cat /opt/docker/homeassistant/config/secrets.yamlSecrets HA (références Vault)
Fichiers de config — Services
cat /opt/docker/n8n/data/configConfig n8n (JSON)
cat /opt/docker/cloudflare-ddns/docker-compose.ymlConfig Cloudflare DDNS
cat /opt/docker/certbot/cloudflare/credentials.iniCredentials Certbot Cloudflare
cat /opt/docker/nginx-proxy-manager/docker-compose.ymlConfig Nginx Proxy Manager
Sécurité & réseau
sudo ufw status verboseRègles pare-feu UFW
ip aInterfaces réseau et adresses IP
ss -tulnpPorts ouverts sur le homeserver
Vault
curl -s https://vault.obbconnect.net/v1/sys/health | python3 -m json.toolVérifier état Vault (sealed/unsealed) via HTTPS
sudo docker logs vault --tail 30Derniers logs Vault (erreurs démarrage)
sudo docker ps | grep vaultVérifier état conteneur Vault
cd /opt/docker/vault && sudo docker compose down && sudo docker compose pull && sudo docker compose up -dRecréer conteneur Vault depuis zéro (si image changée)
sudo /usr/local/bin/vault-renew-tokens.shRenouveler tous les tokens Vault (lundi 3h auto)
cat /etc/environmentVariables d'environnement (tokens Vault injectés)
Domotique — Matter / Zigbee / Thread / ESPHome
docker logs matter-server --tail 50Logs Python Matter Server (WS :5580, host network)
docker logs zigbee2mqtt --tail 50Logs Zigbee2MQTT (passerelle Zigbee → MQTT)
docker logs mosquitto --tail 50Logs broker MQTT Mosquitto
docker logs otbr --tail 50Logs OpenThread Border Router (Thread)
docker logs esphome --tail 50Logs ESPHome
docker restart zigbee2mqttRedémarrer Zigbee2MQTT
docker restart mosquittoRedémarrer le broker MQTT
docker restart matter-serverRedémarrer le serveur Matter
docker restart otbrRedémarrer le border router Thread
cat /opt/docker/zigbee2mqtt/data/configuration.yamlConfig Zigbee2MQTT (coordinateur, MQTT, frontend :8080)
cat /opt/docker/mosquitto/config/mosquitto.confConfig Mosquitto (listeners, auth)
ls /opt/docker/esphome/config/Lister les configs ESPHome
docker exec mosquitto mosquitto_sub -t 'zigbee2mqtt/#' -vS'abonner au flux MQTT Zigbee2MQTT (test)
curl -sI http://10.10.1.21:8080Vérifier le frontend web Zigbee2MQTT (:8080)
curl -sI http://10.10.1.21:6052Vérifier le dashboard ESPHome (:6052)
Claude Code
cd ~/claude-obbconnect && claude --versionVérifier que Claude Code est opérationnel
cd ~/claude-obbconnect && claudeLancer Claude Code dans le projet
cat ~/claude-obbconnect/CLAUDE.mdRègles opérationnelles du projet (confirmation avant write)
export VAULT_ADDR=http://10.10.1.21:8200 && vault kv list obbconnectLister les secrets Vault (dont unifi-mcp — accès UDM-SE)
Système
df -hEspace disque (partitions)
free -hMémoire RAM disponible
uptimeCharge système et durée de fonctionnement
sudo crontab -lTâches cron planifiées (root)
sensorsTempératures CPU (requiert lm-sensors)
Agent de maintenance nocturne
systemctl status night-maintenance.timerÉtat du timer (actif, prochain déclenchement)
systemctl list-timers night-maintenance.timerHeure exacte du prochain passage
sudo -u svc-maintenance /opt/maintenance-agent/bin/night_check.shLancer un contrôle manuel en dry-run (aucune action réelle)
sudo -u svc-maintenance /opt/maintenance-agent/bin/night_check.sh --liveLancer un contrôle manuel en mode réel (actions correctives actives)
ls -lt /opt/maintenance-agent/reports/ | head -55 derniers rapports générés
tail -50 /opt/maintenance-agent/logs/night_check.logDerniers logs du script
cat /opt/maintenance-agent/config/allowlist.confConteneurs/services autorisés à un redémarrage automatique
cd /opt/maintenance-agent && git log --oneline -10Historique des changements du projet (repo local)
sudo systemctl disable --now night-maintenance.timerDésactiver immédiatement l'agent (arrêt d'urgence)
sudo systemctl enable --now night-maintenance.timerRéactiver l'agent après un arrêt
Commandes distantes vers le Pi
ssh pi@10.10.1.70 "DISPLAY=:0 xdotool key F5"Recharger la page HTML affichée sur le Pi (F5)
Domotique — diagnostic
ping -c 3 192.168.1.120Tester accès Harmony Hub Loft
ping -c 3 10.10.1.121Tester accès Harmony Hub Salon
ping -c 3 192.168.30.60Tester accès Philips Hue Bridge
ping -c 3 192.168.30.62Tester accès Lutron Caseta Bridge
grep -i 'harmony\|hue\|nest' /opt/docker/homeassistant/config/home-assistant.log | tail -20Logs domotique récents (Harmony/Hue/Nest)
grep -i 'nabucasa\|4003' /opt/docker/homeassistant/config/home-assistant.log | tail -10Logs Nabu Casa (erreurs reconnexion)
REGIE-PI10.10.1.70 · pi
Connexion
ssh pi@10.10.1.70Connexion SSH depuis le Mac
Redémarrage & arrêt
sudo rebootRedémarrer le Pi
sudo shutdown -h nowÉteindre le Pi proprement
sudo shutdown -r +1Redémarrer dans 1 minute
Affichage — page web régie (Chromium kiosk)
DISPLAY=:0 xdotool key F5Recharger la page web affichée (F5)
DISPLAY=:0 xdotool key ctrl+rRecharger la page web (Ctrl+R)
DISPLAY=:0 xdotool key ctrl+shift+rRecharger sans cache (Ctrl+Shift+R)
sudo systemctl restart chromium-kioskRedémarrer Chromium kiosk (si service systemd)
DISPLAY=:0 xdotool key ctrl+l && DISPLAY=:0 xdotool type 'http://localhost' && DISPLAY=:0 xdotool key ReturnNaviguer vers une URL dans Chromium
Grafana
sudo systemctl status grafana-serverÉtat du service Grafana
sudo systemctl restart grafana-serverRedémarrer Grafana
sudo systemctl stop grafana-serverArrêter Grafana
sudo systemctl start grafana-serverDémarrer Grafana
sudo journalctl -u grafana-server -n 50 --no-pagerDerniers logs Grafana
sudo systemctl enable grafana-serverActiver Grafana au démarrage
Prometheus
sudo systemctl status prometheusÉtat du service Prometheus
sudo systemctl restart prometheusRedémarrer Prometheus
sudo journalctl -u prometheus -n 50 --no-pagerDerniers logs Prometheus
curl -s http://localhost:9090/-/healthyVérifier que Prometheus répond
Node Exporter
sudo systemctl status node_exporterÉtat du service Node Exporter
sudo systemctl restart node_exporterRedémarrer Node Exporter
curl -s http://localhost:9100/metrics | head -20Vérifier les métriques Node Exporter
Températures DS18B20
cat /sys/bus/w1/devices/*/w1_slaveLire toutes les sondes température DS18B20
ls /sys/bus/w1/devices/Lister les sondes connectées
vcgencmd measure_tempTempérature CPU du Pi
Système
systemctl statusÉtat général de tous les services
df -hEspace disque (carte SD)
free -hMémoire RAM disponible
uptimeCharge et durée de fonctionnement
ip aAdresses IP et interfaces réseau
sudo journalctl -n 100 --no-pager100 dernières lignes de logs système
sudo systemctl list-units --failedServices en échec
MacBook ProDHCP · Admin VLAN · obb
SSH — connexions directes
ssh homeadmin@10.10.1.21SSH → Homeserver
ssh pi@10.10.1.70SSH → REGIE-PI
ssh admin@10.10.1.60SSH → NAS QNAP (si SSH activé dans QTS)
ssh root@10.10.1.1SSH → UDM-SE
SSH — tunnels (accès interfaces web en local)
ssh tunnel-haTunnel → Home Assistant (localhost:18123)
ssh tunnel-portainerTunnel → Portainer (localhost:19000)
ssh tunnel-adguardTunnel → AdGuard Home (localhost:13000)
ssh tunnel-graylogTunnel → Graylog (localhost:19001)
ssh tunnel-vaultTunnel → Vault (localhost:18200)
ssh tunnel-n8nTunnel → n8n (localhost:15678)
ssh tunnel-nasTunnel → NAS (localhost:18080)
SSH — config & clés
cat ~/.ssh/configVoir la configuration SSH complète
ssh-add --apple-use-keychain ~/.ssh/id_ed25519Ajouter clé SSH au trousseau macOS
1Password CLI
op signinSe connecter à 1Password CLI
op item get "NOM_ITEM" --fields passwordLire un champ d'un item 1Password
op document get UUID --output fichier.confTélécharger un document depuis 1Password
cat ~/.op_aliasesVoir les alias 1Password configurés
source ~/.zshrcRecharger les alias zsh (inclus op_aliases)
Domotique — accès web
open https://ha.obbconnect.net/config/integrationsOuvrir les intégrations HA (OAuth Nest — toujours passer par HTTPS)
open https://ha.obbconnect.netHome Assistant via HTTPS (requis pour OAuth Google Nest)
Réseau & diagnostic
ping 10.10.1.21Tester l'accès au homeserver
ping 10.10.1.70Tester l'accès au Pi
ping 10.10.1.60Tester l'accès au NAS
nmap -p 22,8123,8095,9000,9001,5678 10.10.1.21Scanner les ports ouverts du homeserver
Transfert de fichiers
scp fichier homeadmin@10.10.1.21:/opt/docker/homeassistant/config/Copier un fichier vers HA
scp fichier homeadmin@10.10.1.21:/opt/docker/Copier un fichier vers /opt/docker/
Repo & déploiement OBBConnect
cd ~/Documents/obbconnect-homeAller dans le repo local
git statusÉtat des fichiers modifiés
python3 scripts/generate/generate_current.pyRégénérer docs.html → dist/
python3 scripts/glossaire/glossaire_current.pyRégénérer glossaire.html → dist/
python3 scripts/network/network_current.pyRégénérer network.html → dist/
git add -A && git commit -m "docs: mise à jour" && git push origin mainCommitter et pousser
update-obbdocGénérer + committer + déployer automatiquement (scripts versionnés depuis ~/Downloads/)
NAS QNAP10.10.1.60 · admin
Connexion
ssh admin@10.10.1.60Connexion SSH NAS (SSH doit être activé dans QTS)
Volumes & espace disque
df -hEspace disque de tous les volumes
df -h /share/TR004U_DATAEspace disque volume TR-004U
df -h /share/CACHEDEV1_DATAEspace disque volume principal
du -sh /share/TR004U_DATA/FILMS/Taille du dossier FILMS
du -sh /share/TR004U_DATA/TV_SHOWS/Taille du dossier TV_SHOWS
du -sh /share/CACHEDEV1_DATA/*/Taille de chaque dossier volume principal
Données & dossiers
ls /share/TR004U_DATA/Contenu du volume TR-004U
ls /share/CACHEDEV1_DATA/Contenu du volume principal
ls /share/TR004U_DATA/FILMS/Dossier FILMS (TR-004U)
ls /share/TR004U_DATA/TV_SHOWS/Dossier TV_SHOWS (TR-004U)
ls /share/TR004U_DATA/IPHONE_OBB/Dossier sauvegardes iPhone (TR-004U)
ls /share/CACHEDEV1_DATA/MIGRATION_TR004U/Dossier migration TR-004U (à supprimer)
find /share/TR004U_DATA/ -name '*.partial' 2>/dev/nullChercher fichiers de téléchargement incomplets
Partages réseau SMB
cat /etc/config/smb.confConfiguration des partages SMB
/etc/init.d/smbd statusÉtat du service Samba
/etc/init.d/smbd restartRedémarrer Samba
Disques & RAID
cat /proc/mdstatÉtat des arrays RAID
smartctl -a /dev/sdaSanté disque sda (SMART)
smartctl -a /dev/sdbSanté disque sdb (SMART)
smartctl -a /dev/sdcSanté disque sdc (SMART)
smartctl -a /dev/sddSanté disque sdd (SMART)
hdparm -I /dev/sda | grep ModelModèle du disque sda
Système & services
uptimeCharge et durée de fonctionnement
free -hMémoire RAM disponible
top -bn1 | head -20Processus actifs (snapshot)
ps aux | grep -v grep | grep -i qpkgServices QPKG actifs
/etc/init.d/Qthttpd statusÉtat du serveur web QTS
cat /etc/versionVersion QTS installée
Réseau
ip aInterfaces réseau et adresses IP
ip routeTable de routage
netstat -tulnpPorts ouverts sur le NAS
ping 10.10.1.21Tester l'accès au homeserver
UDM-SE10.10.1.1 · root
Connexion
ssh root@10.10.1.1Connexion SSH UDM-SE
Réseau & routage
ip routeTable de routage
ip aInterfaces réseau et adresses IP
cat /etc/resolv.confDNS configurés sur l'UDM
netstat -tulnpPorts ouverts sur l'UDM
ip neigh showTable ARP — appareils vus sur le réseau
brctl showBridges réseau actifs
Firewall & NAT
iptables -L -n -vRègles firewall iptables actives
iptables -L -n -v --line-numbersRègles iptables avec numéros de ligne
iptables -t nat -L -n -vRègles NAT actives
ip6tables -L -n -vRègles firewall IPv6
WireGuard VPN
wg showÉtat du tunnel WireGuard (clients connectés)
wg showconf wg0Configuration complète WireGuard
cat /data/on_boot.d/10-wireguard-nat.shScript NAT WireGuard (persistance reboot)
UniFi Network
ubnt-device-info summaryRésumé état général UDM-SE
unifi-os shellEntrer dans le shell UniFi OS
systemctl status unifiÉtat du service UniFi Network
systemctl restart unifiRedémarrer le service UniFi Network
journalctl -u unifi -n 50 --no-pagerDerniers logs UniFi Network
Diagnostic réseau
ping 10.10.1.21Tester l'accès au homeserver
ping 8.8.8.8Tester l'accès Internet
traceroute 8.8.8.8Tracer la route vers Internet
nslookup obbconnect.netRésolution DNS obbconnect.net
cat /proc/net/devStatistiques trafic par interface
Système
uptimeCharge et durée de fonctionnement
free -hMémoire RAM disponible
df -hEspace disque
cat /data/udapi-config/unifi-go/config.jsonConfig réseau UDM (JSON brut)
ls /data/on_boot.d/Scripts exécutés au démarrage
cat /etc/versionVersion UniFi OS installée
Migration & config réseau
Migration subnet (20/05/2026)VLAN Admin migré de 192.168.1.0/24 → 10.10.1.0/24. Résout le conflit WireGuard sur les réseaux WiFi en 192.168.1.x
IP_Group_Admin_DevicesGroupe UniFi — appareils Admin autorisés à accéder au VLAN IoT : 10.10.1.200 à .204 + 10.10.1.21
WireGuard split-tunnel AllowedIPs10.10.1.0/24, 192.168.2.0/24, 192.168.30.0/24
1641 — AptVLAN60 · 192.168.60.0/24 · homeadmin
Diagnostic WiZ — état global
ha1641_WIZAfficher l'état complet WiZ + solaire + météo du 1641
Diagnostic Sensibo — état global
ha1641_SENSIBOAfficher l'état complet Sensibo du 1641 (mode, temp, humidité, cible, régime, attendu, status)
WiZ — connectivité directe
ping -c 3 192.168.60.40Tester WiZ Entrée 1 (light.1641_entree_1)
ping -c 3 192.168.60.41Tester WiZ Entrée 2 (light.1641_entree_2)
ping -c 3 192.168.60.42Tester WiZ Ext 1 (à installer)
ping -c 3 192.168.60.43Tester WiZ Ext 2 (à installer)
echo -n '{"method":"getPilot","params":{}}' | nc -u -w1 192.168.60.40 38899Requête UDP directe WiZ Entrée 1 (doit retourner JSON)
echo -n '{"method":"getPilot","params":{}}' | nc -u -w1 192.168.60.41 38899Requête UDP directe WiZ Entrée 2
Sensibo — diagnostic
ping -c 3 192.168.60.30Tester Sensibo Chambre Gauche (climate.chambre_gauche)
ping -c 3 192.168.60.31Tester Sensibo Chambre Droite (climate.chambre_droite)
ping -c 3 192.168.60.32Tester Sensibo Aire Ouverte (climate.aire_ouverte)
grep -i 'sensibo' /opt/docker/homeassistant/config/home-assistant.log | tail -20Logs Sensibo dans HA
ConnectLife THZEWIFI — diagnostic
ping -c 3 192.168.60.33Tester ConnectLife Chambre Gauche (climate.chambre_gauche_wifi)
ping -c 3 192.168.60.34Tester ConnectLife Chambre Droite (climate.chambre_droite_wifi)
ping -c 3 192.168.60.35Tester ConnectLife Aire Ouverte (climate.aire_ouverte_wifi)
grep -i 'connectlife' /opt/docker/homeassistant/config/home-assistant.log | tail -20Logs ConnectLife dans HA
Google Weather — diagnostic
curl -s 'http://localhost:8123/api/states/sensor.maison_temperature' -H 'Authorization: Bearer '$(grep token /opt/docker/homeassistant/config/secrets.yaml | head -1 | awk '{print $2}') | python3 -c 'import sys,json; d=json.load(sys.stdin); print(d["state"],"°C")'Température Google Weather
grep -i 'google_weather\|google weather' /opt/docker/homeassistant/config/home-assistant.log | tail -10Logs Google Weather dans HA
Binary sensors solaires — vérification
docker exec homeassistant wget -qO- 'http://localhost:8123/api/states/binary_sensor.maison_sun_golden_hour' --header 'Authorization: Bearer '$(grep token /opt/docker/homeassistant/config/secrets.yaml | head -1 | awk '{print $2}') 2>/dev/null | python3 -m json.toolÉtat golden hour (0° à 6°)
grep -i 'maison_sun' /opt/docker/homeassistant/config/configuration.yamlVérifier config binary sensors solaires
cat /opt/docker/homeassistant/config/configuration.yaml | grep -A5 'binary_sensor'Afficher les templates binary sensors
Automation crépuscule — debug
grep -i '1641.*crepuscule\|eclairage' /opt/docker/homeassistant/config/automations.yaml | head -5Vérifier présence automation crépuscule
docker logs homeassistant --tail 50 | grep -i 'wiz\|1641\|entree'Logs HA récents liés au 1641
Sonos 1641 — connectivité directe
ping -c 3 192.168.60.71Tester Sonos Era 100 R — leader (1641 Aire Ouverte SONOS) · VLAN60 DHCP réservée
ping -c 3 192.168.60.70Tester Sonos Era 100SL L — satellite paire stéréo · VLAN60 DHCP réservée
nc -zv 192.168.60.71 1400Tester port contrôle Sonos (TCP 1400) sur le leader
nc -zv 192.168.60.71 1443Tester port contrôle Sonos sécurisé (TCP 1443) sur le leader
curl -s http://192.168.60.71:1400/xml/device_description.xml | head -30Récupérer la description UPnP du leader Sonos (modèle, MAC, zone)
curl -s http://192.168.60.71:1400/status/zp | python3 -c 'import sys,re; print(re.findall(r"<ZoneName>(.*?)</ZoneName>", sys.stdin.read()))'Afficher le nom de zone du leader (doit être "1641 Aire Ouverte")
Sonos 1641 — config & intégration HA / MA
grep -A6 'sonos:' /opt/docker/homeassistant/config/configuration.yamlVérifier media_player advertise_addr 10.10.1.21 + hosts [192.168.60.71, 192.168.60.70]
curl -s 'http://localhost:8123/api/states/media_player.1641_aire_ouverte_sonos' -H 'Authorization: Bearer '$(grep token /opt/docker/homeassistant/config/secrets.yaml | head -1 | awk '{print $2}') | python3 -c 'import sys,json; d=json.load(sys.stdin); print(d["state"])'État du media_player Sonos 1641 (paire stéréo)
docker exec homeassistant wget -qO- 'http://localhost:8123/api/states' --header 'Authorization: Bearer '$(grep token /opt/docker/homeassistant/config/secrets.yaml | head -1 | awk '{print $2}') 2>/dev/null | python3 -c 'import sys,json; print(len([e for e in json.load(sys.stdin) if "1641_aire_ouverte_sonos" in e["entity_id"]]))'Compter les entités HA du Sonos 1641 (doit retourner ~10)
grep -i 'sonos' /opt/docker/homeassistant/config/home-assistant.log | tail -20Logs Sonos dans HA
docker logs music-assistant --tail 80 | grep -i 'sonos\|1641\|aire ouverte'Vérifier la détection du Sonos 1641 dans Music Assistant
docker logs homeassistant --tail 80 | grep -i 'sonos.*household\|sonos.*conflict'Surveiller un éventuel conflit de household Sonos (1641 séparé du 1643)
Sonos 1641 — firewall UniFi (cross-VLAN)
echo 'Internal 10.10.1.21 -> 1641 .70/31 : TCP 1400,1443 (PORTS_Sonos_Control) ALLOW'Règle "1641 - Homeserver to Sonos (Control TTS)"
echo '1641 .70/31 -> Internal 10.10.1.21 : TCP 1400 ALLOW'Règle "1641 - Sonos to Homeserver (Events)"
nc -zv 10.10.1.21 1400 || echo 'depuis le homeserver, le callback events Sonos repasse en .70/31 -> Internal'Vérifier l'ouverture du retour events (TCP 1400) côté homeserver
VLAN60 — réseau
ping -c 3 192.168.60.10Tester Lutron Bridge Pro 1641 (à installer)
ping -c 3 192.168.60.20Tester Apple TV 4K 1641 (à installer)
ping -c 3 192.168.60.30Tester Sensibo Chambre Gauche
ping -c 3 192.168.60.31Tester Sensibo Chambre Droite
ping -c 3 192.168.60.32Tester Sensibo Aire Ouverte
ping -c 3 192.168.60.33Tester ConnectLife Chambre Gauche
ping -c 3 192.168.60.34Tester ConnectLife Chambre Droite
ping -c 3 192.168.60.35Tester ConnectLife Aire Ouverte
ping -c 3 192.168.60.71Tester Sonos Era 100 R leader (74:ca:60:75:c4:1e)
ping -c 3 192.168.60.70Tester Sonos Era 100SL L satellite (74:ca:60:a3:64:12)