Files
archicratie-edition/docs/OPS-RUNBOOK-ARCHICRATIE-WEB.md
Archicratia d7c158a0fc
All checks were successful
CI / build-and-anchors (push) Successful in 1m39s
SMOKE / smoke (push) Successful in 12s
docs(ops): clarify canonical deploy doc + mark runbook/legacy
2026-02-01 17:32:50 +01:00

3.1 KiB
Raw Blame History

OPS Runbook — Archicratie Web (NAS Synology DS220 + Gitea)

🟦 ALIAS (résumé) — Runbook 1-page pour opérer vite sans se tromper.

La procédure détaillée canonique est : docs/DEPLOY_PROD_SYNOLOGY_DS220.md.

Source Git : Gitea/main ; déploiement = rebuild depuis main ; pas de hotfix non versionné.

Déploiement : build sur slot inactif → smoke → bascule DSM → rollback si besoin.

Incidents connus : voir docs/TROUBLESHOOTING.md.

0. Objectif

Ce document décrit la procédure exacte pour :

  • maintenir un état cohérent entre Local (Mac Studio), Gitea, NAS (prod) ;
  • déployer proprement une release Docker (build, smoke, bascule) ;
  • éviter les régressions (branches protégées, CI bloquante, rollback).

1. Invariants (à ne jamais violer)

  1. La branche main sur Gitea = vérité canonique.
  2. La prod NAS doit être rebuild depuis main (pas de modifications “à la main” non versionnées).
  3. Les variables PUBLIC_GITEA_* doivent pointer vers le bon owner/repo (sinon 404 / login loop).
  4. En solo : PR requise OK, mais 0 approval (sinon blocage). CI doit rester bloquante.
  5. Interdiction : token/secret commité dans le repo.

2. Topologie (NAS)

  • Arborescence :
    • /volume2/docker/archicratie-web/releases/<timestamp>/app
    • /volume2/docker/archicratie-web/current (symlink vers release active)
  • Services :
    • web_green → port local typique 127.0.0.1:8082 (smoke)
    • (optionnel) web_blue127.0.0.1:8081 (ancienne)
  • Script :
    • /volume2/docker/archicratie-web/ops/smoke.sh <port>

3. Standard Git (Gitea)

3.1 Branches

  • main : branche de travail et de déploiement (par défaut)
  • master : branche legacy (archivée / conservée pour compat si nécessaire)
  • Stratégie : master est soit supprimée, soit alignée sur main, mais pas utilisée comme axe actif.

3.2 Protection branches (solo recommandé)

  • main :
    • Exiger PR (Require pull request)
    • 0 approval (solo)
    • Bloquer merge si CI KO (Prevent merge if checks fail)
    • Désactiver force-push
    • (optionnel) désactiver push direct (selon UI Gitea)
  • master :
    • Interdire push direct
    • Désactiver force-push
    • Mention “legacy” (si UI le permet)

4. Variables denvironnement (cause n°1 des 404)

4.1 Variables publiques injectées au build

  • PUBLIC_GITEA_BASE=https://gitea.archicratie.trans-hands.synology.me
  • PUBLIC_GITEA_OWNER=Archicratia
  • PUBLIC_GITEA_REPO=archicratie-edition

4.2 Règle dor

  • Le site génère des liens .../<OWNER>/<REPO>/issues/new?...
  • Si OWNER/REPO est faux (ex: archicratia/archicratie-web) :
    • /issues peut marcher
    • MAIS /issues/new finit en 404 / redirect login / droits
    • => corriger .env et rebuild

5. Déploiement NAS (procédure protocolaire)

5.1 Pré-check

Sur NAS :

  • Vérifier quon est bien dans /volume2/docker/archicratie-web/current
  • Charger .env (pour build args)

Commandes :

cd /volume2/docker/archicratie-web/current || exit 1
set -a
. ./.env
set +a
grep -nE '^PUBLIC_GITEA_(BASE|OWNER|REPO)=' .env