====== Guide de DĂ©pannage ====== 💡 **Conseil** : Avant de paniquer, vĂ©rifiez les bases (rĂ©seau, DNS, logs) ===== Diagnostic rapide ===== ==== Commandes de diagnostic gĂ©nĂ©ral ==== # 1. VĂ©rifier tous les services docker ps --format "table {{.Names}}\t{{.Status}}" # 2. VĂ©rifier les ressources systĂšme docker stats --no-stream # 3. Espace disque df -h # 4. MĂ©moire free -h # 5. Charge systĂšme uptime ==== Script de diagnostic automatique ==== #!/bin/bash # /opt/scripts/diagnose.sh echo "=========================================" echo "🔍 DIAGNOSTIC INFRASTRUCTURE" echo "=========================================" echo "" echo "📊 État des services:" docker ps --format "table {{.Names}}\t{{.Status}}" | grep -E "genealogie|paperless|vaultwarden|traefik|adguard" echo "" echo "đŸ’Ÿ Espace disque:" df -h | grep -E "/$|/opt" echo "" echo "🧠 MĂ©moire:" free -h | grep -E "Mem|Swap" echo "" echo "đŸŒĄïž Charge systĂšme:" uptime echo "" echo "🔌 RĂ©seau:" ping -c 3 8.8.8.8 >/dev/null 2>&1 && echo "✅ Internet OK" || echo "❌ Pas d'internet" ping -c 3 192.168.1.254 >/dev/null 2>&1 && echo "✅ Passerelle OK" || echo "❌ ProblĂšme passerelle" echo "" echo "🔒 Certificats SSL (expiration):" for domain in genealogie paperless vaultwarden wiki; do EXPIRE=$(echo | openssl s_client -servername $domain.cotting.fr -connect 192.168.1.200:443 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d= -f2) echo " $domain.cotting.fr: $EXPIRE" done echo "=========================================" --- ===== ProblĂšmes courants ===== ==== Service inaccessible (404 ou timeout) ==== **SymptĂŽme :** Page "404 Not Found" ou timeout lors de l'accĂšs Ă  un service **Diagnostic :** # 1. VĂ©rifier que le container tourne docker ps | grep [nom-service] # Si "Restarting" ou absent : docker logs [container] --tail 50 # 2. VĂ©rifier le DNS nslookup [service].cotting.fr 192.168.1.200 # Doit retourner : 192.168.1.200 # 3. VĂ©rifier Traefik Dashboard # http://192.168.1.200:8080 # HTTP → Routers → Chercher le service # Doit ĂȘtre en VERT # 4. Tester depuis Traefik docker exec traefik ping -c 3 [container-name] docker exec traefik wget -O- http://[container]:80 | head **Solutions :** # Solution 1 : RedĂ©marrer le service cd /opt/stacks/[service] docker compose restart # Solution 2 : RedĂ©marrer Traefik docker restart traefik # Solution 3 : VĂ©rifier les labels Docker docker inspect [container] | grep traefik # Solution 4 : RecrĂ©er le container cd /opt/stacks/[service] docker compose down docker compose up -d --- ==== Certificat SSL invalide ou expirĂ© ==== **SymptĂŽme :** Erreur de certificat dans le navigateur **Diagnostic :** # VĂ©rifier les certificats sudo cat /opt/stacks/traefik/letsencrypt/acme.json | jq '.le.Certificates[] | .domain.main' # VĂ©rifier l'expiration echo | openssl s_client -servername [service].cotting.fr -connect 192.168.1.200:443 2>/dev/null | openssl x509 -noout -dates **Solutions :** # Solution 1 : Forcer le renouvellement docker restart traefik # Solution 2 : Supprimer le certificat et le rĂ©gĂ©nĂ©rer docker stop traefik sudo cp /opt/stacks/traefik/letsencrypt/acme.json /opt/backups/acme.json.backup sudo nano /opt/stacks/traefik/letsencrypt/acme.json # Supprimer l'entrĂ©e du domaine concernĂ© dans le JSON docker start traefik # Solution 3 : VĂ©rifier les logs Traefik docker logs traefik | grep -i certificate docker logs traefik | grep -i acme --- ==== Container en boucle de redĂ©marrage (Restarting) ==== **SymptĂŽme :** Container affiche "Restarting (X)" dans `docker ps` **Diagnostic :** # Voir les logs d'erreur docker logs [container] --tail 100 # Voir les derniers crashs docker events --since 1h | grep [container] **Causes frĂ©quentes et solutions :** **Cause 1 : ProblĂšme de permissions** # Exemple pour Paperless sudo chown -R 999:999 /opt/stacks/paperless/database sudo chown -R 1000:1000 /opt/stacks/paperless/data # Exemple pour Vaultwarden sudo chown -R 1000:1000 /opt/stacks/vaultwarden/data **Cause 2 : Configuration incorrecte** # VĂ©rifier le .env cat /opt/stacks/[service]/.env # VĂ©rifier le docker-compose.yml cat /opt/stacks/[service]/docker-compose.yml # Tester la syntaxe YAML docker compose config **Cause 3 : Base de donnĂ©es corrompue** # Voir [[infrastructure:backups|restauration depuis backup]] # Ou rĂ©initialiser (⚠ PERTE DE DONNÉES) cd /opt/stacks/[service] docker compose down sudo rm -rf database docker compose up -d --- ==== DNS ne fonctionne pas ==== **SymptĂŽme :** `nslookup` ne retourne pas 192.168.1.200 **Diagnostic :** # Tester DNS nslookup [service].cotting.fr 192.168.1.200 # VĂ©rifier AdGuard docker ps | grep adguard docker logs adguard --tail 50 **Solutions :** # Solution 1 : VĂ©rifier DNS Rewrites dans AdGuard # https://adguard.cotting.fr # Filters → DNS rewrites # VĂ©rifier que [service].cotting.fr → 192.168.1.200 existe # Solution 2 : RedĂ©marrer AdGuard docker restart adguard sleep 10 # Solution 3 : Vider le cache DNS du client # Linux sudo systemd-resolve --flush-caches # Windows ipconfig /flushdns # Mac sudo dscacheutil -flushcache --- ==== Espace disque plein ==== **SymptĂŽme :** Services ne dĂ©marrent pas, erreurs d'Ă©criture **Diagnostic :** # VĂ©rifier l'espace df -h # Trouver les gros fichiers sudo du -sh /opt/stacks/* | sort -h sudo du -sh /opt/backups/* | sort -h sudo du -sh /var/lib/docker/* | sort -h **Solutions :** # Solution 1 : Nettoyer Docker docker system prune -a --volumes # ⚠ Attention : supprime images et volumes non utilisĂ©s # Solution 2 : Nettoyer les backups anciens find /opt/backups -type d -name "20*" -mtime +60 -exec rm -rf {} \; # Solution 3 : Nettoyer les logs sudo journalctl --vacuum-time=7d docker logs --since 24h [container] > /dev/null # Rotation # Solution 4 : Identifier les gros fichiers sudo find /opt -type f -size +100M -exec ls -lh {} \; --- ==== Base de donnĂ©es ne dĂ©marre pas ==== **SymptĂŽme :** MariaDB ou PostgreSQL en erreur **Diagnostic pour MariaDB (GĂ©nĂ©alogie) :** # Logs docker logs genealogie-db --tail 100 # Erreurs courantes : # - "Permission denied" → ProblĂšme de permissions # - "Table doesn't exist" → Base corrompue # - "Can't connect" → ProblĂšme rĂ©seau **Solutions MariaDB :** # Solution 1 : Permissions sudo chown -R 999:999 /opt/stacks/genealogie/database sudo chmod -R 700 /opt/stacks/genealogie/database # Solution 2 : RĂ©parer les tables docker exec genealogie-db mariadb-check -u root -p --auto-repair --all-databases # Solution 3 : Restaurer depuis backup # Voir [[infrastructure:backups:restore]] **Diagnostic pour PostgreSQL (Paperless) :** # Logs docker logs paperless-db --tail 100 **Solutions PostgreSQL :** # Solution 1 : Permissions sudo chown -R 999:999 /opt/stacks/paperless/database sudo chmod -R 700 /opt/stacks/paperless/database # Solution 2 : Restaurer depuis backup # Voir [[infrastructure:backups:restore]] --- ==== Traefik ne dĂ©tecte pas un service ==== **SymptĂŽme :** Router n'apparaĂźt pas dans le Dashboard Traefik **Diagnostic :** # VĂ©rifier les labels docker inspect [container] | grep "traefik" # VĂ©rifier le rĂ©seau docker inspect [container] | grep -A 5 "Networks" # Doit afficher "dashboard_web" # VĂ©rifier les logs Traefik docker logs traefik | grep -i [service] **Solutions :** # Solution 1 : VĂ©rifier que le container est sur dashboard_web docker network connect dashboard_web [container] # Solution 2 : RedĂ©marrer Traefik docker restart traefik # Solution 3 : RecrĂ©er le container cd /opt/stacks/[service] docker compose down docker compose up -d docker restart traefik # Solution 4 : CrĂ©er un fichier de config statique sudo nano /opt/stacks/traefik/dynamic/[service].yml # Voir [[infrastructure:procedures:nouveau-service]] --- ==== Backup Ă©choue ==== **SymptĂŽme :** Script de backup retourne une erreur **Diagnostic :** # Logs du backup tail -100 /var/log/backup-all.log # Test manuel sudo /opt/scripts/backup-[service].sh **Causes frĂ©quentes :** # Cause 1 : Espace disque plein df -h /opt/backups # Cause 2 : Permissions ls -la /opt/backups/ sudo chown -R root:root /opt/scripts/ sudo chmod +x /opt/scripts/*.sh # Cause 3 : Base de donnĂ©es inaccessible docker ps | grep -E "db|mariadb|postgres" # Cause 4 : Fichier .env manquant/corrompu cat /opt/stacks/[service]/.env --- ===== ProblĂšmes rĂ©seau ===== ==== Pas d'accĂšs Internet depuis les containers ==== **Diagnostic :** # Test depuis un container docker exec genealogie-app ping -c 3 8.8.8.8 # VĂ©rifier la config rĂ©seau Docker sudo cat /etc/docker/daemon.json # VĂ©rifier le DNS Docker docker run --rm busybox nslookup google.com **Solutions :** # Solution 1 : RedĂ©marrer Docker sudo systemctl restart docker # Solution 2 : Configurer le DNS Docker sudo nano /etc/docker/daemon.json ``` { "dns": ["8.8.8.8", "8.8.4.4"] } ``` sudo systemctl restart docker # Solution 3 : VĂ©rifier le firewall sudo ufw status sudo iptables -L --- ===== ProcĂ©dures d'urgence ===== ==== Tout redĂ©marrer (urgence) ==== # ⚠ À utiliser en dernier recours # 1. RedĂ©marrer tous les services cd /opt/stacks/genealogie && docker compose restart cd /opt/stacks/paperless && docker compose restart cd /opt/stacks/vaultwarden && docker compose restart docker restart traefik adguard heimdall dokuwiki # 2. Ou redĂ©marrer Docker complĂštement sudo systemctl restart docker # 3. Ou redĂ©marrer le serveur sudo reboot ==== Restauration complĂšte depuis backup ==== Voir [[infrastructure:backups:restore|Guide de restauration complet]] ==== Mode maintenance ==== # ArrĂȘter tous les services sauf infrastructure cd /opt/stacks/genealogie && docker compose stop cd /opt/stacks/paperless && docker compose stop cd /opt/stacks/vaultwarden && docker compose stop # Garder actifs : Traefik, AdGuard, Heimdall, DokuWiki # Message dans Heimdall : # "Infrastructure en maintenance - Retour prĂ©vu : [date/heure]" --- ===== Logs et monitoring ===== ==== AccĂ©der aux logs ==== # Logs temps rĂ©el docker logs -f [container] # DerniĂšres lignes docker logs --tail 100 [container] # Logs avec timestamps docker logs -t [container] # Logs depuis une date docker logs --since "2026-02-01T00:00:00" [container] # Logs systĂšme sudo journalctl -u docker -f sudo journalctl -u docker --since today ==== Exporter les logs pour analyse ==== # CrĂ©er un rapport de logs mkdir -p /tmp/logs-export-$(date +%Y%m%d) for container in genealogie-app paperless-app vaultwarden traefik adguard; do docker logs $container --tail 1000 > /tmp/logs-export-$(date +%Y%m%d)/$container.log 2>&1 done # Compresser tar -czf /opt/backups/logs-export-$(date +%Y%m%d).tar.gz /tmp/logs-export-$(date +%Y%m%d)/ --- ===== Checklist de dĂ©pannage gĂ©nĂ©rale ===== Quand un problĂšme survient, suivre cette checklist : - [ ] **Identifier le problĂšme** : Quel service ? Quel symptĂŽme ? - [ ] **Consulter les logs** : `docker logs [container]` - [ ] **VĂ©rifier l'Ă©tat** : `docker ps | grep [service]` - [ ] **Tester le rĂ©seau** : DNS, ping, curl - [ ] **VĂ©rifier Traefik** : Dashboard, routers, services - [ ] **Essayer un redĂ©marrage** : `docker compose restart` - [ ] **VĂ©rifier les ressources** : Espace disque, mĂ©moire - [ ] **Consulter cette page** : ProblĂšmes connus - [ ] **Restaurer depuis backup** si nĂ©cessaire - [ ] **Documenter la solution** dans cette page ! --- ===== Contacts et ressources ===== * **Admin :** Olivier Cotting - olivier@cotting.fr * **Documentation :** [[infrastructure:start|Wiki infrastructure]] * **Backups :** [[infrastructure:backups|Gestion backups]] * **ProcĂ©dures :** [[infrastructure:procedures|ProcĂ©dures]] ===== Ajouter un problĂšme Ă  cette page ===== Si vous rencontrez un nouveau problĂšme et trouvez la solution : - Cliquez sur "Edit this page" - Ajoutez une nouvelle section avec : * **SymptĂŽme** : Description du problĂšme * **Diagnostic** : Comment identifier la cause * **Solution** : Étapes de rĂ©solution - Sauvegardez Merci de contribuer Ă  cette documentation ! 📝 ---- [[infrastructure:start|← Retour accueil]]