feat: Réécriture complète de dnsmasq.conf et décentralisation des configurations .env

- Réécriture complète de dnsmasq.conf avec résolution DNS pour tous les services .4nk-local
- Décentralisation des configurations .env vers chaque service (modules/projects)
- Création de fichiers .env et .env.exemple pour chaque service concerné
- Suppression du fichier .env global
- Mise à jour de la structure 4nk-local avec configurations décentralisées
- Amélioration de la sécurité et de l isolation des configurations par service
This commit is contained in:
Nicolas Cantu 2025-09-12 13:20:35 +02:00
parent 61a2e20c47
commit ef4f769f89
27 changed files with 860 additions and 411 deletions

View File

@ -0,0 +1,5 @@
# Configuration MinIO pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
MINIO_BUCKET=4nk-ia

View File

@ -0,0 +1,4 @@
# Configuration Neo4j pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
NEO4J_AUTH=neo4j/4nkneo4j
NEO4J_PASSWORD=4nkneo4j

View File

@ -0,0 +1,4 @@
# Configuration OpenSearch pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
OPENSEARCH_INITIAL_ADMIN_PASSWORD=OpenSearch2025!
OPENSEARCH_USERNAME=admin

View File

@ -0,0 +1,5 @@
# Configuration PostgreSQL pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=4nk_ia

View File

@ -0,0 +1,4 @@
# Configuration Redis pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
REDIS_PASSWORD=
REDIS_DB=0

View File

@ -0,0 +1,49 @@
[paths]
data = /var/lib/grafana/data
logs = /var/lib/grafana/logs
plugins = /var/lib/grafana/plugins
provisioning = /etc/grafana/provisioning
[server]
http_port = 3000
http_addr = 0.0.0.0
root_url = http://grafana.grafanalocal:3000/
serve_from_sub_path = false
[database]
type = sqlite3
path = grafana.db
[security]
admin_user = admin
admin_password = admin
secret_key = SW2YcwTIb9zpOOhoPsMm
[users]
allow_sign_up = false
auto_assign_org = true
auto_assign_org_role = Viewer
[log]
mode = console
level = info
[alerting]
enabled = true
[explore]
enabled = true
[panels]
disable_sanitize_html = false
[plugins]
enable_alpha = false
app_tls_skip_verify_insecure = false
[auth]
disable_login_form = false
disable_signout_menu = false
[auth.anonymous]
enabled = false

View File

@ -0,0 +1,5 @@
# Configuration AnythingLLM pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
ANYLLM_API_KEY=4nk-anyllm-key
DISABLE_AUTH=true
STORAGE_DIR=/app/server/storage

View File

@ -0,0 +1,11 @@
# Configuration Host API pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=4nk_ia
DATABASE_URL=postgresql+psycopg://postgres:postgres@postgres.data.modules.4nk-local:5432/4nk_ia
REDIS_URL=redis://redis.data.modules.4nk-local:6379/0
LOG_LEVEL=INFO
LOG_FORMAT=json
SECRET_KEY=your_secret_key_here
ACCESS_TOKEN_EXPIRE_MINUTES=30

View File

@ -0,0 +1,4 @@
# Configuration Ollama pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
OLLAMA_HOST=0.0.0.0
OLLAMA_PORT=11434

View File

@ -0,0 +1,12 @@
# Configuration Worker pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=4nk_ia
DATABASE_URL=postgresql+psycopg://postgres:postgres@postgres.data.modules.4nk-local:5432/4nk_ia
REDIS_URL=redis://redis.data.modules.4nk-local:6379/0
ANYLLM_API_KEY=4nk-anyllm-key
OLLAMA_BASE_URL=http://ollama.ia.modules.4nk-local:11434
OPENSEARCH_URL=http://opensearch.data.modules.4nk-local:9200
NEO4J_URL=bolt://neo4j.data.modules.4nk-local:7687
NEO4J_AUTH=neo4j/4nkneo4j

View File

@ -0,0 +1,3 @@
# Configuration IHM Client pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
# Configuration pour l'interface utilisateur

View File

@ -0,0 +1,4 @@
# Configuration LeCoffre Back Mini pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
DB_PASSWORD=minibackpassword
LOG_LEVEL=debug

View File

@ -0,0 +1,6 @@
# Configuration LeCoffre Front pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
NEXT_PUBLIC_4NK_URL=http://ihm.client.modules.4nk-local:3003
NEXT_PUBLIC_FRONT_APP_HOST=http://0.0.0.0:3000
NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr
NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/idnot_idp_v1

