Suivre dans l'ordre — chaque couche dépend de la précédente
0💾
Disque & Docker
Espace disque et utilisation Docker — vérifier en premier
—
df -h / + docker system df. Un disque >90% bloque Traefik
(access.log) et Docker (pull, build). Vérifie aussi la taille de access.log Traefik.
Fix si KO :docker system prune -af, docker buildx prune -af,
ou sudo truncate -s 0 .../traefik/acme/access.log puis docker restart traefik.
1🌐
Résolution DNS
Le nom de domaine est-il connu et pointe-t-il au bon endroit ?
—
Interroge le resolver local et 1.1.1.1. Détecte les caches périmés
(CNAME → A record), les entrées manquantes et les divergences local/externe.
Fix si KO : vérifier le registrar, ou resolvectl flush-caches.
2🔗
Accessibilité HTTPS
Traefik répond-il ? Le certificat TLS est-il valide ?
—
Effectue un GET sur chaque URL Traefik depuis le serveur CC. Distingue
DNS introuvable, connexion refusée, timeout (6 s), erreur TLS et codes HTTP.
Fix si KO : vérifier que Traefik est en cours d'exécution et que le cert Let's Encrypt est valide.
3🔌
Ports internes
Les services backend écoutent-ils sur leurs ports ?
—
Pour chaque cible Traefik (ex: host.docker.internal:3011), vérifie que
le port TCP répond. Un 404 Traefik avec DNS/TLS OK signifie souvent un service
arrêté détecté ici.
Fix si KO : redémarrer le conteneur ou vérifier le port dans .env.
4🐳
Conteneurs Docker
Tous les conteneurs sont-ils en état "running" ?
—
Liste tous les conteneurs via docker ps -a sur l'env cible.
Signale les conteneurs en "restarting" (boucle de crash) ou arrêtés.
Fix si KO :docker logs <nom> pour identifier l'erreur, puis redémarrer depuis Actions.
5📁
Montages /mnt
Les volumes SFTP/NFS sont-ils montés ?
—
Vérifie la présence de /mnt/sftp, /mnt/freebox_nadege
et /mnt/sftp-media. Un montage manquant provoque des erreurs silencieuses
dans les applis qui lisent ces dossiers.
Fix si KO :systemctl start mnt-sftp.mount ou vérifier les credentials SFTP.
Vérifie via systemctl que les services critiques sont active/running.
Un bind9 inactif rend la résolution DNS locale impossible. Un docker inactif arrête tous les containers.
Fix si KO :sudo systemctl restart bind9 ou sudo systemctl restart docker.
📋 Commandes de référence — déploiement & diagnostic manuel
Déployer le CC (script autonome)
# Depuis le répertoire control_center/
scripts/deploy-cc.sh build # build image locale (x86_64)
scripts/deploy-cc.sh local # recréer CC local
scripts/deploy-cc.sh freebox # build ARM64 incrémental + redéployer
scripts/deploy-cc.sh toshiba # transfert image + redéployer
SYNOLOGY_SUDO_PASSWORD=... scripts/deploy-cc.sh synology # sudo docker load + redéployer
scripts/deploy-cc.sh all # tout en séquence
scripts/deploy-cc.sh status # statut CC sur toutes les machines
scripts/deploy-cc.sh diag freebox # diagnostic disque/containers/services
Diagnostic disque (Freebox VM / Toshiba)
ssh frederic@192.168.0.94
df -h / # espace disque
docker system df # images / containers / volumes / build cache
ls -lh .../traefik/acme/access.log # taille access.log (peut atteindre 200MB+)
sudo truncate -s 0 .../access.log # vider access.log (bloque Traefik si plein)
docker restart traefik # relancer Traefik après vidage
docker buildx prune -af # vider build cache (libère jusqu'à 5GB)
docker image prune -f # images dangling seulement
docker image prune -af # TOUTES les images non utilisées (⚠ destructif)
Traefik — config & debug
docker logs traefik --tail 50 # logs récents (chercher "no space" / "permission denied")
grep -n "url:" .../traefik/config/dynamic.yml # vérifier IPs des services backend
# Erreur 504 → IP incorrecte dans dynamic.yml (ex: 192.160.x.x au lieu de 192.168.x.x)
# Erreur 502 → container backend arrêté ou port incorrect
# Traefik rechargue dynamic.yml automatiquement (pas besoin de restart pour config)
# Sur laptop: copier tar dans le répertoire d'import (accessible sans sudo)
ssh -i ~/.ssh/id_ed25519_freebox frederic@192.168.0.10 \
'cat > /volume1/docker/cv_2026/imports/image.tar.gz' < /tmp/image.tar.gz
# Sur Synology: charger avec sudo
ssh frederic@192.168.0.10
export PATH="/usr/local/bin:/usr/bin:/bin:$PATH"
printf "%s\\n" "MOT_DE_PASSE" | sudo -Si -- docker load -i /volume1/docker/cv_2026/imports/image.tar.gz
# Le mot de passe sudo est dans /home/frederic/Documents/Dev/docker_install/cv_2026/.env (SYNOLOGY_SUDO_PASSWORD)
Freebox VM — build ARM64 incrémental
# Depuis laptop: transfert des fichiers sources modifiés
scp src/server.js scripts/*.sh frederic@192.168.0.94:/tmp/cc-incremental/src/
# Dockerfile incrémental (évite de refaire npm ci qui prend des heures sur ARM64)
cat > /tmp/cc-incremental/Dockerfile << 'EOF'
FROM cv_2026-control-center:latest
COPY src/ /app/src/
COPY scripts/ /app/scripts/
RUN chmod +x /app/scripts/control-actions.sh
ARG APP_VERSION=""
ENV APP_VERSION=\${APP_VERSION}
EOF
# Build sur la Freebox (1-2 secondes au lieu de 2 heures)
ssh frederic@192.168.0.94 "docker build --build-arg APP_VERSION=\$(date +%Y%m%d_%H%M) -t cv_2026-control-center:latest /tmp/cc-incremental/"
🧩 Instances CV actives
Chaque instance est un CV indépendant avec sa propre base de données et ses propres ports.
Chargement…
🔑 Credentials des stacks
Chargement…
➕ Créer une nouvelle instance
🏷️ Métadonnées SEO des versions CV
Titre SEO, description, og:image, canonical… utilisés par le frontend pour le référencement et le partage social.
Chargement…
🌐 Sites exposés
Chargement…
Prérequis
Services devant être actifs.
Docker Process (ex: ./dev.sh) Arrêté
Sites hébergés
Ports & stack
-
Variable
Port
Etat
Range
Suggestion
Commandes rapides
Multi-deploy (4 environnements)
Local + Freebox + Synology + RPI en parallele, logs separes.
Proxy inverse avec Let's Encrypt DNS-01 (Gandi). Fichiers sur la VM Freebox (192.168.0.94).
deploy_traefik.sh — déploie Traefik sur la Freebox VM via SSH + rsync : ① Génère le hash htpasswd pour le dashboard (mot de passe depuis .env) ② Synchronise les configs via rsync (traefik.yml, dynamic.yml, docker-compose.yml) — exclutacme/ et .env ③ Envoie séparément le .env (contient le token Gandi) ④ Prépare acme.json (chmod 600) — ne l'écrase pas s'il existe ⑤ Arrête Apache2 si actif (conflit port 80/443) ⑥ Pull la version configurée dans docker-compose.yml, docker compose down puis up -d ⑦ Vérifie : container running, certificats Let's Encrypt, endpoints HTTPS Prérequis :GANDIV5_PERSONAL_ACCESS_TOKEN + DASHBOARD_PASSWORD dans docker_install/traefik/.env
Services systemd personnalisés détectés sur la machine hôte (/etc/systemd/system/).
Chargement…
Routes actives
⚠️ Doublons Host détectés
Chargement...
Domaine
Machine → Cible
Accès
État
➕ Ajouter une route
🐳 Conteneurs Docker
Chargement…
🗂️ Git — Commit multi-repos
Commite simultanément projet-cv2026, docker_install, site-ateris et control_center.
Met automatiquement à jour le pointeur submodule cv2026 dans site-ateris.
Scheduler backups
Admin
Conserve dans /data/admin-auth.json.
🔑 Clé SSH BIND
Clé utilisée par le CC pour accéder à BIND (192.168.0.94).
Après un premier deploy sur un nouveau serveur, autorisez cette clé sur la machine BIND.
Scripts de déploiement
Exportez et testez les scripts utilisés pour déployer chaque environnement. Utile pour déboguer un déploiement hors interface.
📱 Téléphone (Termux)
Git push/pull des scripts Termux depuis le téléphone. …
Hôtes autorisés par Vite (VITE_ALLOWED_HOSTS dans docker_install/.env).
Séparés par virgule. Laisser vide = tous les hôtes autorisés (recommandé).
🔄 Mise à jour Control Center distants
Synchronise le dossier control_center/ (hors node_modules et data) vers chaque serveur distant puis rebuild + redémarre le conteneur.
Chargement des serveurs…
🧹 Maintenance Docker (prune journalier)
Supprime chaque jour les conteneurs arrêtés, images orphelines et réseaux inutilisés via docker system prune -f. S'exécute localement sur chaque instance CC.
🕐 Horloge machines
Vérifie l'heure de chaque hôte et de ses containers Docker. Les containers partagent l'horloge du noyau hôte — seul le fuseau horaire peut différer.
Le bouton sync force timedatectl set-ntp true + redémarrage systemd-timesyncd sur toutes les machines.
🛡️ Sécurité — Vulnérabilités
Importez le CSV d'un scan Trivy pour suivre et marquer les CVEs corrigées.
Commande : trivy image --format table image_name 2>&1 | head -5 ou export CSV direct.
📤 Importer / mettre à jour un CSV Trivy
🔀 Sync submodules Git
Met à jour les pointeurs submodule de projet-cv2026 et site-ateris
vers les derniers commits de control_center, puis commit + push automatiquement.
À lancer après chaque série de modifications dans le Control Center.
🔔 Notifications email
Reçois un email quand un backup, un deploy ou une mise à jour échoue (ou réussit).
⚙️ Paramètres SMTP
📲 Notifications push (ntfy.sh)
Reçois une notification push sur mobile/desktop quand une tâche manuelle démarre ou se termine. Utilise ntfy.sh (gratuit, sans compte).
Backup / Restore / Update
Un bouton par action, par site et par environnement. Update = backup automatique puis redéploiement.
Transfert de données
Copie les données d'un environnement vers un autre (backup sur source + restauration sur destination).
→
Fichiers de backup
Fichier
Taille
Date
Chargement...
Importer un backup depuis ce PC
📂 Glissez un fichier .tar.gz / .sql.gz ici, ou cliquez pour choisir
🌐 URL Sentinel
Vérification HTTP automatique toutes les 5 min. Alerte ntfy si down.
Chargement…
📺 Portal Mini — Kiosk
Fully Kiosk 192.168.0.33 · auto-heal screensaver · check 5 min
⚠️ Ne pas éditer directement — éditer sur Vivobook puis redéployer
Traefik
—
sourcedocker_install/traefik/config/dynamic.yml
Édité local → poussé via SSH au save
🗄️ Synology NAS 192.168.0.10
cv_2026
direct/volume1/docker/cv_2026/.env
/volume1/docker/cv_2026/docker-compose.yml
Chargé via docker save/load — .env éditable via SSH
CC
—
/volume1/docker/control_center/src/server.js
Hot-patch cat pipe SSH uniquement
🖥️ Toshiba Qosmio 192.168.0.57
CC (node-direct)
~/control_center/.env
Pas de Docker — systemd cv-control-center
git pull + npm install pour màj
photo-manager
~/photo-manager/.env (si existe)
~/photo-manager/docker-compose.yml
Images pré-buildées localement + docker save/load
🖥️ PC fixeintermittent 192.168.0.59
Ollama
—
Service systemd, pas de Docker
Fallback Ollama quand Toshiba HS
📂 Contenu des fichiers
Cliquez sur "Charger l'arbre"
Sélectionner un fichier
Aucun fichier sélectionné.
Ajouter un serveur
Détail
🧙 Installer un nouveau Control Center
▼
Déploie automatiquement le CC sur une nouvelle machine via SSH (installe Docker, clone le repo, crée le .env, démarre le container).
1 · Cible SSH
2 · Config CC
3 · Options
4 · Résumé
5 · Installation
Renseignez les informations de connexion SSH de la machine cible.
Ex : 192.168.0.85 (RPi Zero)
Laisser vide si la clé CC est déjà dans authorized_keys
RPi Zero 2W → arm64 · RPi Zero 1 → armv6 · RPi 4+ → arm64
📋 Script de préparation de la machine (à exécuter AVANT le wizard)
Copiez et exécutez ce script en SSH sur la machine cible. Il installe tmux, met à jour le système et affiche les infos système utiles. ⚠️ Windows : utilisez PuTTY ou Windows Terminal avec OpenSSH pour vous connecter.
Configuration du Control Center qui sera installé sur la machine cible.
Node.js direct : pas de Docker requis, idéal RPi Zero 2W, machines ≤ 512 Mo RAM
Identifiant lisible de la machine (ex : rpi-zero)
Choisissez un mot de passe robuste
Options avancées.
Repo Git du Control Center (ne pas modifier sauf fork)
⚠️ RPi Zero — Docker armv6
Le RPi Zero utilise ARM v6 (armv6l). Docker officiel ne supporte plus armv6 depuis 2023.
Assurez-vous d'utiliser Raspberry Pi OS 32-bit (Bullseye ou Bookworm) et le script Docker officiel get.docker.com qui reste compatible.
Alternative : Installer Docker manuellement.
🟢 Mode Node.js direct — RPi nano proof
Pas de Docker requis. Idéal pour : RPi Zero 2W (arm64, ≤ 512 Mo RAM), RPi 3/4 sous contrainte mémoire, ou toute machine où Docker serait trop lourd. Prérequis : Debian/Ubuntu, curl, git, sudo sans mot de passe.
Node.js 20 LTS sera installé automatiquement si absent. Un service systemd cv-control-center sera créé et activé au démarrage.
Vérifiez les paramètres avant de lancer l'installation.
Le script va :
Tester la connexion SSH
Copier la clé publique CC → authorized_keys (si option cochée)
Installer Docker sur la cible (si absent)
Cloner le repo CC dans ~/control_center
Créer le fichier .env avec la configuration
Démarrer le container via docker compose (nohup)
Attendre le health check CC (3 min max)
📋 Sortie en direct
✅ CC installé avec succès !
🔡 DNS — BIND9
Chargement…
🔍 Résolution DNS locale
Zones DNS
Nom
TTL
Type
Valeur
+ Ajouter un enregistrement
Le numéro de série (Serial) sera automatiquement mis à jour à la sauvegarde.
Backups configuration BIND
Fichier
Taille
Date
Chargement…
Backup automatique BIND
🖥️ 1 — Démarrer en local
Depuis le répertoire ~/Documents/Dev sur le Vivobook.
Control Center (interface web)
./dev-control-center.sh
# Ouvre automatiquement sur http://localhost:3990
# Pour arrêter :
./dev-control-center.sh stop
Stack cv2026 (Docker local)
cd ~/Documents/Dev/docker_install/cv_2026
docker compose -p cv_2026 --env-file .env up -d --no-recreate
Ou depuis le CC : onglet Actions → section Stack locale → bouton ▶ Démarrer.
Autres stacks locales
site-ateris local : CC → Actions → site-ateris · Local
abstention local : CC → Actions → abstention-villefontaine · Local
sync-transfer-web : CC → Actions → Sync Transfer Web · Local
Push BDD → Freebox VM : écrase la BDD distante avec la locale (cv_2026)
Pull BDD ← Freebox VM : écrase la BDD locale avec la distante
⚠️ Ces actions sont destructives pour la BDD cible. Un backup est conseillé avant.
E. Script shell direct
cd ~/Documents/Dev
# Local → Freebox
./sync-db-local-to-prod.sh
# Freebox → Local
./sync-db-prod-to-local.sh
🛠️ Déploiement Manuel — architecture & procédures
Pour chaque composant : comment reconstruire, déployer et vérifier sans le CC. Utile en cas de panne ou d'incident photo/data.
📐 Architecture générale
Local (Vivobook 192.168.0.91) — sources, build, CC de contrôle (:3990)
Freebox VM (192.168.0.94) — prod publique, Traefik HTTPS, stacks cv_2026/site_ateris/abstention
Synology NAS (192.168.0.10) — réplique, images chargées via docker load (pas de build natif)
Toshiba (192.168.0.57) — Ollama, ScriptPilot, CC secondaire
Le CC orchestre tout via SSH. En cas de panne du CC, chaque étape est reproductible manuellement.
🚀 cv2026 — déploiement Freebox (prod)
# Depuis le projet local :
cd /home/frederic/Documents/Dev/projet-cv2026
# 1. Sync sources + stack
LOCAL_DOCKER_DIR=~/Documents/Dev/docker_install \
SSH_IDENTITY_FILE=~/.ssh/id_ed25519_freebox \
bash scripts/deploy_freebox.sh sync
# 2. Build + deploy (reconstruit les images sur la VM)
bash scripts/deploy_freebox.sh all
# ⚠️ Ne JAMAIS docker cp ou rsync le dossier backend/data/
# Les volumes MySQL et backend_data sont gérés indépendamment.
# Pour transférer la DB : data-ops.sh transfer cv2026 local freebox
📸 Récupérer une photo/fichier perdu (cv2026)
# La photo est dans le volume cv2026_backend_data ou backend/data/ local.
# 1. Vérifier le dernier backup Freebox :
ls -lht ~/Documents/Dev/docker_install/backups/data-ops/cv2026/freebox/
# 2. Restaurer depuis backup (ne touche pas le code) :
bash scripts/data-ops.sh restore cv2026 freebox \
~/Documents/Dev/docker_install/backups/data-ops/cv2026/freebox/cv2026_freebox_db_XXXXXX.sql.gz
# 3. Ou récupérer un fichier du volume directement sur Freebox :
ssh -i ~/.ssh/id_ed25519_freebox frederic@192.168.0.94 \
"docker cp cv2026-backend:/app/public/photos/photo.jpg /tmp/"
scp -i ~/.ssh/id_ed25519_freebox frederic@192.168.0.94:/tmp/photo.jpg ~/
Le Portainer sur Synology écoute en mode agent (:9001), pas en mode UI. Il faut l'ajouter comme endpoint dans Portainer local ou Freebox.
# Depuis Portainer local (http://localhost:9000 ou portainer.suretat.com) :
# 1. Environments → Add environment → Agent
# 2. Name : Synology NAS
# 3. Agent URL : tcp://192.168.0.10:9001
# 4. Save — l'endpoint apparaît dans la liste
# Si portainer_agent n'est pas lancé sur Synology :
ssh -i ~/.ssh/id_ed25519 frederic@192.168.0.10
printf 'fr3d3r1cn1l4\n' | sudo -S /usr/local/bin/docker run -d \
--name portainer_agent --restart always \
-p 9001:9001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_agent_data:/data \
portainer/agent:latest
🖥️ Cycle de développement local
Éditer server.js
→
docker restart
→
Tester :3990
→
Commiter
Lancer le CC
cd ~/Documents/Dev
./dev-control-center.sh # build si besoin + démarrage
./dev-control-center.sh stop # arrêt
./dev-control-center.sh rebuild # force rebuild image
Itérer sans rebuild rapide
Le dossier control_center/ est monté en volume — Node relit les fichiers au démarrage. Pas besoin de rebuild sauf si Dockerfile ou package.json change.
docker restart cv-control-center # < 2 secondes
Quand faire un rebuild complet ?
Modification du Dockerfile (nouvelle dépendance système)
# Cloner projet-cv2026 + ses submodules (control_center inclus)
git clone --recurse-submodules git@github.com:fredericsuretat/projet-cv2026.git
# Si déjà cloné sans --recurse-submodules :
git submodule update --init --recursive
Ne jamais éditer directement dans site-ateris/control_center/
⚠️ Les dossiers site-ateris/control_center/ et projet-cv2026/control_center/ sont des copies lecture seule (submodules). Toujours éditer dans ~/Documents/Dev/control_center/ directement.
Actions → Synology : publish all (construit les images localement, transfert, charge sur le NAS)
Vérifier après déploiement
# Vérifier le CC distant
curl http://192.168.0.94:3990/api/health
# Vérifier les conteneurs sur la Freebox
ssh frederic@192.168.0.94 "docker ps --format 'table {{.Names}}\\t{{.Status}}'"
Prérequis : clé SSH autorisée
Serveurs → sélectionner la machine → 📋 Prérequis → Copier la clé SSH publique → l'ajouter dans ~/.ssh/authorized_keys sur la machine cible.
📦 Déployer le CC sur une nouvelle machine
Remplis les informations SSH ci-dessous et clique sur Déployer. Le script va automatiquement : vérifier / installer Docker, cloner le repo, créer le .env, lancer le conteneur et vérifier que tout fonctionne.
📋 Sortie en direct
📖 Instructions manuelles (si le déploiement automatique n'est pas disponible)
Étape 1 — Installer Docker (si absent)
if command -v docker &>/dev/null; then
echo "Docker $(docker --version) déjà installé"
else
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
fi
ssh frederic@192.168.0.94
# Prérequis : Docker déjà présent (Freebox OS)
git clone https://github.com/fredericsuretat/control_center.git ~/Documents/Dev/control_center
git clone https://github.com/fredericsuretat/docker_install.git ~/Documents/Dev/docker_install
# Copier le .env depuis local ou créer depuis template
cp ~/Documents/Dev/docker_install/cc/.env.example ~/Documents/Dev/docker_install/cc/.env
# Lancer
cd ~/Documents/Dev/docker_install/cc
docker compose up -d --build
Mise à jour (via CC → 🚀 Déployer CC)
Le CC Vivobook transfère le bundle git via SSH, rebuild l'image nativement sur Freebox, puis relance le container. Tout est automatique via l'UI "Serveurs".
Build x86 local → docker save/gzip → SSH → docker load → synology_first_boot_init.sh
Raison load-images
Le Synology est ARM64 mais ne peut pas builder nativement (build multi-arch trop lent). L'image est buildée sur Vivobook (x86_64), exportée en .tar.gz, transférée via SSH, puis chargée avec docker load.
1ère installation
ssh frederic@192.168.0.10
sudo mkdir -p /volume1/docker/cv_2026
# Copier depuis Freebox ou Vivobook :
scp frederic@192.168.0.94:~/Documents/Dev/docker_install/cv_2026/synology_first_boot_init.sh /volume1/docker/cv_2026/
sudo bash /volume1/docker/cv_2026/synology_first_boot_init.sh
Mise à jour
Via CC → Serveurs → Synology → 🚀 Déployer CC. Timeout : 40 min (docker load ~22 min).
⚠️ sudo sur Synology : nécessite SYNOLOGY_SUDO_PASSWORD dans le .env CC. Le CC le passe via echo pass | sudo -S.
🔵 Toshiba — Méthode load-images x86_64 standalone
IP
192.168.0.57
Utilisateur
frederic
Clé SSH
id_ed25519_freebox
Port CC
3990
Stack CC
~/control_center/
Méthode MAJ
git bundle → reset hard + docker compose standalone up --build (natif)
Ordre des opérations MAJ
git bundle local → transfert SSH → git fetch/reset sur Toshiba
docker compose -f docker-compose.standalone.yml up -d --build
Health check : curl http://192.168.0.57:3990/api/health × 20 tentatives
✅ Ollama tourne sur Toshiba (port 11434). Photo Manager aussi (ports 5173 + 8001).
⚪ Raspberry Pi — Méthode load-images ARM64 nano2
IP
192.168.0.95
Utilisateur
pi
Clé SSH
id_ed25519_freebox
Port CC
3990
Stack CC
~/control_center/
Méthode MAJ
Build local → docker save ARM64 → SSH → docker load (cross-arch)
⚠️ Clé SSH — prérequis obligatoire
La clé du CC (id_ed25519_freebox.pub) doit être dans ~pi/.ssh/authorized_keys. Sans ça, toutes les opérations SSH du CC échouent avec "Permission denied".
ssh pi@192.168.0.95 # avec mot de passe la 1ère fois
mkdir -p ~/.ssh && chmod 700 ~/.ssh
# Depuis Vivobook :
cat ~/.ssh/id_ed25519_freebox.pub | ssh pi@192.168.0.95 "cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
git pull local + docker compose restart (code monté en volume)
Redémarrage après modification
cd ~/Documents/Dev/docker_install/cc
docker compose restart control-center
Le code control_center/src/server.js est monté en volume — pas de rebuild nécessaire pour les changements JS. Rebuild seulement si Dockerfile ou package.json changent.
⏱️ Planification des sauvegardes
Configurer les sauvegardes automatiques par machine. Les instances distantes sont contactées via leur CC.
Chargement…
Sélectionner une machine…
📊 Vue d'ensemble
Cliquer sur une carte pour filtrer les fichiers. Gérer backups et mises à jour par machine.
Chargement…
📂 Fichiers de sauvegarde
Type
Site / Env
Fichier
Taille
Date
Actions
Chargement…
📤 Destinations de sauvegarde
Dossier local, partage réseau ou remote rclone (Google Drive, S3…). Le sync est automatique après chaque backup.
Chargement…
Nouvelle destination
📅 Planning — sauvegardes & mises à jour
Vue calendrier des tâches exécutées et des prochains runs planifiés.
…
Chargement…
Backup OK Backup échoué Planifié (prochain run) Update / Deploy En cours
⏰ Prochains événements planifiés
Chargement…
🚀 Déploiements automatiques
Planifie des déploiements automatiques vers les serveurs distants (Freebox, Synology…).
Chargement…
🕐 Historique des exécutions
Dernières tâches de backup exécutées (toutes sources confondues).
Date
Tâche
Source
Durée
Statut
Chargement…
📁 Scopes de sauvegarde
État des dossiers locaux utilisés comme source pour les sauvegardes et la synchronisation cloud.
Cliquez "Vérifier" pour analyser…
🔍 Résolution réseau par couches OSI
Référence de diagnostic pour l'infra suretat.com — du câble à l'application.
ip route show # routes actives
ip route get 192.168.0.150 # route pour une IP spécifique
Réseau Docker interne
docker network ls # réseaux Docker
docker network inspect cv_2026_default # IPs des conteneurs cv2026
# host.docker.internal → IP du host depuis un conteneur
⚠️ host.docker.internal est l'IP du host depuis Traefik/conteneurs. Sur Linux elle doit être explicitement mappée dans docker-compose via extra_hosts ou résolu par Docker Desktop.
L4 Transport (TCP / Ports)
Ouverture des ports — Docker, services, firewall. Le port doit être LISTEN pour que le service soit accessible.
docker logs --tail=100 cv2026-backend
docker logs --tail=100 cv2026-mysql
docker logs -f cv2026-backend # suivi temps réel
# CC → Dashboard → icône 📋 sur chaque conteneur
Variables d'environnement (APP_ENV)
# Vérifier APP_ENV dans le conteneur :
docker exec cv2026-backend env | grep -E "APP_ENV|NODE_ENV|PORT"
# Valeurs attendues : freebox | local | synology
# Si mauvaise valeur → force-recreate (restart ne relit pas .env) :
docker compose -p cv_2026 --env-file .env up -d --force-recreate backend
Rebuild image après modif code
# Rebuild uniquement le service backend :
docker compose -p cv_2026 --env-file .env build backend
docker compose -p cv_2026 --env-file .env up -d --no-deps backend
# Rebuild complet (slow) :
docker compose -p cv_2026 --env-file .env build --no-cache
docker compose -p cv_2026 --env-file .env up -d
Base de données MySQL
# Connexion MySQL depuis le host :
mysql -h 127.0.0.1 -P \${MYSQL_PORT} -u \${MYSQL_USER} -p\${MYSQL_PASSWORD} \${MYSQL_DATABASE}
# Connexion depuis l'intérieur du conteneur :
docker exec -it cv2026-mysql mysql -uroot -p
# Vérifier que le healthcheck passe :
docker exec cv2026-mysql mysqladmin ping -h localhost -uroot -p\$MYSQL_ROOT_PASSWORD
⚠️ Problème MySQL au déploiement : si le backend démarre avant que MySQL soit healthy, le backend crash. Le script deploy_freebox.sh attend maintenant explicitement le healthcheck avant de lancer docker compose up.
Installe Ollama + Open WebUI via Docker sur le serveur cible.
L'API sera accessible sur le port 11434, le WebUI sur le port 3000. Pour changer de serveur cible : cochez "🤖 Ollama installé" dans la fiche serveur (Config).
Sortie tâche
.env files réseau
Sélectionner un fichier
🧠 IA — Santé & RAG
Containers stack IA
Chargement…
Agents collecteurs
🪵 Logs Docker → Chroma (auto quotidien)
Collecte les logs des containers (local + Freebox + Synology) et les indexe dans Chroma. Lancé auto au démarrage et toutes les 24h.
Chaque scope peut être synchronisé automatiquement vers une ou plusieurs destinations après chaque sauvegarde.
📋 Guide de configuration
Google Drive (gdrive)
Cliquez "+ Ajouter" → type Google Drive → "Démarrer l'autorisation" → le navigateur ouvre Google. Nécessite que CC soit en mode réseau hôte (network_mode: host).
Amazon S3 / Backblaze B2
Access Key + Secret Key dans le formulaire. Aucune interaction navigateur requise.
SFTP
Hôte + utilisateur + mot de passe ou clé SSH. Fonctionne aussi avec le NAS Synology.
Local
Chemin absolu sur l'hôte (le dossier doit être accessible depuis le conteneur CC). Utilisez un chemin monté dans le volume CC.
Nouveau remote rclone
Nom seul, sans chemin — ex: gdrive (pas gdrive:ControlCenter). Le chemin se configure dans les destinations.
Nécessite que le port 53682 soit libre et que le navigateur tourne sur la même machine que le serveur.
📂 Remote local
Un remote "local" n'a pas de configuration spéciale.
Il pointe vers un dossier du système de fichiers du conteneur.
Assurez-vous que le dossier est accessible (monté en volume).
🏥 Stabilité — Vue réseau
Chargement…
🗺️ Topologie réseau
Machine Réseau IoT Internet| En ligne Hors ligne Intermittent| Traefik SSH LAN
Détails
Ajouter un nœud
Ajouter un service
Ajouter un lien
🏷️ Badges hébergement
Choisissez où est hébergé chaque site. "Auto" utilise la détection par IP.