docs: documentation complète (architecture, CI, submodules, docker, release, dev, scripts, FAQ)

This commit is contained in:
Nicolas Cantu 2025-09-10 12:29:45 +02:00
parent f9123097ef
commit 8ba17169be
11 changed files with 126 additions and 162 deletions

13
docs/architecture.md Normal file
View File

@ -0,0 +1,13 @@
# Architecture
## Arborescence
- `modules/`: dépôts modulaires (SDK, clients, outils)
- `deploy/`: dépôts de déploiement (ex: `deploy/4NK_node`)
- `projects/<projet>/<repo>`: dépôts par projets (ex: `projects/lecoffre/...`)
## Principes
- Submodules décrits dans `.gitmodules` avec `path`, `url`, `branch`.
- CI centrale dans `/.gitea/workflows/` pour build/push Docker.
- Images taggées par `DOCKER_TAG`.

21
docs/ci.md Normal file
View File

@ -0,0 +1,21 @@
# Intégration Continue (CI)
## Workflow
- Fichier: `.gitea/workflows/dev.yml`
- Triggers:
- Push sur `dev`
- Push sur branches `dev-test*` modifiant `.ci/tag.env`
- Tag `dev`
## Résolution de DOCKER_TAG
1. Motif dans le dernier message de commit: `ci: docker_tag=<valeur>`
2. Fichier `.ci/tag.env` (clé `DOCKER_TAG=<valeur>`)
3. Nom de la branche (`GITHUB_REF_NAME`)
4. Secours: `dev-test`
## Build
- Script: `scripts/build_and_push.sh <DOCKER_TAG>` (obligatoire)
- Parcourt les submodules; build/push si `Dockerfile` présent.

View File

@ -1,35 +0,0 @@
# Politique CI "dev-test"
Ce flux construit et pousse des images Docker pour chaque sous-dépôt listé dans `.gitmodules` qui contient un `Dockerfile`. Les images sont poussées dans le registry Gitea `git.4nkweb.com` sous le namespace `4nk` avec le tag `dev-test`.
## Déclencheur
- Tag Git: `dev-test`
## Séquence
1. Checkout du dépôt avec submodules (recursive)
2. Synchronisation des submodules sur la branche déclarée dans `.gitmodules`
3. Authentification au registry Gitea via secrets `REGISTRY_USERNAME` et `REGISTRY_PASSWORD`
4. Build et push des images Docker présentes dans chaque sous-module
## Variables denvironnement
- `REGISTRY`: `git.4nkweb.com`
- `NAMESPACE`: `4nk`
- `DOCKER_TAG`: `dev-test`
## Scripts
- `scripts/sync_submodules.sh`: synchronise les branches des submodules
- `scripts/build_and_push.sh`: build et push les images existantes
## Secrets requis
- `REGISTRY_USERNAME`: compte autorisé sur le registry
- `REGISTRY_PASSWORD`: mot de passe ou token
## Notes
- Les submodules sans `Dockerfile` sont ignorés.
- Les branches utilisées sont celles définies dans `.gitmodules` (clé `branch`).

13
docs/development.md Normal file
View File

@ -0,0 +1,13 @@
# Développement local
## Prérequis
- Git + accès SSH à `git.4nkweb.com`
- Docker + Buildx
## Commandes utiles
- Synchroniser submodules: `git submodule sync --recursive`
- Initialiser/mettre à jour: `git submodule update --init --recursive`
- Déclencher CI via branche: `scripts/commit_tag_env.sh <tag>`
- Taguer tous les repos: `scripts/tag.sh <tag>`

6
docs/docker_registry.md Normal file
View File

@ -0,0 +1,6 @@
# Registry Docker
- Registry: `git.4nkweb.com`
- Namespace: `4nk`
- Tagging: basé sur `DOCKER_TAG` (obligatoire)
- Politique: ne jamais utiliser ni modifier un tag Docker `dev`.

View File

