# Cron quotidien de relance des services (local uniquement) **Auteur** : Équipe 4NK **Date** : 2026-01-28 ## Objectif Relancer quotidiennement tous les services systemd du projet sur la machine locale, avec vérification des unités activées au démarrage et actives après redémarrage. ## Règle : scripts locaux, pas d’SSH Tous les scripts du projet sont **locaux** et **ne doivent pas appeler de commandes SSH**. La relance s’effectue via `systemctl` (unités systemd) et, le cas échéant, `docker` / `docker-compose` (Mempool, bitcoind conteneur) sur la machine où le cron s’exécute. Aucune connexion à une autre machine. ## Solution implémentée ### Script `data/restart-services-cron.sh` - **Local uniquement** : aucun `ssh`, aucune commande distante. - Gère les unités systemd sur la machine courante : `systemctl is-enabled`, `systemctl is-active`, `sudo systemctl restart`. - **Systemd** : `bitcoin-signet`, `bitcoin`, `anchorage-api`, `api-relay`, `clamav-api`, `faucet-api`, `filigrane-api`, `signet-dashboard`, `userwallet`, `website-skeleton`. - **Docker (local)** : stack Mempool (`docker-compose.signet.yml`), conteneur `bitcoin-signet-instance`. Utilise `docker compose` ou `docker-compose` selon disponibilité. - Log : `data/restart-services.log` (timestamps, rotation sur 100 dernières lignes). ### Comportement 1. **Vérification `is-enabled`** : pour chaque service, si non activé au démarrage → log `WARN`. 2. **Redémarrage** : seules les unités actives sont redémarrées ; les autres sont ignorées avec log `SKIP` (non installées ou non démarrées sur cette machine). 3. **Vérification `is-active` après redémarrage** : pour chaque unité redémarrée, si inactive → log `WARN`. 4. **Docker Mempool** : si `mempool/docker-compose.signet.yml` existe et `docker` est disponible, redémarrage de la stack via `docker compose` ou `docker-compose`. Sinon `SKIP`. 5. **Docker bitcoind** : si le conteneur `bitcoin-signet-instance` existe, `docker restart`. Sinon `SKIP` (bitcoind peut être systemd). ### Prérequis - Exécution en cron (utilisateur avec `sudo` sans mot de passe pour `systemctl restart`, ou cron root). - Unités systemd installées et activées sur la machine (ou `SKIP` si absentes). - Pour Mempool / bitcoind Docker : `docker` et `docker-compose` ou `docker compose` disponibles, et droits pour redémarrer les conteneurs. ## Modifications **Fichiers créés :** - `data/restart-services-cron.sh` : script de relance (local, pas d’SSH). - `features/cron-restart-services-local.md` : cette documentation. ## Modalités de déploiement 1. Rendre le script exécutable : `chmod +x data/restart-services-cron.sh` 2. Ajouter une entrée cron quotidienne (ex. 4h00) : ```text 0 4 * * * /home/ncantu/Bureau/code/bitcoin/data/restart-services-cron.sh ``` 3. Tester manuellement : `./data/restart-services-cron.sh` ## Modalités d’analyse - Consulter `data/restart-services.log` pour les relances et les avertissements. - Vérifier les unités : `systemctl is-enabled `, `systemctl is-active `. - En cas de `SKIP` : l’unité n’est pas installée ou pas active sur cette machine (déploiement partiel possible).