View File

@ -0,0 +1,3 @@
# Configuration IA LeCoffre pour 4NK_node
# Copier ce fichier vers .env et modifier les valeurs
# Configuration pour le frontend IA intégré dans LeCoffre

View File

@ -4,9 +4,9 @@
- 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.
- Ports: `prometheus.local` écoute maintenant `9092 -> 9090` côté hôte; `sdk-signer.local` écoute `9093 -> 9090` (conflit 9090 résolu).
- `bitcoin.modules.4nk-local`: attente brève réseau/DNS avant lancement.
- `blindbit-oracle.modules.4nk-local`, `sdk_relay1/2/3.4nk-local`: attente de la résolution `bitcoin.modules.4nk-local` et du cookie RPC avant lancement.
- Ports: `prometheus.4nk-local` écoute maintenant `9092 -> 9090` côté hôte; `sdk-signer.4nk-local` écoute `9093 -> 9090` (conflit 9090 résolu).
- Monitoring: centralisation des fichiers de configuration sous `conf/monitoring` et mise à jour des montages Compose (`grafana.ini`, `datasources.yml`, `prometheus.yml`, `promtail-config.yml`, `loki-config.yaml`).
### Docs
@ -48,8 +48,8 @@
### Changed
- **Architecture monitoring** : Remplacement de `log-monitoring.yml` par un système centralisé
- **Grafana** : Migration vers un Grafana central partagé (`grafana-central.local:3000`)
- **Configuration Bitcoin** : Correction de la résolution DNS pour `bitcoin.local`
- **Grafana** : Migration vers un Grafana central partagé (`grafana.grafanalocal:3000`)
- **Configuration Bitcoin** : Correction de la résolution DNS pour `bitcoin.modules.4nk-local`
- **Port Prometheus** : Changement du port 9090 vers 9091 pour éviter les conflits
### Removed

68
conf/dnsmasq/dnsmasq.conf Normal file
View File

@ -0,0 +1,68 @@
# Configuration DNS pour 4NK_node
# Résolution des domaines .4nk-local vers les conteneurs Docker
# Interface d'écoute
interface=docker0
bind-interfaces
# Port DNS
port=53
# Domaine local
domain=4nk-local
# Résolution des domaines .4nk-local
# Modules (172.30.0.0/16)
address=/tor.modules.4nk-local/172.30.0.10
address=/bitcoin.modules.4nk-local/172.30.0.11
address=/blindbit-oracle.modules.4nk-local/172.30.0.12
address=/sdk-storage.modules.4nk-local/172.30.0.13
address=/sdk-relay1.modules.4nk-local/172.30.0.14
address=/sdk-relay2.modules.4nk-local/172.30.0.15
address=/sdk-relay3.modules.4nk-local/172.30.0.16
address=/sdk-signer.modules.4nk-local/172.30.0.17
address=/ihm.client.modules.4nk-local/172.30.0.18
address=/nginx-proxy.modules.4nk-local/172.30.0.60
# SDK Relay (172.30.1.0/16)
address=/i1.sdk-relay.modules.4nk-local/172.30.1.11
address=/i2.sdk-relay.modules.4nk-local/172.30.1.12
address=/i3.sdk-relay.modules.4nk-local/172.30.1.13
# IA Modules (172.30.2.0/16)
address=/ollama.ia.modules.4nk-local/172.30.2.11
address=/anythingsqlite.ia.modules.4nk-local/172.30.2.12
address=/host-api.ia.modules.4nk-local/172.30.2.13
address=/worker.ia.modules.4nk-local/172.30.2.14
# Grafana Modules (172.30.3.0/16)
address=/loki.grafana.modules.4nk-local/172.30.3.51
address=/prometheus.grafana.modules.4nk-local/172.30.3.52
address=/promtail.grafana.modules.4nk-local/172.30.3.53
address=/grafana.grafana.modules.4nk-local/172.30.3.50
# Data Modules (172.30.4.0/16)
address=/postgres.data.modules.4nk-local/172.30.4.11
address=/redis.data.modules.4nk-local/172.30.4.12
address=/minio.data.modules.4nk-local/172.30.4.13
address=/neo4j.data.modules.4nk-local/172.30.4.14
address=/opensearch.data.modules.4nk-local/172.30.4.15
# Client Modules (172.30.5.0/16)
address=/sdk-signer.client.modules.4nk-local/172.30.5.11
address=/ihm.client.modules.4nk-local/172.30.5.12
# LeCoffre Projects (172.31.0.0/16)
address=/front.lecoffre.projects.4nk-local/172.31.0.32
address=/back-mini.lecoffre.projects.4nk-local/172.31.0.34
address=/ia.lecoffre.projects.4nk-local/172.31.0.33
# Cache DNS
cache-size=1000
# Logs
log-queries
log-dhcp
# Pas de redirection vers des serveurs externes pour .4nk-local
server=/4nk-local/

