Si le site tombe
Une procédure à suivre dans l'ordre, de la cause la plus probable à la plus rare. Chaque étape dit quoi vérifier, et quoi faire si c'est ça.
0. Prévenir
Dire à l'équipe que tu t'en occupes, pour ne pas être deux à intervenir en même temps.
1. Les VM sont-elles allumées ?
gcloud compute instances list --filter="name~tm-"STATUS doit être RUNNING pour tm-prod (le site et l'API) et tm-tooling (Jenkins).
Si une VM est arrêtée :
gcloud compute instances start tm-prod --zone=europe-west1-bLes conteneurs redémarrent tout seuls. Attendre une minute, puis réessayer.
2. Le DNS répond-il ?
dig +short time.jostud.com
dig +short api.time.jostud.comLes deux doivent répondre 34.140.149.187.
Si rien ne revient, ou une autre IP : vérifier la zone DNS de jostud.com chez Hostinger.
3. Quel est le message exact ?
curl -sI https://time.jostud.com | head -1
curl -sI https://api.time.jostud.com/api/auth/me | head -1| Résultat | Aller à |
|---|---|
| Rien, délai dépassé | 4. Traefik et le pare-feu |
502 Bad Gateway | 5. Les conteneurs |
| Erreur de certificat | 6. Let's Encrypt |
404 page not found | 7. Les routes |
200 pour le site, 401 pour l'API | Tout marche : le problème est côté client (cache, réseau de l'utilisateur) |
4. Traefik et le pare-feu
ssh eliashounnou@34.140.149.187
docker ps --filter name=timemanager-traefik
sudo ufw status| Constat | Solution |
|---|---|
Traefik n'est pas Up | cd /opt/timemanager/traefik && docker compose up -d, puis docker logs timemanager-traefik |
| UFW n'autorise pas 80 et 443 | ansible-playbook playbook.yml --tags ufw --ask-vault-pass |
| Tout est bon sur la VM | Vérifier la règle tm-allow-web et le tag web dans la console Google Cloud |
5. Les conteneurs
cd /opt/timemanager/app
docker compose ps
docker compose logs --tail 200 back| Constat | Solution |
|---|---|
back redémarre en boucle | Lire ses journaux : variable manquante (--tags app), migration en échec (voir l'étape 8) |
db n'est pas healthy | docker compose logs db : disque plein ? df -h |
Tout est Up | docker compose restart back |
| Disque plein | docker image prune -af, puis docker compose up -d |
6. Let's Encrypt
docker logs timemanager-traefik 2>&1 | grep -i acme | tail -20Les causes possibles : le DNS ne pointe plus vers tm-prod, le port 80 est fermé, ou trop de demandes cette semaine. Voir Dépannage.
7. Les routes
ls /opt/timemanager/traefik/dynamic/Il doit y avoir api.yml, frontend.yml, docs.yml et jenkins.yml. S'il en manque un : ansible-playbook playbook.yml --tags traefik --ask-vault-pass.
8. Un déploiement récent a tout cassé ?
Regarder les derniers builds dans Jenkins : backend, frontend. Si la panne a commencé juste après un déploiement, revenir à l'image précédente : voir Revenir à une version précédente.
Puis demander à l'équipe concernée un git revert dans main, sinon le prochain build republiera la version cassée.
9. Après la panne
| À faire | Pourquoi |
|---|---|
| Prévenir l'équipe que c'est réglé | Tout le monde sait que le service est revenu |
| Noter ce qui s'est passé, la cause et la solution | La prochaine fois ira plus vite |
| Ajouter la cause à Dépannage si elle n'y est pas | Garder la documentation à jour |
| Corriger la cause de fond | Une panne réglée à la main reviendra |