@ -1,127 +0,0 @@
# État des Services 4NK Node
**Date :** 3 septembre 2025
**Heure :** 18:10 UTC
**Environnement :** Docker Compose sur Debian
## Résumé Global
- **Services fonctionnels :** 4/7 (57%) ⬆️
- **Services en erreur :** 3/7 (43%) ⬇️
- **Services redémarrant :** 0/7 (0%) ✅
## Détail des Services
### ✅ Services Fonctionnels
#### 1. **4nk-bitcoin** (bitcoin)
- **Statut :** `Up About a minute`
- **Ports :** 29000, 18443, 38332-38333
- **État :** ✅ **FONCTIONNEL - RPC corrigé**
- **Notes :** Credentials RPC ajoutés, réseau Docker autorisé (192.168.240.0/20)
#### 2. **4nk-tor** (tor)
- **Statut :** `Up 2 hours`
- **Ports :** 9050-9051
- **État :** ✅ **FONCTIONNEL**
- **Notes :** Service Tor opérationnel, listeners SOCKS et Control actifs
#### 3. **4nk-blindbit** (blindbit) ⭐ **CORRIGÉ**
- **Statut :** `Up 31 seconds (health: starting)`
- **Ports :** 8000
- **État :** ✅ **FONCTIONNEL - RPC authentifié**
- **Notes :** Connexion RPC réussie, synchronisation active, service HTTP opérationnel
#### 4. **4nk-sdk-storage** (sdk_storage)
- **Statut :** `Up 2 hours (unhealthy)`
- **Ports :** 8081
- **État :** ✅ **FONCTIONNEL mais non vérifié**
- **Notes :** Service démarré mais health check échoue
### ❌ Services en Erreur
#### 5. **4nk-sdk-signer** (sdk_signer)
- **Statut :** `Arrêté`
- **Erreur :** `SyntaxError: Unexpected token 'export'`
- **Cause :** Incompatibilité ES modules vs CommonJS
- **Fichier problématique :** `/app/pkg/sdk_client.js`
- **Détail :** Le code WASM généré utilise la syntaxe ES6 `export` mais Node.js s'attend à du CommonJS
#### 6. **4nk-sdk-relay** (sdk_relay)
- **Statut :** `Arrêté`
- **Erreur :** `Failed to find conf file`
- **Cause :** Fichier de configuration manquant
- **Impact :** Service critique pour la communication entre composants
#### 7. **4nk-ihm-client** (ihm_client)
- **Statut :** `Up 2 hours (unhealthy)`
- **Ports :** 3003, 8080
- **État :** ✅ **Démarré mais non vérifié**
- **Notes :** Interface utilisateur accessible mais health check échoue
## Problèmes Résolus ✅
### **Authentification RPC Bitcoin-BlindBit (RÉSOLU)**
- **Problème :** BlindBit recevait des erreurs 403 Forbidden
- **Cause :** Configuration réseau incorrecte (`rpcallowip=172.24.0.0/16` au lieu de `192.168.240.0/20`)
- **Solution :**
1. Ajout des credentials RPC (`rpcuser=bitcoin`, `rpcpassword=bitcoin`)
2. Correction du réseau autorisé (`rpcallowip=192.168.240.0/20`)
3. Redémarrage de Bitcoin pour appliquer la configuration
- **Résultat :** BlindBit se connecte maintenant avec succès à Bitcoin
## Problèmes Identifiés
### 1. **Incompatibilité ES Modules (CRITIQUE)**
- **Service :** sdk_signer
- **Problème :** Le code WASM généré par `wasm-pack` utilise la syntaxe ES6
- **Solution :** Configurer le projet pour utiliser ES modules ou convertir en CommonJS
### 2. **Configuration Manquante (CRITIQUE)**
- **Service :** sdk_relay
- **Problème :** Fichier de configuration introuvable
- **Solution :** Vérifier la présence et la validité des fichiers de config
### 3. **Health Checks (FAIBLE)**
- **Services :** sdk_storage, ihm_client
- **Problème :** Health checks échouent malgré un fonctionnement apparent
- **Solution :** Ajuster les critères de health check
## Recommandations
### Priorité 1 : Corriger sdk_signer ✅
- **Statut :** En attente
- **Action :** Résoudre l'incompatibilité ES modules
### Priorité 2 : Corriger sdk_relay ✅
- **Statut :** En attente
- **Action :** Identifier et corriger le fichier de configuration manquant
### Priorité 3 : Améliorer les health checks ✅
- **Statut :** En attente
- **Action :** Ajuster les critères de vérification
## Actions Effectuées
1. ✅ **Ajouté les credentials RPC** dans `conf/bitcoin.conf`
2. ✅ **Corrigé la configuration réseau** (`rpcallowip=192.168.240.0/20`)
3. ✅ **Redémarré Bitcoin** pour appliquer la configuration
4. ✅ **Testé la connexion RPC** avec succès
5. ✅ **Relancé BlindBit** avec succès
6. ✅ **Vérifié le fonctionnement** du service
## Impact sur l'Architecture
- **Communication inter-services :** ✅ BlindBit-Bitcoin fonctionne
- **Signature des transactions :** ❌ Impossible (sdk_signer défaillant)
- **Confidentialité :** ✅ **Disponible (blindbit fonctionnel)**
- **Interface utilisateur :** Partiellement fonctionnelle
- **Stockage :** Fonctionnel mais non vérifié
## Prochaines Étapes
1. ✅ **BlindBit corrigé** - Service opérationnel
2. 🔄 **Corriger sdk_signer** - Résoudre l'incompatibilité ES modules
3. 🔄 **Corriger sdk_relay** - Résoudre la configuration manquante
4. 🔄 **Améliorer les health checks** - Optimiser la surveillance des services
5. 🔄 **Tester l'intégration complète** - Vérifier la communication inter-services

