4NK_node/docs/CONFIGURATION.md
Nicolas Cantu 9e0c5634d7 docs(config): centralisation conf monitoring + ports prometheus(9092) signer(9093)
- docker-compose: montages depuis conf/monitoring pour grafana/prometheus/promtail/loki
- script: scripts/setup-monitoring-symlinks.sh (liens symboliques idempotents)
- bitcoin: bind/rpcbind/zmq sur 0.0.0.0 pour éviter erreurs de bind
- docs: CONFIGURATION.md (ports, montages, bitcoin), CHANGELOG.md (Unreleased)
2025-09-11 15:21:52 +02:00

111 lines
5.4 KiB
Markdown
Raw 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.

# Configuration réseau et résolution de noms (4NK_node)
## Réseau Docker `4nk_network`
- Sous-réseau: `172.20.0.0/16`
- Passerelle: `172.20.0.1`
- IPs statiques par service (extrait):
- `tor.local`: 172.20.0.10
- `bitcoin.local`: 172.20.0.11
- `blindbit-oracle.local`: 172.20.0.12
- `sdk-storage.local`: 172.20.0.13
- `sdk-relay{1,2,3}.local`: 172.20.0.14-16
- `sdk-signer.local`: 172.20.0.17
- `ihm-client.local`: 172.20.0.18
- `grafana-central.local`: 172.20.0.50
- `loki.local`: 172.20.0.51
- `prometheus.local`: 172.20.0.52
- `promtail.local`: 172.20.0.53
## DNS local (dnsmasq)
- Fichier chargé par le service système: `/etc/dnsmasq.d/4nk_node.conf` (lien symbolique vers `conf/dnsmasq/dnsmasq.conf`).
- Port découte: 53.
- Les entrées `address=/.../172.20.x.x` assurent la résolution des hôtes `*.local` du réseau projet.
## Compose: DNS et extra_hosts
- Les services utilisent `dns: [172.20.0.1]` pour interroger dnsmasq côté hôte.
- Un ancrage YAML `x-4nk-extra-hosts` fournit une liste `extra_hosts` pour garantir la résolution intra-conteneur, y compris au tout début du cycle de vie.
## Démarrage ordonné et attentes réseau
- `bitcoin.local`: entrypoint attend brièvement la disponibilité réseau/DNS avant de lancer `bitcoind`.
- `blindbit-oracle.local` et `sdk_relay{1,2,3}.local`: entrypoint attend la résolution de `bitcoin.local` et la présence de `/home/bitcoin/.bitcoin/signet/.cookie` avant dexécuter la commande du service.
## Commandes utiles
- Redémarrer dnsmasq: `systemctl restart dnsmasq`
- Vérifier une résolution depuis un conteneur: `docker exec tor.local nslookup bitcoin.local 172.20.0.1`
## Configuration des images, réseaux et paramètres
### Politique de tags et registres
- Référence: les services 4NK tirent les images `:dev` depuis `git.4nkweb.com`.
- Images externes stables: `dperson/torproxy:latest`, `ruimarinho/bitcoin-core:latest`.
- Blindbit: `git.4nkweb.com/4nk/blindbit-oracle:dev`.
- Relais: `git.4nkweb.com/4nk/sdk_relay:dev` (image unique pour 1/2/3).
- Signer/Storage/UI/Coffre: images `git.4nkweb.com/4nk/*:dev`.
### Réseaux et adresses
- `4nk_network` : `172.20.0.0/16` avec IP statiques et hostnames `.4nk.local` par service.
- `4nk_projects_net` : `172.21.0.0/16` réservé pour des projets additionnels.
### Montages (configuration, données, logs)
- Configuration : montée en lecture seule lorsque possible depuis `conf/monitoring` (centralisé) et `projects/*/*/conf`. Les fichiers suivants sont référencés par `docker-compose.yml` :
- `conf/monitoring/grafana.ini``/etc/grafana/grafana.ini`
- `conf/monitoring/datasources.yml``/etc/grafana/provisioning/datasources/datasources.yml`
- `conf/monitoring/prometheus.yml``/etc/prometheus/prometheus.yml`
- `conf/monitoring/promtail-config.yml``/etc/promtail/config.yml`
- `conf/monitoring/loki-config.yaml``/etc/loki/local-config.yaml`
- Un script idempotent `scripts/setup-monitoring-symlinks.sh` assure lalignement par liens symboliques avec `modules/grafana-central/conf`.
- Données : volumes persistants locaux (`modules/*/data`, `projects/*/*/data`).
- Journaux : `modules/*/logs`, `projects/*/*/logs`, et `./log` pour la stack dobservabilité.
### Variables denvironnement (exemples typés)
- Journalisation :
- `RUST_LOG` : chaîne (ex. `debug,bitcoincore_rpc=trace`).
- Bitcoin :
- `BITCOIN_COOKIE_PATH` : chemin absolu vers le cookie RPC.
- Synchronisation (selon besoins locaux) :
- `ENABLE_SYNC_TEST` : booléen (0/1) activant certains scénarios de test.
Nota : ces variables sont documentées pour référence et ne modifient pas la configuration existante.
### Healthchecks et supervision
- Services HTTP/WS instrumentés par des healthchecks (requêtes HTTP simples sur ports exposés).
- Stack observabilité : Promtail collecte les logs montés et les pousse vers Loki ; Grafana consomme Loki.
- Conformément à `USAGE.md`, Grafana peut être exécuté localement (hors Docker) ou via le service de lorchestrateur.
### Nginx et routage
- Nginx agit en reverseproxy et expose des routes stables : `/`, `/blindbit/`, `/sdk_storage/`, `/relay1|2|3/` (+ `/ws/`), `/signer/` (+ `/ws/`), `/coffre/`, `/grafana/`.
- Lexécution locale (hors Docker) est supportée ; les fichiers de configuration existants ne sont pas modifiés par ce document.
### Procédures usuelles
- Initialiser les configurations: copier tous les fichiers `*.exemple` vers leur homonyme sans suffixe.
- Vérifier les images : `docker-compose pull`.
- Démarrer la stack : `docker-compose up -d`.
- Consulter les logs : `docker-compose logs --tail=100`.
### Paramètres Bitcoin (signet)
- Liaison RPC et P2P : `rpcbind=0.0.0.0:38332`, `bind=0.0.0.0:38333`.
- ZMQ publication : `zmqpubhashblock=tcp://0.0.0.0:29000`, `zmqpubrawtx=tcp://0.0.0.0:29000`.
- Ces paramètres évitent les erreurs de bind/résolution liées à lhôte `bitcoin.local`.
### Ports exposés (hôte → conteneur)
- `prometheus.local` : 9092 → 9090 (au lieu de 9091 → 9090 précédemment)
- `sdk-signer.local` : 9093 → 9090 (conflit évité avec 9090 hôte)
### Conclusion
Cette page consolide les paramètres clefs (tags `:dev`, topologie réseau, montages, variables, healthchecks, routage) afin dharmoniser lusage sans modifier les fichiers de configuration. Les évolutions futures seront répercutées dans `docs/ARCHITECTURE.md` et consignées dans `CHANGELOG.md`.