4NK_node/docs/ARCHITECTURE.md
root aad486cf54 Configuration hybride: Docker + services locaux
- Suppression services IA/monitoring du docker-compose.yml (externalisés vers 4NK_IA)
- Configuration Nginx local proxy vers ports Docker exposés
- Installation et configuration Grafana local pour monitoring
- Suppression doublon miniback (remplacé par coffre_back_mini)
- Documentation mise à jour pour architecture hybride
- Configuration monitoring compatible avec logs Docker
2025-09-08 22:12:18 +02:00

69 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

## Architecture
### Contexte
Cette page décrit larchitecture fonctionnelle et technique de `4NK_node`, un orchestrateur local des services 4NK sappuyant principalement sur Docker, avec la possibilité dexécuter certains outils (Nginx, Grafana) localement selon `docs/USAGE.md`. Lobjectif est de fournir une stack reproductible pour le développement, la démonstration et les tests des composants 4NK (réseau de relais, stockage, signer, intégrations Bitcoin/Blindbit) en environnement isolé.
### Composants
- Tor : proxy danonymisation utilisé par Bitcoin Core.
- Bitcoin Core (signet) : nœud de référence pour RPC et notifications ZMQ.
- Blindbit : service dindexation et filtres pour Silent Payments.
- SDK Storage : service dAPI interne consommé par les relais.
- SDK Relay (1/2/3) : frontaux temps réel (HTTP/WS) consommant Storage.
- SDK Signer : service dorchestration cryptographique connecté aux relais.
- IHM client : interface utilisateur consommant le Signer.
- Services IA : Externalisés vers le repository [4NK_IA](https://git.4nkweb.com/4nk/4NK_IA.git) (tag `dev`).
- Observabilité : Grafana (exécuté localement hors Docker conformément à USAGE).
- Reverseproxy : Nginx (peut être exécuté localement hors Docker conformément à USAGE).
### Réseaux et adresses
- Réseau principal : `4nk_network` en 172.20.0.0/16, IP statiques et hostnames Docker en `.4nk.local`.
- Réseau projets : `4nk_projects_net` en 172.21.0.0/16 (réservé, non attaché par défaut).
### Flux et dépendances
1. Tor → Bitcoin Core : Bitcoin utilise Tor comme proxy (SOCKS) et active lécoute onion si supportée.
2. Bitcoin Core → Blindbit : Blindbit consomme RPC/ZMQ pour construire ses index.
3. Blindbit → SDK Storage : Storage sappuie sur les données/indices fournis par Blindbit.
4. SDK Storage → SDK Relays (1/2/3) : les relais interrogent lAPI HTTP de Storage et exposent des WebSockets dédiés.
5. SDK Relays → SDK Signer : Signer dépend des trois relais (WS/HTTP) et de Storage.
6. SDK Signer → IHM : lIHM consomme Signer (WS/HTTP) via le reverseproxy.
7. Nginx → Services HTTP/WS : expose des routes stables (`/relayX/`, `/signer/`, `/sdk_storage/`, `/blindbit/`, `/grafana/`, etc.).
### Données et modèles
- Données Bitcoin : blockchain signet, cookie RPC, logs.
- Données Blindbit/Storage : index, caches, journaux applicatifs.
- Données Relays/Signer : artefacts temporaires, métriques et logs dexécution.
- Données IHM et projets : fichiers dapplication, artefacts runtime, logs.
- Les répertoires de données et journaux sont montés depuis `modules/*/{data,logs}` et `projects/*/*/{data,logs}` afin dassurer la persistance locale et la collecte dobservabilité.
### Sécurité
- Cloisonnement par réseau Docker dédié (`4nk_network`) avec IP et hostnames statiques.
- Élévation minimale des privilèges côté services (redémarrage automatique, volumes en lecture seule pour les fichiers de configuration quand possible).
- Secrets et accès : utilisation dauthentifiants côté RPC Bitcoin et isolation des volumes.
- Reverseproxy : terminaisons HTTP/WS centralisées, possibilité dun durcissement local de Nginx (CSP, CORS, headers sécurité) lorsquil est exécuté en dehors de Docker.
- Alerte : aucune CI active pour linstant (cf. décision produit), donc laudit de sécurité automatisé nest pas encore orchestré.
### Observabilité
- Grafana installé localement pour la visualisation des métriques et logs.
- Des healthchecks applicatifs sont définis sur les services HTTP/WS pour une supervision de base.
- Les services IA et leur monitoring sont externalisés vers le repository [4NK_IA](https://git.4nkweb.com/4nk/4NK_IA.git).
### Politique des images
- Externes : Tor (`torproject/tor:latest`), Bitcoin Core (`ruimarinho/bitcoin-core:latest`), Blindbit (`4nk-node-blindbit:latest`).
- Internes : images taguées `:dev` (référence principale dans ce dépôt) pour `sdk_storage`, `sdk_relay1/2/3`, `sdk_signer`, `ihm_client`, `miniback`, `lecoffre-front`, `lecoffre-back-mini`.
Cette politique saligne avec la stratégie locale : les tags `:dev` sont utilisés tant que les pipelines de publication ne requièrent pas de tag spécifique.
### Décisions et implications
- Exécution locale possible de Nginx et Grafana conformément à `USAGE.md` : ne pas modifier les fichiers de configuration, mais documenter les points dintégration et de provisioning.
- Réservation dIP statiques et de hostnames `.4nk.local` : simplifie le routage et la documentation réseau.
- Pas de workflow CI pour linstant : les validations (tests/documentation) sont manuelles et locales.