Compare commits

...

1 Commits

Author SHA1 Message Date
cd4ce80ac1 docs(ops): add triple-source sync + troubleshooting + proposer spec
All checks were successful
CI / build-and-anchors (push) Successful in 1m46s
SMOKE / smoke (push) Successful in 11s
2026-02-01 14:38:24 +01:00
2 changed files with 189 additions and 3 deletions

View File

@@ -72,7 +72,8 @@ Ce document décrit la synchronisation **sans ambiguïté** entre :
### Étape B — NAS : aligner `current` sur `origin/main`
Sur NAS, git nest pas forcément installé : on utilise un conteneur git.
```sh
en sh:
APP="/volume2/docker/archicratie-web/current"
U_ID="$(id -u)"; G_ID="$(id -g)"
@@ -89,3 +90,34 @@ git checkout -B main
git reset --hard origin/main
git status -sb
'
### Étape C — NAS : rebuild du slot inactif + smoke + bascule
Rebuild de limage (slot inactif recommandé).
docker compose up -d --force-recreate --no-build web_green (ou blue)
smoke test via script ou curl
bascule DSM vers le port du slot actif
## 4) Checkpoints rapides (sanity)
### 4.1 Vérifier que NAS = origin/main
git rev-parse --short HEAD sur NAS (via alpine/git)
doit égaler origin/main.
### 4.2 Vérifier “Proposer” (points minimum)
PUBLIC_GITEA_OWNER=Archicratia (casse sensible)
PUBLIC_GITEA_REPO=archicratie-edition
Flow : Proposer → choix 1 → choix 2 → onglet Gitea /issues/new?... OK
## 5) Rollback
DSM reverse proxy : repasser sur lautre port (8081/8082).
En cas de code cassé : réaligner NAS sur origin/main précédent (tag/release) ou repointer /current vers une release précédente.

View File

@@ -53,6 +53,160 @@ Chercher `window.open` dans la page générée :
- la commande doit retourner 0 lignes.
Sur NAS :
```sh
en sh :
curl -fsS http://127.0.0.1:8082/archicratie/archicrat-ia/chapitre-4/ > /tmp/page.html
grep -n "window.open" /tmp/page.html | head
grep -n "window.open" /tmp/page.html | head
# Fix
garder un seul mécanisme douverture
sur click : preventDefault() + stopImmediatePropagation()
## 3) Favicon 504 / erreurs console sur favicon
# Symptôme
Console navigateur : GET /favicon.ico 504
# Cause fréquente
Cache du navigateur (ancienne erreur conservée).
# Diagnostic
Comparer :
curl -I http://127.0.0.1:8082/favicon.ico
curl -kI https://<domaine>/favicon.ico
Si curl = 200 et navigateur = 504 → cache.
# Fix
Désactiver cache dans longlet Réseau (devtools)
hard refresh
vérifier droits fichiers dans dist/
## 4) Sur NAS : git: command not found
# Symptôme
git fetch impossible sur le NAS.
# Cause
Git non installé sur DSM shell.
# Fix standard (recommandé)
Utiliser un conteneur git :
APP="/volume2/docker/archicratie-web/current"
U_ID="$(id -u)"; G_ID="$(id -g)"
sudo docker run --rm --network host \
-u "$U_ID:$G_ID" -e HOME=/tmp \
-v "$APP":/repo -w /repo \
--entrypoint sh alpine/git -lc '
set -eu
git config --global --add safe.directory /repo
git config http.sslVerify false
git fetch origin --prune
git status -sb
'
## 5) Git : “dubious ownership in repository”
# Symptôme
fatal: detected dubious ownership
# Fix
Dans le conteneur git (ou machine locale) :
git config --global --add safe.directory /repo
## 6) Git : non-fast-forward au push
# Symptôme
rejected (non-fast-forward)
# Cause
Ta branche locale est en retard vs remote.
# Fix
En général :
on fait une PR depuis une branche
ou on rebase/merge origin/main avant push
Sur une branche de travail :
git fetch origin
git rebase origin/main
# ou
git merge origin/main
## 7) Gitea : “Not allowed to push to protected branch main”
# Symptôme
pre-receive hook declined
# Cause
Protection de branche (normal/attendu).
# Fix
Push sur une branche
Ouvrir PR
Merger via UI Gitea
## 8) Docker build : BuildKit / buildx / API version
# Symptômes typiques
the --network option requires BuildKit
BuildKit is enabled but the buildx component is missing
client version ... too new. Maximum supported API version ...
Fix “robuste” (principe)
# installer buildx si nécessaire
si DSM/docker API ancienne : définir DOCKER_API_VERSION=<compatible> (selon ton environnement)
garder le build en --network host si nécessaire
## 9) Container Manager / Docker : “database is locked” (logging driver db)
# Symptôme
failed to initialize logging driver : database is locked
# Cause
Le driver de logs Docker est db (Synology) et sa DB est verrouillée.
# Fix rapide
Redémarrer “Container Manager” depuis le centre de paquets DSM.
Vérifier que le conteneur redémarre ensuite.
## 10) Checklist “tout marche”
curl -I http://127.0.0.1:8082/ => 200
curl -kI https://<domaine>/ => 200
PUBLIC_GITEA_* corrects
“Proposer” : 1 onglet, pas de 404, issue pré-remplie
CI passe sur PR merge