agenthub/docs/BARAAA-70-VERIFICATION.md
Paperclip FoundingEngineer a186273e47 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 <noreply@paperclip.ing>
2026-05-02 14:32:17 +00:00

3.7 KiB

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 :

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 :

# 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 :

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 :

# 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) :

# 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 :

    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