View File

@ -6,18 +6,18 @@ bind-interfaces
log-queries
# 4NK Docker hosts
address=/tor.local/172.20.0.10
address=/bitcoin.local/172.20.0.11
address=/blindbit-oracle.local/172.20.0.12
address=/sdk-storage.local/172.20.0.13
address=/sdk-relay1.local/172.20.0.14
address=/sdk-relay2.local/172.20.0.15
address=/sdk-relay3.local/172.20.0.16
address=/sdk-signer.local/172.20.0.17
address=/ihm-client.local/172.20.0.18
address=/coffre-front.local/172.20.0.32
address=/coffre-back-mini.local/172.20.0.33
address=/grafana-central.local/172.20.0.50
address=/loki.local/172.20.0.51
address=/prometheus.local/172.20.0.52
address=/promtail.local/172.20.0.53
address=/tor.modules.4nk-local/172.20.0.10
address=/bitcoin.modules.4nk-local/172.20.0.11
address=/blindbit-oracle.modules.4nk-local/172.20.0.12
address=/sdk-storage.modules.4nk-local/172.20.0.13
address=/i1.sdk-relay.4nk-local/172.20.0.14
address=/i2.sdk-relay.4nk-local/172.20.0.15
address=/i3.sdk-relay.4nk-local/172.20.0.16
address=/sdk-signer.4nk-local/172.20.0.17
address=/ihm.client.modules.4nk-local/172.20.0.18
address=/coffre-front.4nk-local/172.20.0.32
address=/coffre-back-mini.4nk-local/172.20.0.33
address=/grafana.grafanalocal/172.20.0.50
address=/loki.4nk-local/172.20.0.51
address=/prometheus.4nk-local/172.20.0.52
address=/promtail.4nk-local/172.20.0.53

View File

@ -7,7 +7,7 @@ provisioning = /etc/grafana/provisioning
[server]
http_port = 3000
http_addr = 0.0.0.0
root_url = http://grafana-central.local:3000/
root_url = http://grafana.grafanalocal:3000/
serve_from_sub_path = false
[database]

View File

