Continuité — accès externes détenus par une seule personne (Alert-Parent)¶
Pourquoi ce document existe
Suit le même modèle que l'audit EPIDOCS API : plusieurs
accès externes critiques pour Alert-Parent (backend + frontend) sont aujourd'hui détenus par
une seule personne (Yémalin). Ce document liste chaque dépendance externe connue pour ce projet, ce
qui a été vérifié pour de vrai (pas supposé), et ce qui reste à faire pour donner un accès de
secours à Cédric Gnansounou (GitHub cedricgnans), repreneur du projet.
Statut vérifié pour Alert-Parent¶
| Dépendance | Ce qui a été vérifié | Statut |
|---|---|---|
GitHub — repo alert-parent-backend |
gh api repos/EpitechAfrik/alert-parent-backend/collaborators |
✅ Cédric (cedricgnans) a déjà accès admin — rien à faire |
GitHub — repo alert-parent-frontend |
gh api repos/EpitechAfrik/alert-parent-frontend/collaborators |
✅ Cédric (cedricgnans) a déjà accès admin — rien à faire |
GitHub Actions secrets (SERVER_HOST, SERVER_SSH_KEY, DOTENV_FILE, etc.) |
gh secret list --repo ... sur les deux repos — confirme que ce sont des secrets de repo, pas d'organisation |
✅ Couvert par l'accès admin GitHub ci-dessus (un admin repo peut créer/modifier ces secrets, jamais lire leur valeur) |
Runner GitHub Actions self-hosted (les deux pipelines tournent en runs-on: self-hosted) |
gh api repos/.../actions/runners → 0 runner enregistré au niveau du repo ; gh api orgs/EpitechAfrik/actions/runners → 403 you must be an org admin avec le compte actuel |
✅ Confirmé par Yémalin (2026-09-11) : Cédric a déjà accès à la machine qui héberge le runner — rien à faire |
| Azure AD — App Registration Alert-Parent (SSO) | App Registration Alert-Parent | ✅ Cédric et Pissano ajoutés comme membres (2026-09-11) — rotation du secret possible sans Yémalin |
| VPS (SSH, hébergement Hostinger) | Non vérifiable depuis ce poste (pas de session SSH active) | ⬜ À vérifier — voir ci-dessous |
MongoDB Atlas (cluster partagé, base al3rtParent) |
Non vérifiable — nécessite le dashboard Atlas | ⬜ À vérifier — voir ci-dessous |
| Resend (envoi des mails de campagne) | Non vérifiable — nécessite le dashboard Resend | ⬜ À vérifier — voir ci-dessous |
Registrar DNS epitools.bj |
Même domaine que les autres projets de la plateforme — voir l'audit EPIDOCS API | ⬜ À vérifier (dépendance déjà documentée, pas spécifique à Alert-Parent) |
À faire, par dépendance¶
Runner GitHub Actions self-hosted¶
- Où : probablement le VPS de production lui-même, ou une machine dédiée à proximité — les deux
pipelines (
alert-parent-backendetalert-parent-frontend) déclarentruns-on: self-hosted, et le jobdeployfait ensuite un SSH séparé vers le VPS (SERVER_HOST), ce qui suggère que ce n'est pas forcément la même machine. - Pourquoi c'était signalé : si ce runner est arrêté, désenregistré ou perd sa connexion à GitHub,
aucun déploiement ne part pour ces deux projets — le job reste "queued" indéfiniment côté GitHub
Actions, sans message d'erreur explicite.
gh api repos/EpitechAfrik/alert-parent-backend/actions/runnersrenvoie0runner au niveau du repo (donc très probablement enregistré au niveau de l'organisation EpitechAfrik) etgh api orgs/EpitechAfrik/actions/runnersrenvoie403 You must be an org adminavec le compte actuel — l'accès admin sur un repo ne couvre pas la gestion de ce runner au niveau GitHub. - Statut : ✅ résolu — confirmé par Yémalin (2026-09-11), Cédric a déjà accès à la machine qui héberge le runner (accès direct à la machine, indépendant du rôle GitHub). En cas de panne, il peut donc intervenir dessus sans avoir besoin du rôle admin/owner d'organisation sur GitHub.
Azure AD — App Registration Alert-Parent¶
- Où : App Registration Alert-Parent (Client ID / Tenant ID distincts de ceux d'EPIDOCS — les valeurs elles-mêmes sont dans les
build-argsdu workflow frontend et dans le.envbackend, jamais à reporter en clair ici). - Pourquoi c'était critique : le SSO Microsoft est actif en production (
MICROSOFT_CLIENT_ID/MICROSOFT_TENANT_IDcôté backend,VITE_MICROSOFT_CLIENT_ID/VITE_MICROSOFT_TENANT_IDcôdés en dur dans.github/workflows/deploy.ymldu frontend). Un secret d'App Registration expiré ou révoqué casse la connexion Microsoft pour tous les utilisateurs (même symptomatologie que documentée pour EPIDOCS : panne silencieuse jusqu'à ce que quelqu'un essaie de se connecter). - Statut : ✅ résolu — Cédric Gnansounou et Pissano ont été ajoutés comme membres sur cette App Registration (2026-09-11), ce qui couvre la rotation du secret et les autres opérations courantes sans dépendre uniquement de Yémalin. Date d'expiration du secret actuel (Certificates & secrets) encore à noter ici une fois vérifiée.
VPS (hébergement de production — Hostinger)¶
- Où : accès SSH sur le serveur référencé dans les secrets GitHub
SERVER_HOST/SERVER_SSH_KEY; panel d'hébergement hpanel.hostinger.com (référencé dans runbook.md comme hébergeur). - Pourquoi c'est critique : c'est là que tournent les conteneurs
alert-parent-backend/alert-parent-frontend, le.envde chaque projet, et potentiellement le runner self-hosted lui-même (voir ci-dessus). Sans accès SSH, aucune intervention manuelle (rollback, lecture de logs, redémarrage) n'est possible — seul le pipeline CI/CD automatique fonctionne encore, et seulement si le runner est en vie. - Action : créer un utilisateur SSH dédié pour Cédric sur le VPS (même procédure que documentée pour EPIDOCS — pas de partage de la clé privée root existante) : Vérifier aussi l'accès au compte Hostinger (panel d'hébergement) séparément de l'accès SSH — les deux sont souvent détenus par des comptes différents.
MongoDB Atlas (cluster al3rtParent)¶
- Où : dashboard cloud.mongodb.com.
- Pourquoi c'est critique : sans accès, impossible de vérifier l'IP whitelist (Network Access),
l'état du cluster, de faire une restauration point-in-time, ou de régénérer les identifiants de
connexion si
MONGO_URIdoit être renouvelé. - Action : inviter Cédric comme membre du projet Atlas hébergeant
al3rtParent(Project Access Manager → Add). Vérifier si ce cluster est partagé avec d'autres projets de la plateforme (auquel cas l'ajouter une seule fois y suffit pour tous).
Resend (envoi des mails de campagne)¶
- Où : dashboard resend.com.
- Pourquoi c'est critique : sans accès, impossible de régénérer
RESEND_TOKENsi le token actuel est révoqué/expiré, de vérifier le domaine d'envoi, ou de diagnostiquer un problème de délivrabilité (quota dépassé, domaine non vérifié, etc. — voir troubleshooting.md § Emails ne s'envoient pas). - Action : inviter Cédric comme membre de l'organisation/compte Resend (Settings → Team).
Registrar DNS (epitools.bj)¶
- Dépendance déjà documentée en détail dans l'audit EPIDOCS API
(même domaine, sous-domaine
alert.pour ce projet). Pas besoin de la répéter en détail ici : une fois l'accès donné pour EPIDOCS, il couvre tous les sous-domainesepitools.bj, Alert-Parent inclus.
Ce qui n'a PAS besoin d'action supplémentaire¶
- GHCR (registre d'images Docker) : les images sont poussées sous
ghcr.io/epitechafrik/alert-parent-backend/-frontend, liées aux repos GitHub — couvert par l'accès admin repo déjà confirmé pour Cédric. - Secrets GitHub Actions : confirmé ci-dessus être des secrets de repo, pas d'organisation — l'accès admin déjà en place suffit à les gérer (créer/modifier, jamais lire une valeur existante).