====== 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]]