infra: DNS/extra_hosts et attentes de démarrage (bitcoin, oracle, relays); docs

This commit is contained in:
Nicolas Cantu 2025-09-11 14:43:47 +02:00
parent f581bddd1e
commit 75e7bc3215
3 changed files with 90 additions and 0 deletions

View File

@ -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 dun ancrage `x-4nk-extra-hosts` et application à tous les services pour garantir la résolution intra-conteneur.
- Entrypoints dattente:
- `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

View File

@ -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

View File

@ -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 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