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

4.7 KiB
Raw Blame History

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 (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.

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.