From 75e7bc32152fec51c65aef036e191d141040cf30 Mon Sep 17 00:00:00 2001 From: Nicolas Cantu Date: Thu, 11 Sep 2025 14:43:47 +0200 Subject: [PATCH] =?UTF-8?q?infra:=20DNS/extra=5Fhosts=20et=20attentes=20de?= =?UTF-8?q?=20d=C3=A9marrage=20(bitcoin,=20oracle,=20relays);=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 12 ++++++++++++ docker-compose.yml | 38 ++++++++++++++++++++++++++++++++++++++ docs/CONFIGURATION.md | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f4f8da1..221d32a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## [Unreleased] + +### Changed +- Docker: définition explicite de la passerelle `172.20.0.1` pour `4nk_network` et ajout de `dns: 172.20.0.1` pour les services. +- Ajout d’un ancrage `x-4nk-extra-hosts` et application à tous les services pour garantir la résolution intra-conteneur. +- Entrypoints d’attente: + - `bitcoin.local`: attente brève réseau/DNS avant lancement. + - `blindbit-oracle.local`, `sdk_relay1/2/3.local`: attente de la résolution `bitcoin.local` et du cookie RPC avant lancement. + +### Docs +- `docs/CONFIGURATION.md`: documentation du réseau, DNS, extra_hosts et attentes de démarrage. + ## Changed (2025-09-11) # Changelog - 4NK Node diff --git a/docker-compose.yml b/docker-compose.yml index c11d9a35..d49894b9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,28 @@ version: '3.8' +x-4nk-extra-hosts: &x-4nk-extra-hosts + extra_hosts: + - "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-relay1.local:172.20.0.14" + - "sdk-relay2.local:172.20.0.15" + - "sdk-relay3.local:172.20.0.16" + - "sdk-signer.local:172.20.0.17" + - "ihm-client.local:172.20.0.18" + - "coffre-front.local:172.20.0.32" + - "coffre-back-mini.local:172.20.0.33" + - "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" + # Updated to use newer Go-based images for builds; placeholder for future dynamic tag adjustments services: tor.local: + <<: *x-4nk-extra-hosts image: dperson/torproxy:latest container_name: tor.local hostname: tor.local @@ -16,9 +35,11 @@ services: restart: unless-stopped bitcoin.local: + <<: *x-4nk-extra-hosts image: ruimarinho/bitcoin-core:latest container_name: bitcoin.local hostname: bitcoin.local + entrypoint: ["/bin/sh","-c","for i in $(seq 1 30); do if grep -q '172.20.0.11' /proc/net/fib_trie 2>/dev/null; then break; fi; sleep 1; done; exec /entrypoint.sh bitcoind"] ports: - "38332:38332" - "29000:29000" @@ -36,9 +57,11 @@ services: - tor.local blindbit-oracle.local: + <<: *x-4nk-extra-hosts image: git.4nkweb.com/4nk/blindbit-oracle:dev container_name: blindbit-oracle.local hostname: blindbit-oracle.local + entrypoint: ["/bin/sh","-c","for i in $(seq 1 30); do if getent hosts bitcoin.local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\"","--"] ports: - "8000:8000" command: [ "/main", "--datadir", "/blindbit-oracle" ] @@ -63,6 +86,7 @@ services: start_period: 40s sdk_storage.local: + <<: *x-4nk-extra-hosts image: git.4nkweb.com/4nk/sdk_storage:dev container_name: sdk-storage.local hostname: sdk-storage.local @@ -83,9 +107,11 @@ services: start_period: 40s sdk_relay1.local: + <<: *x-4nk-extra-hosts image: git.4nkweb.com/4nk/sdk_relay:dev container_name: sdk-relay1.local hostname: sdk-relay1.local + entrypoint: ["/bin/sh","-c","for i in $(seq 1 30); do if getent hosts bitcoin.local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\""] ports: - "8090:8090" - "8091:8091" @@ -114,9 +140,11 @@ services: start_period: 40s sdk_relay2.local: + <<: *x-4nk-extra-hosts image: git.4nkweb.com/4nk/sdk_relay:dev container_name: sdk-relay2.local hostname: sdk-relay2.local + entrypoint: ["/bin/sh","-c","for i in $(seq 1 30); do if getent hosts bitcoin.local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\""] ports: - "8092:8090" - "8093:8091" @@ -145,9 +173,11 @@ services: start_period: 40s sdk_relay3.local: + <<: *x-4nk-extra-hosts image: git.4nkweb.com/4nk/sdk_relay:dev container_name: sdk-relay3.local hostname: sdk-relay3.local + entrypoint: ["/bin/sh","-c","for i in $(seq 1 30); do if getent hosts bitcoin.local >/dev/null 2>&1 && [ -f /home/bitcoin/.bitcoin/signet/.cookie ]; then break; fi; sleep 1; done; exec \"$@\""] ports: - "8094:8090" - "8095:8091" @@ -176,6 +206,7 @@ services: start_period: 40s sdk_signer.local: + <<: *x-4nk-extra-hosts image: git.4nkweb.com/4nk/sdk_signer:dev container_name: sdk-signer.local hostname: sdk-signer.local @@ -202,6 +233,7 @@ services: start_period: 40s ihm_client.local: + <<: *x-4nk-extra-hosts image: git.4nkweb.com/4nk/ihm_client:dev container_name: ihm-client.local hostname: ihm-client.local @@ -229,6 +261,7 @@ services: coffre-front.local: + <<: *x-4nk-extra-hosts image: git.4nkweb.com/4nk/lecoffre-front:dev container_name: coffre-front.local hostname: coffre-front.local @@ -244,6 +277,7 @@ services: - sdk_signer.local coffre-back-mini.local: + <<: *x-4nk-extra-hosts image: git.4nkweb.com/4nk/lecoffre-back-mini:dev container_name: coffre-back-mini.local hostname: coffre-back-mini.local @@ -253,6 +287,7 @@ services: restart: unless-stopped loki.local: + <<: *x-4nk-extra-hosts image: grafana/loki:2.9.0 container_name: loki.local hostname: loki.local @@ -268,6 +303,7 @@ services: restart: unless-stopped prometheus.local: + <<: *x-4nk-extra-hosts image: prom/prometheus:v2.54.1 container_name: prometheus.local hostname: prometheus.local @@ -289,6 +325,7 @@ services: restart: unless-stopped promtail.local: + <<: *x-4nk-extra-hosts image: grafana/promtail:2.9.0 container_name: promtail.local hostname: promtail.local @@ -308,6 +345,7 @@ services: - loki.local grafana-central.local: + <<: *x-4nk-extra-hosts image: grafana/grafana:10.0.0 container_name: grafana-central.local hostname: grafana-central.local diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index db75d884..e6f56a75 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -1,3 +1,43 @@ +# 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 d’exé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