From a186273e47c6f378167a046c18018d1068be27a1 Mon Sep 17 00:00:00 2001 From: Paperclip FoundingEngineer Date: Sat, 2 May 2026 14:31:50 +0000 Subject: [PATCH] fix(agenthub): Add missing Ofelia scheduler service to compose.coolify.yml Resolves BARAAA-70 - agenthub-ofelia-1 container restart loop The Ofelia scheduler was not defined in the compose file, only the Ofelia labels on the backup service existed. This caused a container restart loop because there was no Ofelia service to read those labels and execute scheduled tasks. Changes: - Add ofelia service with mcuadros/ofelia:latest image - Mount Docker socket read-only for container monitoring - Depend on postgres (aligned with compose.lan.yml) - Add ofelia.enabled=true label for auto-activation - Add verification script (scripts/verify-ofelia.sh) - Add verification documentation (docs/BARAAA-70-VERIFICATION.md) After deployment, the Ofelia container should start successfully and detect the backup-daily cron job (daily at 3am UTC). Co-Authored-By: Paperclip --- compose.coolify.yml | 13 ++++ docs/BARAAA-70-VERIFICATION.md | 122 +++++++++++++++++++++++++++++++++ scripts/verify-ofelia.sh | 40 +++++++++++ 3 files changed, 175 insertions(+) create mode 100644 docs/BARAAA-70-VERIFICATION.md create mode 100755 scripts/verify-ofelia.sh diff --git a/compose.coolify.yml b/compose.coolify.yml index ee3132b..9a8f231 100644 --- a/compose.coolify.yml +++ b/compose.coolify.yml @@ -123,6 +123,19 @@ services: - 'ofelia.job-exec.backup-daily.schedule=0 0 3 * * *' - 'ofelia.job-exec.backup-daily.command=/usr/local/bin/backup.sh' + ofelia: + image: mcuadros/ofelia:latest + command: daemon --docker + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + restart: unless-stopped + depends_on: + - postgres + labels: + - 'coolify.managed=true' + - 'coolify.type=service' + - 'ofelia.enabled=true' + volumes: postgres_data_v2: driver: local diff --git a/docs/BARAAA-70-VERIFICATION.md b/docs/BARAAA-70-VERIFICATION.md new file mode 100644 index 0000000..cf30453 --- /dev/null +++ b/docs/BARAAA-70-VERIFICATION.md @@ -0,0 +1,122 @@ +# BARAAA-70 : Correction Ofelia en Boucle de Redémarrage + +## Problème Résolu + +Le service Ofelia était en boucle de redémarrage car il n'était **pas défini** dans `compose.coolify.yml`. Les labels Ofelia étaient présents sur le service `backup`, mais aucun scheduler Ofelia n'existait pour les lire et exécuter les tâches planifiées. + +## Solution Appliquée + +Ajout du service `ofelia` dans `compose.coolify.yml` : + +```yaml +ofelia: + image: mcuadros/ofelia:latest + command: daemon --docker + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + restart: unless-stopped + depends_on: + - postgres + labels: + - 'coolify.managed=true' + - 'coolify.type=service' + - 'ofelia.enabled=true' +``` + +### Caractéristiques de la Configuration + +- **Image officielle** : `mcuadros/ofelia:latest` +- **Mode** : `daemon --docker` (surveille les labels Docker) +- **Socket Docker** : monté en lecture seule pour surveiller les conteneurs +- **Dépendance** : démarre après `postgres` (aligné avec `compose.lan.yml`) +- **Restart policy** : `unless-stopped` (redémarre automatiquement) +- **Label Ofelia** : `ofelia.enabled=true` (auto-activation) + +## Vérification Post-Déploiement + +### 1. Vérifier que le Service Démarre + +Via l'interface Coolify ou Docker : + +```bash +# Vérifier le statut du conteneur +docker ps | grep ofelia +# Attendu : état "Up" (pas de restart loop) + +# Vérifier les logs +docker logs agenthub-ofelia-1 --tail 50 +# Attendu : messages de démarrage sans erreur +``` + +**Logs attendus** : +``` +Starting Ofelia... +Ofelia is running in daemon mode +Watching Docker containers for job labels +``` + +### 2. Vérifier la Détection des Jobs + +Ofelia devrait détecter les jobs définis dans les labels du service `backup` : + +```bash +docker logs agenthub-ofelia-1 | grep backup-daily +``` + +**Attendu** : +``` +Job backup-daily registered: schedule=0 0 3 * * *, command=/usr/local/bin/backup.sh +``` + +### 3. Tester le Job Backup Manuellement (Optionnel) + +Pour vérifier que le job fonctionne sans attendre 3h du matin : + +```bash +# Activer le profil backup si pas déjà fait +docker compose --profile backup up -d backup + +# Exécuter le job manuellement via Ofelia +docker exec agenthub-ofelia-1 ofelia run backup-daily + +# Vérifier les logs du backup +docker logs agenthub-backup-1 +``` + +**Attendu** : fichier de backup créé dans `/backups` du conteneur backup. + +### 4. Vérifier le Cron Automatique + +Le backup automatique devrait s'exécuter tous les jours à 3h00 (UTC) : + +```bash +# Le lendemain matin, vérifier les logs Ofelia +docker logs agenthub-ofelia-1 | grep "Job backup-daily" + +# Vérifier les logs du service backup +docker logs agenthub-backup-1 --since 24h +``` + +## Prochaines Étapes + +1. **Déployer** : redéployer l'application sur Coolify avec le nouveau `compose.coolify.yml` +2. **Vérifier** : suivre les étapes de vérification ci-dessus +3. **Activer backup** : si le service backup n'est pas déjà actif, l'activer avec le profil +4. **Monitoring** : surveiller les logs Ofelia pendant quelques jours + +## Notes Importantes + +- Le service `backup` est dans un profil optionnel (`profiles: [backup]`). Pour que les jobs Ofelia fonctionnent, ce service doit être démarré manuellement : + ```bash + docker compose --profile backup up -d backup + ``` + +- Ofelia peut tourner même si le service `backup` n'est pas actif. Il attendra simplement que le conteneur cible soit disponible. + +- Le socket Docker doit être accessible en lecture pour qu'Ofelia puisse surveiller les labels et exécuter les commandes dans les conteneurs. + +## Références + +- Configuration de référence : `compose.lan.yml` (lignes 35-44) +- Documentation Ofelia : https://github.com/mcuadros/ofelia +- Format cron : `0 0 3 * * *` = tous les jours à 3h00 UTC diff --git a/scripts/verify-ofelia.sh b/scripts/verify-ofelia.sh new file mode 100755 index 0000000..c3db8ed --- /dev/null +++ b/scripts/verify-ofelia.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# Script de vérification Ofelia pour BARAAA-70 +# À exécuter sur le serveur Coolify via terminal + +set -euo pipefail + +echo "=== Vérification Ofelia - BARAAA-70 ===" +echo + +# Vérifier que le conteneur Ofelia tourne +echo "1. État du conteneur Ofelia:" +docker ps --filter name=ofelia --format "table {{.Names}}\t{{.Status}}\t{{.State}}" +echo + +# Vérifier les logs Ofelia pour démarrage +echo "2. Logs de démarrage Ofelia (20 dernières lignes):" +docker logs agenthub-ofelia-1 --tail 20 2>&1 || docker logs $(docker ps --filter name=ofelia -q) --tail 20 2>&1 +echo + +# Chercher la détection du job backup-daily +echo "3. Détection du job backup-daily:" +docker logs agenthub-ofelia-1 2>&1 | grep -i "backup-daily" || echo "⚠️ Job backup-daily non détecté dans les logs" +echo + +# Vérifier que le conteneur backup existe +echo "4. État du conteneur backup:" +docker ps -a --filter name=backup --format "table {{.Names}}\t{{.Status}}\t{{.State}}" +echo + +# Vérifier les labels Ofelia sur le conteneur backup +echo "5. Labels Ofelia sur le conteneur backup:" +docker inspect $(docker ps -a --filter name=backup -q) --format '{{range $k, $v := .Config.Labels}}{{if or (eq $k "ofelia.enabled") (contains $k "ofelia.job")}}{{$k}}={{$v}}{{"\n"}}{{end}}{{end}}' 2>&1 || echo "⚠️ Conteneur backup non trouvé" +echo + +# Tester l'exécution manuelle du job +echo "6. Test d'exécution manuelle (optionnel):" +echo " Pour tester maintenant: docker exec agenthub-ofelia-1 ofelia run backup-daily" +echo + +echo "=== Fin de la vérification ==="