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

80 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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_blue``127.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 :
```sh
cd /volume2/docker/archicratie-web/current || exit 1
set -a
. ./.env
set +a
grep -nE '^PUBLIC_GITEA_(BASE|OWNER|REPO)=' .env