15
docs/faq.md Normal file
View File

@ -0,0 +1,15 @@
# FAQ
## Est-ce que la CI sapplique aux submodules ?
- Oui pour le build/push Docker (via 4NK_dev), non pour déclencher leur CI interne.
## Comment choisir le tag dimage ?
- Message de commit: `ci: docker_tag=<valeur>`
- Ou `.ci/tag.env` via branche dédiée
- Ou nom de la branche
## Le tag Docker `dev` est-il utilisé ?
- Non. Il ne doit jamais être utilisé ni modifié.

24
docs/index.md Normal file
View File

@ -0,0 +1,24 @@
# 4NK_dev — Documentation du projet
## Objectif du dépôt
- Dépôt agrégateur des projets 4NK via submodules Git.
- Normalise larborescence: `modules/`, `deploy/`, `projects/<projet>/<repo>`.
- Centralise CI de build/push dimages Docker pour chaque submodule éligible.
## Contenu de la documentation
- Architecture: voir `architecture.md`
- Submodules: voir `submodules.md`
- CI et publication Docker: voir `ci.md`
- Registry et tags: voir `docker_registry.md`
- Versioning et release: voir `release_versioning.md`
- Développement local: voir `development.md`
- Scripts utilitaires: voir `scripts.md`
- FAQ: voir `faq.md`
## Conventions
- Lint Markdown appliqué.
- Pas dexemples dans la documentation.
- Les changements doivent toujours être décrits dans `CHANGELOG.md` et `VERSION`.

View File

@ -0,0 +1,7 @@
# Versioning & Release
- Fichier `VERSION` et `CHANGELOG.md` à jour à chaque modification significative.
- Tags Git:
- `dev`: pointe sur la tête de la branche `dev` (ne pas utiliser en Docker)
- Tags de CI: `dev-test*` selon besoin
- Politique Docker: images taggées par `DOCKER_TAG` uniquement.

16
docs/scripts.md Normal file
View File

@ -0,0 +1,16 @@
# Scripts
## build_and_push.sh
- Usage: `scripts/build_and_push.sh <DOCKER_TAG>` (obligatoire)
- Construit et pousse chaque submodule avec `Dockerfile`.
## tag.sh
- Usage: `scripts/tag.sh [TAG_NAME]` (défaut `dev-test`)
- Pose le tag sur le dépôt racine et tous les submodules.
## commit_tag_env.sh
- Usage: `scripts/commit_tag_env.sh <TAG_NAME>`
- Crée/checkout une branche du même nom et écrit `.ci/tag.env`.

11
docs/submodules.md Normal file
View File

@ -0,0 +1,11 @@
# Submodules
## Déclaration
- Chaque sous-dépôt est déclaré dans `.gitmodules` avec `path`, `url`, `branch`.
## Bonnes pratiques
- Exécuter `git submodule sync --recursive` après modification de `.gitmodules`.
- Utiliser `git submodule update --init --recursive` pour initialiser.
- Éviter les chemins ambigus; respecter `modules/`, `deploy/`, `projects/<projet>/<repo>`.