@ -8,7 +8,7 @@ server {
# ihm_client (HTTP)
location / {
proxy_pass http://ihm-client.4nk.local:80/;
proxy_pass http://ihm.client.modules.4nk.4nk-local:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -17,7 +17,7 @@ server {
# sdk_storage
location /sdk_storage/ {
proxy_pass http://sdk-storage.4nk.local:8081/;
proxy_pass http://sdk-storage.4nk.4nk-local:8081/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -26,7 +26,7 @@ server {
# blindbit
location /blindbit/ {
proxy_pass http://blindbit.4nk.local:8000/;
proxy_pass http://blindbit.4nk.4nk-local:8000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -34,28 +34,28 @@ server {
}
# relais (HTTP API)
location /relay1/ { proxy_pass http://sdk-relay1.4nk.local:8091/; }
location /relay2/ { proxy_pass http://sdk-relay2.4nk.local:8093/; }
location /relay3/ { proxy_pass http://sdk-relay3.4nk.local:8095/; }
location /relay1/ { proxy_pass http://sdk-relay1.4nk.4nk-local:8091/; }
location /relay2/ { proxy_pass http://sdk-relay2.4nk.4nk-local:8093/; }
location /relay3/ { proxy_pass http://sdk-relay3.4nk.4nk-local:8095/; }
# relais (WebSocket)
location /relay1/ws/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://sdk-relay1.4nk.local:8090/;
proxy_pass http://sdk-relay1.4nk.4nk-local:8090/;
}
location /relay2/ws/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://sdk-relay2.4nk.local:8092/;
proxy_pass http://sdk-relay2.4nk.4nk-local:8092/;
}
location /relay3/ws/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://sdk-relay3.4nk.local:8094/;
proxy_pass http://sdk-relay3.4nk.4nk-local:8094/;
}
# sdk_signer (WS et HTTP si exposés sur 9090/9092)
@ -63,20 +63,20 @@ server {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://sdk-signer.4nk.local:9090/;
proxy_pass http://sdk-signer.4nk.4nk-local:9090/;
}
location /signer/ {
proxy_pass http://sdk-signer.4nk.local:9092/;
proxy_pass http://sdk-signer.4nk.4nk-local:9092/;
}
# lecoffre-front
location /coffre/ {
proxy_pass http://coffre-front.4nk.local:3003/;
proxy_pass http://coffre-front.4nk.4nk-local:3003/;
}
# miniback (expose /logs si nécessaire)
location /miniback/ {
proxy_pass http://miniback.4nk.local:8081/;
proxy_pass http://miniback.4nk.4nk-local:8081/;
}
# Grafana (sous-chemin /grafana)

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@ Cette page décrit larchitecture fonctionnelle et technique de `4NK_node`, un
### 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 principal : `4nk_network` en 172.20.0.0/16, IP statiques et hostnames Docker en `.4nk.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
@ -64,5 +64,5 @@ Cette politique saligne avec la stratégie locale : les tags `:dev` sont uti
### 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.
- Réservation dIP statiques et de hostnames `.4nk.4nk-local` : simplifie le routage et la documentation réseau.
- Pas de workflow CI pour linstant : les validations (tests/documentation) sont manuelles et locales.

View File

@ -33,8 +33,8 @@ sudo chown -R 101:101 modules/bitcoin/data/wallets
```ini
[signet]
listen=1
bind=bitcoin.local:38333
rpcbind=bitcoin.local:18443
bind=bitcoin.modules.4nk-local:38333
rpcbind=bitcoin.modules.4nk-local:18443
rpcport=18443
fallbackfee=0.0001
blockfilterindex=1
@ -53,12 +53,12 @@ addnode=tlv2yqamflv22vfdzy2hha2nwmt6zrwrhjjzz4lx7qyq7lyc6wfhabyd.onion
### 4. Dépendances Docker Compose
**Problème** : Service `blindbit-oracle` dépendait de `bitcoin.local` au lieu de `bitcoin`.
**Problème** : Service `blindbit-oracle` dépendait de `bitcoin.modules.4nk-local` au lieu de `bitcoin`.
**Solution appliquée** :
```yaml
depends_on:
- bitcoin # au lieu de bitcoin.local
- bitcoin # au lieu de bitcoin.modules.4nk-local
```
### 5. Configuration réseau Docker
@ -89,8 +89,8 @@ networks:
- ✅ **miniback-postgres** : Up
### Services en redémarrage
- ⚠️ **bitcoin.local** : Restarting (1)
- ⚠️ **blindbit-oracle.local** : Restarting (1)
- ⚠️ **bitcoin.modules.4nk-local** : Restarting (1)
- ⚠️ **blindbit-oracle.modules.4nk-local** : Restarting (1)
- ⚠️ **4nk-sdk-relay1** : Restarting (1)
- ⚠️ **4nk-sdk-relay2** : Restarting (1)
- ⚠️ **4nk-sdk-relay3** : Restarting (1)

View File

@ -5,23 +5,23 @@
- 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
- `tor.modules.4nk-local`: 172.20.0.10
- `bitcoin.modules.4nk-local`: 172.20.0.11
- `blindbit-oracle.modules.4nk-local`: 172.20.0.12
- `sdk-storage.modules.4nk-local`: 172.20.0.13
- `sdk-relay{1,2,3}.4nk-local`: 172.20.0.14-16
- `sdk-signer.4nk-local`: 172.20.0.17
- `ihm.client.modules.4nk-local`: 172.20.0.18
- `grafana.grafanalocal`: 172.20.0.50
- `loki.4nk-local`: 172.20.0.51
- `prometheus.4nk-local`: 172.20.0.52
- `promtail.4nk-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.
- Les entrées `address=/.../172.20.x.x` assurent la résolution des hôtes `*.4nk-local` du réseau projet.
## Compose: DNS et extra_hosts
@ -30,13 +30,13 @@
## 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.
- `bitcoin.modules.4nk-local`: entrypoint attend brièvement la disponibilité réseau/DNS avant de lancer `bitcoind`.
- `blindbit-oracle.modules.4nk-local` et `sdk_relay{1,2,3}.4nk-local`: entrypoint attend la résolution de `bitcoin.modules.4nk-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`
- Vérifier une résolution depuis un conteneur: `docker exec tor.modules.4nk-local nslookup bitcoin.modules.4nk-local 172.20.0.1`
## Configuration des images, réseaux et paramètres
@ -50,7 +50,7 @@
### Réseaux et adresses
- `4nk_network` : `172.20.0.0/16` avec IP statiques et hostnames `.4nk.local` par service.
- `4nk_network` : `172.20.0.0/16` avec IP statiques et hostnames `.4nk.4nk-local` par service.
- `4nk_projects_net` : `172.21.0.0/16` réservé pour des projets additionnels.
### Montages (configuration, données, logs)
@ -111,12 +111,12 @@ Le service `bitcoin-setup` s'exécute automatiquement avant le démarrage de Bit
- 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`.
- Dossier wallets : `walletdir=/home/bitcoin/.bitcoin/wallets` (créé automatiquement par le setup).
- Ces paramètres évitent les erreurs de bind/résolution liées à l'hôte `bitcoin.local`.
- Ces paramètres évitent les erreurs de bind/résolution liées à l'hôte `bitcoin.modules.4nk-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)
- `prometheus.4nk-local` : 9092 → 9090 (au lieu de 9091 → 9090 précédemment)
- `sdk-signer.4nk-local` : 9093 → 9090 (conflit évité avec 9090 hôte)
### Conclusion

View File

@ -25,18 +25,18 @@ Services Docker (172.20.0.0/16)
| Service | Hostname | IP Docker |
|---------|----------|-----------|
| tor | `tor.4nk.local` | 172.20.0.10 |
| bitcoin | `bitcoin.4nk.local` | 172.20.0.11 |
| blindbit | `blindbit-core.4nk.local` | 172.20.0.12 |
| sdk_storage | `sdk-storage.4nk.local` | 172.20.0.13 |
| sdk_relay1 | `sdk-relay1.4nk.local` | 172.20.0.14 |
| sdk_relay2 | `sdk-relay2.4nk.local` | 172.20.0.15 |
| sdk_relay3 | `sdk-relay3.4nk.local` | 172.20.0.16 |
| sdk_signer | `sdk-signer.4nk.local` | 172.20.0.17 |
| ihm_client | `ihm-client.4nk.local` | 172.20.0.18 |
| coffre_front | `coffre-front.4nk.local` | 172.20.0.32 |
| coffre_back_mini | `coffre-back-mini.4nk.local` | 172.20.0.33 |
| miniback-postgres | `miniback-postgres.4nk.local` | 172.20.0.30 |
| tor | `tor.4nk.4nk-local` | 172.20.0.10 |
| bitcoin | `bitcoin.4nk.4nk-local` | 172.20.0.11 |
| blindbit | `blindbit-core.4nk.4nk-local` | 172.20.0.12 |
| sdk_storage | `sdk-storage.4nk.4nk-local` | 172.20.0.13 |
| sdk_relay1 | `sdk-relay1.4nk.4nk-local` | 172.20.0.14 |
| sdk_relay2 | `sdk-relay2.4nk.4nk-local` | 172.20.0.15 |
| sdk_relay3 | `sdk-relay3.4nk.4nk-local` | 172.20.0.16 |
| sdk_signer | `sdk-signer.4nk.4nk-local` | 172.20.0.17 |
| ihm_client | `ihm.client.modules.4nk.4nk-local` | 172.20.0.18 |
| coffre_front | `coffre-front.4nk.4nk-local` | 172.20.0.32 |
| coffre_back_mini | `coffre-back-mini.4nk.4nk-local` | 172.20.0.33 |
| miniback-postgres | `miniback-postgres.4nk.4nk-local` | 172.20.0.30 |
## Utilisation
@ -49,11 +49,11 @@ Services Docker (172.20.0.0/16)
### Test de résolution
```bash
# Test avec nslookup
nslookup -port=5353 tor.4nk.local 127.0.0.1
nslookup -port=5353 coffre-front.4nk.local 127.0.0.1
nslookup -port=5353 tor.4nk.4nk-local 127.0.0.1
nslookup -port=5353 coffre-front.4nk.4nk-local 127.0.0.1
# Test avec dig
dig @127.0.0.1 -p 5353 bitcoin.4nk.local
dig @127.0.0.1 -p 5353 bitcoin.4nk.4nk-local
```
### Configuration système (optionnel)
@ -70,7 +70,7 @@ Nginx peut maintenant utiliser les hostnames Docker :
```nginx
# Configuration Nginx
location /coffre/ {
proxy_pass http://coffre-front.4nk.local:80/;
proxy_pass http://coffre-front.4nk.4nk-local:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

View File

@ -8,19 +8,19 @@ Le système de monitoring 4NK utilise une stack complète d'observabilité basé
### Services de monitoring
- **Grafana Central** (`grafana-central.local:3000`)
- **Grafana Central** (`grafana.grafanalocal:3000`)
- Tableau de bord central pour visualisation des métriques et logs
- Accès : http://grafana-central.local:3000 (admin/admin)
- Accès : http://grafana.grafanalocal:3000 (admin/admin)
- **Loki** (`loki.local:3100`)
- **Loki** (`loki.4nk-local:3100`)
- Système de collecte et d'indexation des logs
- Stockage des logs de tous les services 4NK
- **Prometheus** (`prometheus.local:9091`)
- **Prometheus** (`prometheus.4nk-local:9091`)
- Collecte et stockage des métriques de performance
- Surveillance des services et alertes
- **Promtail** (`promtail.local`)
- **Promtail** (`promtail.4nk-local`)
- Agent de collecte des logs
- Envoi des logs vers Loki
@ -98,13 +98,13 @@ Le système de monitoring est organisé par module avec des dashboards spécifiq
```bash
# Grafana (tableau de bord principal)
http://grafana-central.local:3000
http://grafana.grafanalocal:3000
# Prometheus (métriques brutes)
http://prometheus.local:9091
http://prometheus.4nk-local:9091
# Loki (logs bruts)
http://loki.local:3100
http://loki.4nk-local:3100
```
### Requêtes de logs dans Grafana
@ -139,10 +139,10 @@ process_resident_memory_bytes
```bash
# Redémarrage complet du monitoring
docker-compose restart loki.local prometheus.local promtail.local grafana-central.local
docker-compose restart loki.4nk-local prometheus.4nk-local promtail.4nk-local grafana.grafanalocal
# Redémarrage d'un service spécifique
docker-compose restart loki.local
docker-compose restart loki.4nk-local
```
### Sauvegarde des données
@ -187,16 +187,16 @@ docker run --rm -v 4nk_node_grafana_central_data:/data -v $(pwd):/backup alpine
```bash
# Logs Promtail
docker logs promtail.local
docker logs promtail.4nk-local
# Logs Loki
docker logs loki.local
docker logs loki.4nk-local
# Logs Prometheus
docker logs prometheus.local
docker logs prometheus.4nk-local
# Logs Grafana
docker logs grafana-central.local
docker logs grafana.grafanalocal
```
## Évolutions futures

View File

@ -114,7 +114,7 @@ projects/
```bash
# Créer le dossier si nécessaire
mkdir -p modules/[module-name]/grafana/dashboards/
# Créer le fichier JSON du dashboard
touch modules/[module-name]/grafana/dashboards/[module-name]-monitoring.json
```
@ -127,7 +127,7 @@ projects/
```bash
# Créer le dossier de destination
mkdir -p modules/grafana-central/dashboards/[module-name]/
# Copier le dashboard
cp modules/[module-name]/grafana/dashboards/[module-name]-monitoring.json \
modules/grafana-central/dashboards/[module-name]/
@ -135,7 +135,7 @@ projects/
4. **Redémarrer Grafana Central** :
```bash
docker-compose restart grafana-central.local
docker-compose restart grafana.grafanalocal
```
### Structure d'un dashboard JSON
@ -201,7 +201,7 @@ projects/
```
3. **Redémarrer Grafana Central** :
```bash
docker-compose restart grafana-central.local
docker-compose restart grafana.grafanalocal
```
### Sauvegarde des dashboards
@ -219,7 +219,7 @@ tar -czf dashboards-backup-$(date +%Y%m%d).tar.gz \
```bash
# Restauration
tar -xzf dashboards-backup-YYYYMMDD.tar.gz
docker-compose restart grafana-central.local
docker-compose restart grafana.grafanalocal
```
## Bonnes pratiques

View File

@ -8,22 +8,22 @@
| Service | Hostname | IP | Ports exposés | Montages conf/data/logs | Nginx (routes) | Dépendances |
|---|---|---|---|---|---|---|
| tor | tor.4nk.local | 172.20.0.10 | 9050, 9051 | conf:/etc/tor/torrc(ro), data:/var/lib/tor, logs:/var/log/tor | — | — |
| bitcoin | bitcoin.4nk.local | 172.20.0.11 | 38333, 38332, 29000 | conf:/home/bitcoin/.bitcoin/bitcoin.conf(ro), data:/home/bitcoin/.bitcoin, logs:/home/bitcoin/.bitcoin/logs | — | tor |
| blindbit | blindbit.4nk.local | 172.20.0.12 | 8000 | conf:/blindbit/blindbit.toml(ro), data:/blindbit, logs:/blindbit/logs | /blindbit/ → :8000 | bitcoin |
| sdk_storage | sdk-storage.4nk.local | 172.20.0.13 | 8081 | conf:/usr/local/bin/sdk_storage.conf(ro), logs:/app/logs | /sdk_storage/ → :8081 | blindbit |
| sdk_relay1 | sdk-relay1.4nk.local | 172.20.0.14 | 8090(ws), 8091(http) | conf:/home/bitcoin/.conf(ro), logs:/home/bitcoin/logs | /relay1/, /relay1/ws/ | sdk_storage |
| sdk_relay2 | sdk-relay2.4nk.local | 172.20.0.15 | 8092(ws), 8093(http) | conf:/home/bitcoin/.conf(ro), logs:/home/bitcoin/logs | /relay2/, /relay2/ws/ | sdk_storage |
| sdk_relay3 | sdk-relay3.4nk.local | 172.20.0.16 | 8094(ws), 8095(http) | conf:/home/bitcoin/.conf(ro), logs:/home/bitcoin/logs | /relay3/, /relay3/ws/ | sdk_storage |
| sdk_signer | sdk-signer.4nk.local | 172.20.0.17 | 9090(ws), 9092(http) | conf:/usr/local/bin/sdk_signer.conf(ro), data:/app/data, logs:/usr/src/app/logs | /signer/, /signer/ws/ | sdk_relay1/2/3 |
| ihm_client | ihm-client.4nk.local | 172.20.0.18 | 80, 3003 | logs:/var/log/ihm_client | / (→:80), /coffre/ (→coffre_front:3003) | sdk_signer |
| miniback-postgres | miniback-postgres.4nk.local | 172.20.0.30 | 5432 | data:/var/lib/postgresql/data(volume) | — | — |
| miniback | miniback.4nk.local | 172.20.0.31 | — | logs:/logs, env:.env(ro) | /miniback/ (si HTTP) | miniback-postgres |
| coffre_front | coffre-front.4nk.local | 172.20.0.32 | 3003 | logs:/logs | /coffre/ → :3003 | — |
| coffre_back_mini | coffre-back-mini.4nk.local | 172.20.0.33 | — | — | — | — |
| nginx | nginx.4nk.local | 172.20.0.40 | 80 | conf:/etc/nginx, logs:/var/log/nginx | reverse proxy + /grafana/ | — |
| ollama | ollama.4nk.local | 172.20.0.50 | 11434 | data:/root/.ollama, logs:/var/log/ollama | /ollama/ → :11434 | — |
| anythingllm | anythingllm.4nk.local | 172.20.0.51 | 3001 | conf:/app/config, data:/app/storage, logs:/app/logs | /anythingllm/ → :3001 | ollama |
| tor | tor.4nk.4nk-local | 172.20.0.10 | 9050, 9051 | conf:/etc/tor/torrc(ro), data:/var/lib/tor, logs:/var/log/tor | — | — |
| bitcoin | bitcoin.4nk.4nk-local | 172.20.0.11 | 38333, 38332, 29000 | conf:/home/bitcoin/.bitcoin/bitcoin.conf(ro), data:/home/bitcoin/.bitcoin, logs:/home/bitcoin/.bitcoin/logs | — | tor |
| blindbit | blindbit.4nk.4nk-local | 172.20.0.12 | 8000 | conf:/blindbit/blindbit.toml(ro), data:/blindbit, logs:/blindbit/logs | /blindbit/ → :8000 | bitcoin |
| sdk_storage | sdk-storage.4nk.4nk-local | 172.20.0.13 | 8081 | conf:/usr/local/bin/sdk_storage.conf(ro), logs:/app/logs | /sdk_storage/ → :8081 | blindbit |
| sdk_relay1 | sdk-relay1.4nk.4nk-local | 172.20.0.14 | 8090(ws), 8091(http) | conf:/home/bitcoin/.conf(ro), logs:/home/bitcoin/logs | /relay1/, /relay1/ws/ | sdk_storage |
| sdk_relay2 | sdk-relay2.4nk.4nk-local | 172.20.0.15 | 8092(ws), 8093(http) | conf:/home/bitcoin/.conf(ro), logs:/home/bitcoin/logs | /relay2/, /relay2/ws/ | sdk_storage |
| sdk_relay3 | sdk-relay3.4nk.4nk-local | 172.20.0.16 | 8094(ws), 8095(http) | conf:/home/bitcoin/.conf(ro), logs:/home/bitcoin/logs | /relay3/, /relay3/ws/ | sdk_storage |
| sdk_signer | sdk-signer.4nk.4nk-local | 172.20.0.17 | 9090(ws), 9092(http) | conf:/usr/local/bin/sdk_signer.conf(ro), data:/app/data, logs:/usr/src/app/logs | /signer/, /signer/ws/ | sdk_relay1/2/3 |
| ihm_client | ihm.client.modules.4nk.4nk-local | 172.20.0.18 | 80, 3003 | logs:/var/log/ihm_client | / (→:80), /coffre/ (→coffre_front:3003) | sdk_signer |
| miniback-postgres | miniback-postgres.4nk.4nk-local | 172.20.0.30 | 5432 | data:/var/lib/postgresql/data(volume) | — | — |
| miniback | miniback.4nk.4nk-local | 172.20.0.31 | — | logs:/logs, env:.env(ro) | /miniback/ (si HTTP) | miniback-postgres |
| coffre_front | coffre-front.4nk.4nk-local | 172.20.0.32 | 3003 | logs:/logs | /coffre/ → :3003 | — |
| coffre_back_mini | coffre-back-mini.4nk.4nk-local | 172.20.0.33 | — | — | — | — |
| nginx | nginx.4nk.4nk-local | 172.20.0.40 | 80 | conf:/etc/nginx, logs:/var/log/nginx | reverse proxy + /grafana/ | — |
| ollama | ollama.4nk.4nk-local | 172.20.0.50 | 11434 | data:/root/.ollama, logs:/var/log/ollama | /ollama/ → :11434 | — |
| anythingllm | anythingllm.4nk.4nk-local | 172.20.0.51 | 3001 | conf:/app/config, data:/app/storage, logs:/app/logs | /anythingllm/ → :3001 | ollama |
### Observabilité
- Promtail lit: `./log/**/*.log`, `./modules/*/logs/**/*.log`, `./projects/*/*/logs/**/*.log` et pousse vers Loki.
@ -31,9 +31,9 @@
### Liens entre services (flux réseau et dépendances)
- Tor → Bitcoin Core
- Bitcoin utilise Tor comme proxy (`proxy=tor.4nk.local:9050`) et active `listenonion=1`.
- Bitcoin utilise Tor comme proxy (`proxy=tor.4nk.4nk-local:9050`) et active `listenonion=1`.
- Bitcoin Core → Blindbit
- Blindbit lit lendpoint RPC de Bitcoin (`http://bitcoin.4nk.local:38332`) et sappuie sur ZMQ (`tcp://bitcoin.4nk.local:29000`).
- Blindbit lit lendpoint RPC de Bitcoin (`http://bitcoin.4nk.4nk-local:38332`) et sappuie sur ZMQ (`tcp://bitcoin.4nk.4nk-local:29000`).
- Blindbit → SDK Storage
- SDK Storage consomme les index/infos de Blindbit (config via `sdk_storage.conf`).
- SDK Storage → SDK Relays (1/2/3)
@ -48,5 +48,5 @@
- Reverseproxy vers: IHM (`/`), Storage (`/sdk_storage/`), Blindbit (`/blindbit/`), Relais (`/relayX/` + `/relayX/ws/`), Signer (`/signer/` + `/signer/ws/`), Coffre (`/coffre/`), Miniback (`/miniback/`), Grafana (`/grafana/`).
### Notes
- Les services internes utilisent des hostnames Docker `.4nk.local` résolus par le DNS du réseau `4nk_network`.
- Les services internes utilisent des hostnames Docker `.4nk.4nk-local` résolus par le DNS du réseau `4nk_network`.
- Les tags dimages `:dev` sont en cours de création; voir `docs/CONFIGURATION.md`.