Registre public de diplômes — Diagnostics¶
Vérification rapide¶
État du conteneur¶
# Le conteneur tourne ?
docker ps | grep public_diploma_verify
# Statut détaillé
docker inspect public_diploma_verify --format='{{.State.Status}}'
Pas de healthcheck Docker configuré
Ni docker-compose.yml ni docker-compose.prod.yml ne déclarent de bloc healthcheck pour ce service — docker inspect --format='{{.State.Health.Status}}' renverra une chaîne vide ou une erreur (<no value> / template invalide), ce n'est pas un signe de panne. Se fier à .State.Status (running/restarting/exited) et au test HTTP ci-dessous.
Port HTTP¶
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:7015
# Attendu : 200 (port par défaut — voir le secret APP_PORT si différent)
Depuis l'extérieur (domaine + reverse proxy)¶
Vérifier l'URL backend bakée dans un build¶
VITE_API_BASE_URL n'existe pas comme variable d'environnement runtime dans le conteneur (voir overview.md) — elle est gravée en clair dans le(s) fichier(s) JS servis par nginx. Pour savoir quelle URL backend un build donné utilise réellement :
# Depuis le conteneur qui tourne
docker exec public_diploma_verify sh -c \
"grep -ohE 'https?://[a-zA-Z0-9.-]+(:[0-9]+)?' /usr/share/nginx/html/assets/*.js | sort -u"
# Ou depuis l'extérieur, sans accès au conteneur :
curl -s https://diplome.epitech.africa/ | grep -oE 'assets/index-[^"]+\.js'
# puis, avec le nom de fichier trouvé :
curl -s https://diplome.epitech.africa/assets/index-XXXXX.js \
| grep -oE 'https?://[a-zA-Z0-9.-]+(:[0-9]+)?' | sort -u
Cette commande n'expose rien de confidentiel : VITE_API_BASE_URL n'est de toute façon pas un secret une fois le site déployé (elle est publique dans le bundle JS envoyé à chaque visiteur).
# Vérifier qu'aucune variable env liée au frontend Vite ne traîne dans le conteneur (elle ne devrait pas y être) :
docker exec public_diploma_verify env | grep VITE
# Attendu : rien (la variable n'existe qu'au moment du build, jamais au runtime)
Logs¶
# Dernières lignes
docker logs public_diploma_verify --tail 50
# Suivre en temps réel
docker logs public_diploma_verify -f
# Avec timestamps
docker logs public_diploma_verify --tail 100 -t
Via Grafana/Loki (si Pedago Watch est configuré)¶
- grafana.epitools.bj → Explore → source Loki
- Requête :
{container_name="public_diploma_verify"}
Config nginx¶
# Config du conteneur applicatif (nginx:1.27-alpine, sert les fichiers statiques)
docker exec public_diploma_verify nginx -t
docker exec public_diploma_verify cat /etc/nginx/conf.d/default.conf
# Config du reverse-proxy partagé qui route diplome.epitech.africa vers ce conteneur
docker exec nginx-proxy nginx -t
docker exec nginx-proxy cat /var/log/nginx/access.log | grep diplome | tail -20
Rappel de ce que nginx.conf (conteneur applicatif) fait réellement aujourd'hui : location / sert try_files $uri /index.html pour tout chemin (la règle de validation par regex du matricule est commentée — voir troubleshooting.md). Ne pas s'attendre à un 404 nginx sur un chemin mal formé : le 404 éventuel viendrait de l'app React elle-même (getReferenceFromPath + message « Format incorrect »), pas de nginx.
Vérifier la connectivité vers l'API EPIDOCS¶
Le frontend n'a pas de couche serveur — c'est le navigateur du visiteur qui appelle l'API EPIDOCS, pas le conteneur public_diploma_verify. Un test depuis le VPS ne reproduit donc pas exactement ce que vit un visiteur, mais permet de vérifier que l'API répond :
# Remplacer <backend> par la valeur trouvée via la procédure ci-dessus (grep du bundle JS)
curl -s -o /dev/null -w "%{http_code}" "https://<backend>/api/diplomas/verify/EPA-BJ-XX-2025-0001/"
# 404 = l'API répond mais ce matricule n'existe pas (normal pour un test)
# 000 / timeout = l'API EPIDOCS est injoignable depuis ce point réseau
Voir aussi epidocs-api/diagnostics.md pour diagnostiquer l'API elle-même.
DNS et TLS¶
dig +short diplome.epitech.africa A
# Doit résoudre vers l'IP du VPS de production
curl -vI https://diplome.epitech.africa 2>&1 | grep -i "ssl\|certificate\|expire"
Pipeline CI/CD¶
gh run list --repo EpitechAfrik/public-diploma-verify
gh run view <RUN_ID> --repo EpitechAfrik/public-diploma-verify --log-failed
# Images poussées sur GHCR
docker images ghcr.io/epitechafrik/public-diploma-verify --format "table {{.Tag}}\t{{.CreatedAt}}"
Aide-mémoire des ports et chemins¶
| Élément | Valeur |
|---|---|
| Port hôte (défaut) | 127.0.0.1:7015 (secrets APP_BIND/APP_PORT) |
| Port conteneur | 80 |
| Conteneur | public_diploma_verify |
| Image | ghcr.io/epitechafrik/public-diploma-verify (tags latest, main-<sha>) |
| Chemin VPS | /root/projects/public-diploma-verify |
| URL prod | https://diplome.epitech.africa |