chore: Suppression des fichiers et répertoires obsolètes

- Suppression des anciens fichiers de configuration déplacés vers 4nk-local/
- Suppression des répertoires log/ et data/ obsolètes
- Suppression des fichiers .gitkeep et configurations d exemple
- Nettoyage de la structure du projet après réorganisation
This commit is contained in:
Nicolas Cantu 2025-09-12 13:22:01 +02:00
parent ef4f769f89
commit b5e000231f
45 changed files with 22 additions and 1193 deletions

View File

@ -60,7 +60,7 @@ target/
# Docker (artefacts locaux éventuels)
docker-compose.override.yml
docker-compose.*.yml.local
docker-compose.*.yml.4nk-local
*.docker.tar
docker-image-*.tar
docker-save-*.tar

View File

View File

@ -1,203 +0,0 @@
# 📊 Monitoring des Logs 4NK_node
Ce répertoire contient la configuration complète pour surveiller et analyser les logs de tous les services 4NK_node en temps réel.
## 🚀 Démarrage Rapide
### 1. Démarrer le monitoring
```bash
cd 4NK_node
./log/start-monitoring.sh
```
### 2. Accéder à Grafana
- **URL**: http://localhost:3000
- **Utilisateur**: `admin`
- **Mot de passe**: `admin`
### 3. Dashboard principal
Le dashboard principal est automatiquement configuré et accessible à :
http://localhost:3000/d/4nk-node-logs/4nk-node-vue-d-ensemble-des-logs
## 🏗️ Architecture
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Services │ │ Promtail │ │ Loki │
│ 4NK_node │───▶│ (Collecteur) │───▶│ (Stockage) │
│ │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Grafana │ │ Dashboards │
│ (Visualisation) │◄───│ (Analyses) │
└─────────────────┘ └─────────────────┘
```
## 📁 Structure des Fichiers
```
log/
├── README.md # Ce fichier
├── start-monitoring.sh # Script de démarrage
├── log-monitoring.yml # Docker Compose pour le monitoring
├── loki-config.yaml # Configuration Loki
├── promtail-config.yml # Configuration Promtail
├── grafana-datasources.yml # Sources de données Grafana
├── grafana-dashboards.yml # Configuration des dashboards
└── dashboards/
└── 4nk-node-overview.json # Dashboard principal
```
## 🔧 Services de Monitoring
### Loki (Port 3100)
- **Rôle**: Stockage et indexation des logs
- **Fonctionnalités**: Requêtes LogQL, rétention configurable
- **Stockage**: Fichiers locaux avec compression
### Promtail (Port 9080)
- **Rôle**: Collecte des logs Docker
- **Fonctionnalités**: Parsing JSON, étiquetage automatique
- **Collecte**: Logs de tous les conteneurs 4NK_node
### Grafana (Port 3000)
- **Rôle**: Interface de visualisation
- **Fonctionnalités**: Dashboards, alertes, requêtes temps réel
- **Accès**: Interface web avec authentification
## 📊 Dashboards Disponibles
### Dashboard Principal : "4NK Node - Vue d'ensemble des Logs"
- **Log Rate par Service**: Graphique temporel des logs par service
- **Total Logs (5m)**: Statistique du nombre total de logs
- **Logs en Temps Réel**: Affichage en direct des logs de tous les services
- **Répartition par Service**: Graphique circulaire des logs par service
- **Répartition par Niveau**: Graphique circulaire des logs par niveau (info, error, debug)
## 🔍 Requêtes LogQL Utiles
### Logs d'un service spécifique
```logql
{job="4nk_node", service="bitcoin"}
```
### Logs d'erreur
```logql
{job="4nk_node"} |= "error"
```
### Logs des dernières 5 minutes
```logql
{job="4nk_node"} [5m]
```
### Recherche de texte
```logql
{job="4nk_node"} |~ "connection.*failed"
```
## 🛠️ Commandes Utiles
### Démarrer le monitoring
```bash
docker compose -f log-monitoring.yml up -d
```
### Voir les logs des services de monitoring
```bash
docker compose -f log-monitoring.yml logs -f
```
### Arrêter le monitoring
```bash
docker compose -f log-monitoring.yml down
```
### Redémarrer un service spécifique
```bash
docker compose -f log-monitoring.yml restart grafana
```
### Vérifier le statut
```bash
docker compose -f log-monitoring.yml ps
```
## 📈 Métriques Surveillées
### Services 4NK_node
- **bitcoin**: Logs de synchronisation, connexions RPC
- **blindbit**: Logs de traitement des blocs, erreurs
- **sdk_relay1/2/3**: Logs de connexion Bitcoin, erreurs RPC
- **sdk_signer**: Logs de connexion aux relays, erreurs WebSocket
- **sdk_storage**: Logs de base de données, erreurs de stockage
- **ihm_client**: Logs de l'interface utilisateur
- **tor**: Logs de connexion, erreurs de proxy
### Niveaux de Log
- **INFO**: Informations générales, statut des services
- **ERROR**: Erreurs critiques, échecs de connexion
- **DEBUG**: Informations détaillées pour le débogage
- **WARN**: Avertissements, problèmes non critiques
## 🔒 Sécurité
- **Grafana**: Authentification requise (admin/admin)
- **Loki**: Pas d'authentification (accès local uniquement)
- **Promtail**: Pas d'authentification (collecte locale uniquement)
- **Ports exposés**: 3000 (Grafana), 3100 (Loki), 9080 (Promtail)
## 🚨 Dépannage
### Grafana ne démarre pas
```bash
docker compose -f log-monitoring.yml logs grafana
```
### Promtail ne collecte pas de logs
```bash
docker compose -f log-monitoring.yml logs promtail
```
### Loki ne stocke pas de logs
```bash
docker compose -f log-monitoring.yml logs loki
```
### Vérifier les permissions
```bash
ls -la log/
chmod +x log/start-monitoring.sh
```
## 📝 Personnalisation
### Ajouter un nouveau service
1. Modifier `promtail-config.yml`
2. Ajouter une nouvelle section `static_configs`
3. Redémarrer Promtail
### Créer un nouveau dashboard
1. Créer un fichier JSON dans `dashboards/`
2. Modifier `grafana-dashboards.yml` si nécessaire
3. Redémarrer Grafana
### Modifier la rétention des logs
1. Modifier `loki-config.yaml`
2. Ajuster `retention_period` et `chunk_retain_period`
3. Redémarrer Loki
## 🌟 Fonctionnalités Avancées
- **Alertes**: Configuration d'alertes sur des patterns de logs
- **Rétention**: Gestion automatique de la rétention des logs
- **Compression**: Compression automatique des anciens logs
- **Recherche**: Recherche full-text dans tous les logs
- **Filtrage**: Filtrage par service, niveau, timestamp
- **Export**: Export des logs en différents formats
---
**Note**: Ce système de monitoring est conçu pour un environnement de développement. Pour la production, considérez l'ajout d'authentification et de chiffrement.

View File

@ -1,347 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": null,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"vis": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "short"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 0
},
"id": 1,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"editorMode": "code",
"expr": "rate({job=\"4nk_node\"} [5m])",
"queryType": "",
"refId": "A"
}
],
"title": "Log Rate par Service",
"type": "timeseries"
},
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 0
},
"id": 2,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "10.0.0",
"targets": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"editorMode": "code",
"expr": "count_over_time({job=\"4nk_node\"} [5m])",
"queryType": "",
"refId": "A"
}
],
"title": "Total Logs (5m)",
"type": "stat"
},
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"gridPos": {
"h": 8,
"w": 24,
"x": 0,
"y": 8
},
"id": 3,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": false,
"sortOrder": "Descending",
"wrapLogMessage": false
},
"targets": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"editorMode": "code",
"expr": "{job=\"4nk_node\"} | json | line_format \"{{.service}}: {{.msg}}\"",
"maxLines": 100,
"queryType": "",
"refId": "A"
}
],
"title": "Logs en Temps Réel - Tous les Services",
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"vis": false
}
},
"mappings": []
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 16
},
"id": 4,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"pieType": "pie",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"editorMode": "code",
"expr": "count_over_time({job=\"4nk_node\"} [5m]) by (service)",
"queryType": "",
"refId": "A"
}
],
"title": "Répartition des Logs par Service",
"type": "piechart"
},
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 16
},
"id": 5,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"pieType": "pie",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"editorMode": "code",
"expr": "count_over_time({job=\"4nk_node\"} [5m]) by (level)",
"queryType": "",
"refId": "A"
}
],
"title": "Répartition des Logs par Niveau",
"type": "piechart"
}
],
"refresh": "5s",
"schemaVersion": 38,
"style": "dark",
"tags": [
"4nk_node",
"monitoring",
"logs"
],
"templating": {
"list": []
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "4NK Node - Vue d'ensemble des Logs",
"uid": "4nk-node-logs",
"version": 1,
"weekStart": ""
}

View File

@ -1,12 +0,0 @@
apiVersion: 1
providers:
- name: '4NK Node Dashboards'
orgId: 1
folder: '4NK Node'
type: file
disableDeletion: false
updateIntervalSeconds: 10
allowUiUpdates: true
options:
path: /etc/grafana/provisioning/dashboards/dashboards

View File

@ -1,16 +0,0 @@
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://localhost:3100
isDefault: true
editable: true
jsonData:
maxLines: 1000
derivedFields:
- datasourceUid: loki
matcherRegex: "container_name=(\\w+)"
name: "Container"
url: "/d/${__value.raw}"

View File

@ -1,45 +0,0 @@
server:
http_listen_port: 3100
grpc_listen_port: 9096
log_level: info
chunk_target_size: 1048576
schema_config:
configs:
- from: 2020-10-15
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /loki/index
cache_location: /loki/boltdb-cache
shared_store: filesystem
filesystem:
directory: /loki/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 168h
compactor:
working_directory: /loki/boltdb-shipper-compactor
shared_store: filesystem
compactor_ring:
kvstore:
store: inmemory
ruler:
storage:
type: local
local:
directory: /loki/rules
ring:
kvstore:
store: inmemory
rule_path: /loki/rules-temp
alertmanager_url: http://localhost:9093
enable_api: true
EOF

View File

@ -1,32 +0,0 @@
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: 4nk_node_core_logs
static_configs:
- targets: [localhost]
labels:
job: 4nk_node_core
__path__: /workspace/logs/**/*.log
- job_name: 4nk_modules_logs
static_configs:
- targets: [localhost]
labels:
job: 4nk_modules
__path__: /workspace/modules/*/logs/**/*.log
- job_name: 4nk_projects_logs
static_configs:
- targets: [localhost]
labels:
job: 4nk_projects
__path__: /workspace/projects/*/*/logs/**/*.log
EOF

View File

@ -1,49 +0,0 @@
#!/bin/bash
# Script de démarrage du monitoring des logs 4NK_node
# Auteur: Assistant IA
# Date: $(date)
echo "🚀 Démarrage du monitoring des logs 4NK_node..."
# Vérifier que nous sommes dans le bon répertoire
if [ ! -f "log-monitoring.yml" ]; then
echo "❌ Erreur: Ce script doit être exécuté depuis le répertoire 4NK_node"
exit 1
fi
# Démarrer les services de monitoring
echo "📊 Démarrage de Loki (stockage des logs)..."
docker compose -f log-monitoring.yml up -d loki
echo "⏳ Attente du démarrage de Loki..."
sleep 10
echo "📥 Démarrage de Promtail (collecte des logs)..."
docker compose -f log-monitoring.yml up -d promtail
echo "⏳ Attente du démarrage de Promtail..."
sleep 5
echo "📈 Démarrage de Grafana (visualisation)..."
docker compose -f log-monitoring.yml up -d grafana
echo "⏳ Attente du démarrage de Grafana..."
sleep 10
# Vérifier le statut des services
echo "🔍 Vérification du statut des services..."
docker compose -f log-monitoring.yml ps
echo ""
echo "✅ Monitoring des logs démarré avec succès !"
echo ""
echo "🌐 Accès aux services :"
echo " - Grafana: http://localhost:3000 (admin/admin)"
echo " - Loki: http://localhost:3100"
echo " - Promtail: http://localhost:9080"
echo ""
echo "📊 Dashboard principal: http://localhost:3000/d/4nk-node-logs/4nk-node-vue-d-ensemble-des-logs"
echo ""
echo "📝 Pour arrêter: docker compose -f log-monitoring.yml down"
echo "📝 Pour voir les logs: docker compose -f log-monitoring.yml logs -f"

View File

@ -1,40 +0,0 @@
# Configuration globale
datadir=/home/bitcoin/.bitcoin
server=1
txindex=1
debug=1
loglevel=debug
logthreadnames=1
signet=1
onion=tor:9050
listenonion=1
# Paramètres RPC
rpcauth=bitcoin:c8ea921c7357bd6a5a8a7c43a12350a7$955e25b17672987b17c5a12f12cd8b9c1d38f0f86201c8cd47fc431f2e1c7956
rpcallowip=172.20.0.0/16
rpcworkqueue=32
rpcthreads=4
rpcdoccheck=1
# Paramètres ZMQ
zmqpubhashblock=tcp://0.0.0.0:29000
zmqpubrawtx=tcp://0.0.0.0:29000
[signet]
listen=1
bind=0.0.0.0:38333
rpcbind=0.0.0.0:38332
rpcport=38332
fallbackfee=0.0001
blockfilterindex=1
datacarriersize=205
acceptnonstdtxn=1
dustrelayfee=0.00000001
minrelaytxfee=0.00000001
prune=0
signetchallenge=0020341c43803863c252df326e73574a27d7e19322992061017b0dc893e2eab90821
walletdir=/home/bitcoin/.bitcoin/wallets
wallet=mining
wallet=watchonly
maxtxfee=1
addnode=tlv2yqamflv22vfdzy2hha2nwmt6zrwrhjjzz4lx7qyq7lyc6wfhabyd.onion

View File

@ -1,40 +0,0 @@
# Configuration globale
datadir=/home/bitcoin/.bitcoin
server=1
txindex=1
debug=1
loglevel=debug
logthreadnames=1
signet=1
onion=tor:9050
listenonion=1
# Paramètres RPC
rpcauth=bitcoin:c8ea921c7357bd6a5a8a7c43a12350a7$955e25b17672987b17c5a12f12cd8b9c1d38f0f86201c8cd47fc431f2e1c7956
rpcallowip=172.20.0.0/16
rpcworkqueue=32
rpcthreads=4
rpcdoccheck=1
# Paramètres ZMQ
zmqpubhashblock=tcp://bitcoin.local:29000
zmqpubrawtx=tcp://bitcoin.local:29000
[signet]
listen=1
bind=bitcoin.local:38333
rpcbind=bitcoin.local:38332
rpcport=38332
fallbackfee=0.0001
blockfilterindex=1
datacarriersize=205
acceptnonstdtxn=1
dustrelayfee=0.00000001
minrelaytxfee=0.00000001
prune=0
signetchallenge=0020341c43803863c252df326e73574a27d7e19322992061017b0dc893e2eab90821
walletdir=/home/bitcoin/.bitcoin/wallets
wallet=mining
wallet=watchonly
maxtxfee=1
addnode=tlv2yqamflv22vfdzy2hha2nwmt6zrwrhjjzz4lx7qyq7lyc6wfhabyd.onion

View File

@ -1,28 +0,0 @@
# Configuration pour blindbit-oracle
host = "blindbit-oracle.local:8000"
# Définit la chaîne sur laquelle le wallet fonctionne
chain = "signet"
# Point d'accès RPC Bitcoin
rpc_endpoint = "http://bitcoin.local:38332"
# Chemin vers le fichier cookie RPC Bitcoin
cookie_path = "/home/bitcoin/.bitcoin/signet/.cookie"
# Identifiants RPC Bitcoin (non utilisés avec cookie_path)
rpc_user = ""
rpc_pass = ""
# Hauteur de départ pour la synchronisation
sync_start_height = 1
# Paramètres de performance
max_parallel_tweak_computations = 4
max_parallel_requests = 4
# Configuration des index
tweaks_only = 0
tweaks_full_basic = 1
tweaks_full_with_dust_filter = 1
tweaks_cut_through_with_dust_filter = 1

View File

@ -1,49 +0,0 @@
[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-central.local: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

@ -1,16 +0,0 @@
[PROD]
U32_MAX=4294967295
BASEURL="http://ihm-client.local"
BOOTSTRAPURL=["http://sdk-relay1.local:8090"]
STORAGEURL="http://sdk-storage.local/storage"
BLINDBITURL="http://blindbit.local:8000"
DEFAULTAMOUNT=1000
[DEV]
U32_MAX=4294967295
BASEURL="http://ihm-client.local"
BOOTSTRAPURL=["http://sdk-relay1.local:8090"]
STORAGEURL="http://sdk-storage.local/storage"
BLINDBITURL="http://blindbit.local:8000"
DEFAULTAMOUNT=1000

View File

@ -1,19 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIDIDCCAgigAwIBAgIUaYEl/pQF0ZyLDAi5FR7xZYyeeKswDQYJKoZIhvcNAQEL
BQAwEjEQMA4GA1UEAwwHKi5sb2NhbDAeFw0yNTA5MTExNDI0MjRaFw0zNTA5MDkx
NDI0MjRaMBIxEDAOBgNVBAMMByoubG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQD3Njaaod0J1g8ag24ZDwW2Y1xOmJpZqQp2b2CQodAsoAQFrvfz
ltOwOAiZPV2aBDL7u2aKbNfZW7AUTBNDanevadLzeXK1H9xXuDzr0ROQh0LK3V+V
znfQh8Y12HdOWtyZMf3suEBoy98OoT8jqUocDajDOfVMx1kYb3Rl8EUmcS9IqOOr
h68rrcmSH4Wq1cTXMv71qqTD7K0vixdgrOgN2YLF5l+upb465TpUFp3pp63s/Itf
/AOpd5PDu2tw2aZvrEH4MckQ310S3rRQCobe61m5iwIRk1KWdgb2bGyV6yZX6KmF
htFN1OZaN0Iz/kzMkqSRhyfViiCcyStLWw2NAgMBAAGjbjBsMB0GA1UdDgQWBBR8
4QPda5kFELdFLjDjbieUMk9nsTAfBgNVHSMEGDAWgBR84QPda5kFELdFLjDjbieU
Mk9nsTAPBgNVHRMBAf8EBTADAQH/MBkGA1UdEQQSMBCCByoubG9jYWyCBWxvY2Fs
MA0GCSqGSIb3DQEBCwUAA4IBAQC+OzNNEUQLR/01AwfQpduYSD+YVRxrYvDdKujR
zc+yTyglkM3RQdmLVsMPaVmZatUc0DG1Ggx+D9oTLVrqQcdy1mKBJ2jKn+cnlJ9R
32CKtnb6vBPTwm03dP08H6cH8f17RKI4rTnl7C/bygMNeuvmlXltr7FZIdI9fJ1n
kMGpY7FXQQw66qYy6OFc+YPkA3soOAfyUuNIzjaxB/E87Sk4quxE6zFNfCBK8QTS
/Cwdx7anxQpmnpu9a1f7ql1t6ylFPCn39HT/kemSXeq2nU43X/CGEAhVKK4aEX9Y
E3plaTx7fKjFEli0V7T+bhj8c6nJb3IprvW2uQ+fhzqRmRiI
-----END CERTIFICATE-----

View File

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQD3Njaaod0J1g8a
g24ZDwW2Y1xOmJpZqQp2b2CQodAsoAQFrvfzltOwOAiZPV2aBDL7u2aKbNfZW7AU
TBNDanevadLzeXK1H9xXuDzr0ROQh0LK3V+VznfQh8Y12HdOWtyZMf3suEBoy98O
oT8jqUocDajDOfVMx1kYb3Rl8EUmcS9IqOOrh68rrcmSH4Wq1cTXMv71qqTD7K0v
ixdgrOgN2YLF5l+upb465TpUFp3pp63s/Itf/AOpd5PDu2tw2aZvrEH4MckQ310S
3rRQCobe61m5iwIRk1KWdgb2bGyV6yZX6KmFhtFN1OZaN0Iz/kzMkqSRhyfViiCc
yStLWw2NAgMBAAECggEAXOU3YaYffJm+tTTcQ3hcqivuPO6lWbnm35h8zfywUISU
3lngfN2ZkKeNu5/Os5iOXAAQyUWbWudUZFwuBPBWJ0l55tolW6CsWR43blnzoyTg
2YCUcaPTbD4JIqTEOGJ2cO7TP4gBVCAAIuw+4LS1z5Lmbu4xmndyqHcBY2kFYyr6
CS4oHCip1J5AcIXbDx0eEJxyFFQvh/nAy1nUvoAuqt3X0Bpoj90uBXyG1KRz2Db7
KANWPMeWRVPU6ceXorUPb24fUDah2g3YddXG3bqVVS0yq9G5eMZv5sl8Chs2P5Kp
3wARRjvt1WANXWPwk8W+cbBrWsZxCgCxgpgup48S9QKBgQD+Chl+TexZzReHR5yD
jif3/FKX2hp38RmNbpO2EhxCbkmGgmZwTkWyNCwCCr4mhAKMIMbL69zT8HKxWdSx
C0lJ9oPYCW3VqqPOIfIsN6mW2Hi4s2aMA8nNUUWWjhyi/msSDxOZRJZUj3s3+evs
B/Q9jkQvFkmNT0ZYSpHlUwgR5wKBgQD5Hp/ZLzySaBOqLpZjmPih9Q53diSuTZvN
wZVicmh32moGniSGKjWC7cetGCyAHzsBMDdN9XBJ1gqGxkmiFFmmfdxtpo/Jmps1
a//ZS+RfXpphpRmgXfnUd9nUNwv0roQWTf0njmwdjXFNMBQjlQQZ1NwsvrJPr4FA
9rC3dLmeawKBgF4skkzPSEn2DL3anzvprAlzYY7njJ5gI4/ZqSp6xj0eM2WI277Q
VWf9jT7oipsunt8hm3CnLELpRStX2NAVFgM0PqYMwMnPq0/UJ7manOTNtNsLrn1D
PkE92qU4Y4dM95ZHPoW39l68nfofTQU/4ZwcLEykX3niJHrAkhtIT5qLAoGAGeXK
Hkzf0iSJrs5rCe2UI1oTZ+3bQFeHE+vE+NgF7jfBf/CewWfP6k2HzYHO1n7opmX5
ydvzEWnz7DDe5L+S1lENQkTne8Db08DndxKBqjxudiowsNA0MZdICNy0HHqr9pmi
8KLIsIXMuoZ+AXjzVTAgt3IXnVsUZ8l9c4Tp6wMCgYBGIx0MLhJ69X1Te9SQb/pT
rxEEmn17z7YY0xUablgwahA+HbCeJjAckk7zmjEG9c8hixYecXZTD9A7ul9gCrAU
zlZF2QDv28tLRr8nHNYFFzbNTI/gy0cFDJKGouE6DPGjU8bWM23fXtJJTVeqIMW5
8oCPL7ZL6V5uxZEWFfQUtg==
-----END PRIVATE KEY-----

View File

@ -1,76 +0,0 @@
worker_processes auto;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
sendfile on;
keepalive_timeout 65;
# DNS interne (dnsmasq sur la passerelle Docker de 4nk_network)
resolver 172.20.0.1 valid=10s ipv6=off;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# Mapping hôte -> port applicatif
map $host $upstream_port {
default 80;
ihm-client.local 80;
coffre-front.local 3000;
coffre-back-mini.local 8080;
blindbit-oracle.local 8000;
sdk-storage.local 8080;
sdk-relay1.local 8090;
sdk-relay2.local 8090;
sdk-relay3.local 8090;
sdk-signer.local 9090;
grafana-central.local 3000;
loki.local 3100;
prometheus.local 9091;
4nk-ia-front.local 3000;
}
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
server {
listen 443 ssl;
server_name *.local;
ssl_certificate /etc/nginx/certs/local.crt;
ssl_certificate_key /etc/nginx/certs/local.key;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_pass http://$host:$upstream_port$request_uri;
}
}
}

View File

@ -1,9 +0,0 @@
core_url="http://bitcoin.local:38332"
ws_url="sdk-relay1.local:8090"
wallet_name="default"
network="signet"
blindbit_url="http://blindbit-oracle.local:8000"
zmq_url="tcp://bitcoin.local:29000"
storage="https://sdk-storage.local/storage"
data_dir="/home/bitcoin/.4nk"
bitcoin_data_dir="/home/bitcoin/.bitcoin"

View File

@ -1,9 +0,0 @@
core_url="http://bitcoin.local:38332"
ws_url="sdk-relay2.local:8090"
wallet_name="default"
network="signet"
blindbit_url="http://blindbit-oracle.local:8000"
zmq_url="tcp://bitcoin.local:29000"
storage="https://sdk-storage.local/storage"
data_dir="/home/bitcoin/.4nk"
bitcoin_data_dir="/home/bitcoin/.bitcoin"

View File

@ -1,9 +0,0 @@
core_url="http://bitcoin.local:38332"
ws_url="sdk-relay3.local:8090"
wallet_name="default"
network="signet"
blindbit_url="http://blindbit-oracle.local:8000"
zmq_url="tcp://bitcoin.local:29000"
storage="https://sdk-storage.local/storage"
data_dir="/home/bitcoin/.4nk"
bitcoin_data_dir="/home/bitcoin/.bitcoin"

View File

@ -1,33 +0,0 @@
# Configuration sdk_signer - Module 4NK_node
# Ports
ws_port = 9090
http_port = 9092
# URLs des services
relay_urls = ["http://sdk-relay1.local:8091", "http://sdk-relay2.local:8093", "http://sdk-relay3.local:8095"]
storage_url = "http://sdk-storage.local:8081"
blindbit_url = "http://blindbit-core.local:8000"
bitcoin_rpc_url = "http://bitcoin.local:38332"
# Authentification Bitcoin
bitcoin_rpc_user = "bitcoin"
bitcoin_rpc_password = "bitcoin"
data_dir="/home/bitcoin/.4nk"
bitcoin_data_dir="/home/bitcoin/.bitcoin"
# Mode développement
dev_mode = true
debug_level = "info"
# Limites de connexions
max_connections = 100
timeout = 30
# Logging
log_level = "info"
log_file = "/home/bitcoin/logs/sdk_signer.log"
# Sécurité
enable_tls = false
enable_auth = false

View File

@ -1,16 +0,0 @@
# Configuration Tor pour 4NK_node (conteneur)
# Ports d\écoute
# Ports d\'écoute
SocksPort tor.local:9050
ControlPort tor.local:9051
# Répertoires
DataDirectory /var/lib/tor
# Logs (fichier monté par docker-compose)
Log notice file /var/log/tor/notices.log
# Exécution en avant-plan dans un conteneur
RunAsDaemon 0

View File

@ -1,19 +0,0 @@
#!/bin/sh
set -e
TORRC_PATH=/etc/tor/torrc
if [ ! -f "$TORRC_PATH" ]; then
mkdir -p /etc/tor
cat > "$TORRC_PATH" << 'EOF'
Log notice file /var/log/tor/notices.log
DataDirectory /var/lib/tor
SocksPort 0.0.0.0:9050
ControlPort 9051
EOF
fi
# Ensure permissions for Tor data directories when running as root
chown -R 0:0 /var/lib/tor /var/log/tor /etc/tor 2>/dev/null || true
chmod -R a+rwX /var/lib/tor /var/log/tor /etc/tor 2>/dev/null || true
tor -f "$TORRC_PATH"

View File

@ -1,15 +0,0 @@
# Configuration Tor simple pour 4NK_node
# Écoute sur toutes les interfaces pour permettre la connexion depuis d'autres conteneurs
# Ports SOCKS et contrôle
SocksPort tor.4nk.local:9050
ControlPort tor.4nk.local:9051
# Répertoire de données
DataDirectory /var/lib/tor
# Logs sur stdout pour Docker
Log notice stdout
# Désactiver le mode daemon pour Docker
RunAsDaemon 0

View File

@ -1,50 +0,0 @@
# Configuration OVH
OVH_APP_KEY=
OVH_APP_SECRET=
OVH_CONSUMER_KEY=
OVH_SMS_SERVICE_NAME=sms-tt802880-1
# Configuration SMS Factor
SMS_FACTOR_TOKEN=
#Configuration Mailchimp
MAILCHIMP_API_KEY=
MAILCHIMP_KEY=
MAILCHIMP_LIST_ID=
#Configuration Stripe
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_STANDARD_SUBSCRIPTION_PRICE_ID=
STRIPE_STANDARD_ANNUAL_SUBSCRIPTION_PRICE_ID=
STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID=
STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID=
# Configuration serveur
APP_HOST=http://coffre-back-mini.local
PORT=8080
# Configuration front-end
NEXT_PUBLIC_4NK_URL=http://ihm-client.local
NEXT_PUBLIC_FRONT_APP_HOST=http://coffre-front.local:3000
NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr
NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/idnot_idp_v1
NEXT_PUBLIC_IDNOT_CLIENT_ID=
NEXT_PUBLIC_BACK_API_PROTOCOL=http
NEXT_PUBLIC_BACK_API_HOST=localhost
BACK_API_PORT=8080
BACK_API_ROOT_URL=/api
BACK_API_VERSION=/v1
# Configuration idnot
IDNOT_ANNUARY_BASE_URL='https://qual-api.notaires.fr/annuaire'
IDNOT_API_KEY=''
# Configuration PostgreSQL
DB_HOST=miniback-postgres.local
DB_PORT=5432
DB_NAME=miniback
DB_USER=miniback
DB_PASSWORD=minibackpassword
LOG_LEVEL="debug"

View File

@ -1,10 +0,0 @@
NEXT_PUBLIC_4NK_URL="http://ihm-client.local:3003"
NEXT_PUBLIC_FRONT_APP_HOST="http://coffre-front.local:3000"
NEXT_PUBLIC_IDNOT_BASE_URL="https://qual-connexion.idnot.fr"
NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT="/IdPOAuth2/authorize/idnot_idp_v1"
NEXT_PUBLIC_IDNOT_CLIENT_ID=""
NEXT_PUBLIC_BACK_API_PROTOCOL=http://
NEXT_PUBLIC_BACK_API_HOST=localhost
NEXT_PUBLIC_BACK_API_PORT=8080
NEXT_PUBLIC_BACK_API_ROOT_URL=/api
NEXT_PUBLIC_BACK_API_VERSION=/v1

View File

@ -1 +0,0 @@
NEXT_PUBLIC_TARGET_ORIGIN=http://coffre-back-mini.local

View File

@ -37,7 +37,7 @@ echo "🧪 Test de résolution DNS..."
sleep 2
# Test des noms Docker
for hostname in "tor.4nk.local" "bitcoin.4nk.local" "coffre-front.4nk.local"; do
for hostname in "tor.4nk.4nk-local" "bitcoin.4nk.4nk-local" "coffre-front.4nk.4nk-local"; do
echo -n " Test $hostname: "
if nslookup -port=5353 "$hostname" 127.0.0.1 > /dev/null 2>&1; then
echo "✅ OK"

View File

@ -2,18 +2,18 @@
set -euo pipefail
hostnames=(
tor.local
bitcoin.local
blindbit-oracle.local
sdk-storage.local
sdk-relay1.local
sdk-relay2.local
sdk-relay3.local
sdk-signer.local
ihm-client.local
miniback-postgres.local
coffre-front.local
coffre-back-mini.local
tor.modules.4nk-local
bitcoin.modules.4nk-local
blindbit-oracle.modules.4nk-local
sdk-storage.modules.4nk-local
i1.sdk-relay.4nk-local
i2.sdk-relay.4nk-local
i3.sdk-relay.4nk-local
sdk-signer.4nk-local
ihm.client.modules.4nk-local
miniback-postgres.4nk-local
coffre-front.4nk-local
coffre-back-mini.4nk-local
)
# Vérifier la résolution DNS via dnsmasq (127.0.0.1:5353)
@ -26,14 +26,14 @@ for h in "${hostnames[@]}"; do
done
declare -A ports=(
[bitcoin.local]=38332
[blindbit-oracle.local]=8000
[sdk-storage.local]=8080
[sdk-relay1.local]=8090
[sdk-relay2.local]=8090
[sdk-relay3.local]=8090
[sdk-signer.local]=9090
[ihm-client.local]=80
[bitcoin.modules.4nk-local]=38332
[blindbit-oracle.modules.4nk-local]=8000
[sdk-storage.modules.4nk-local]=8080
[i1.sdk-relay.4nk-local]=8090
[i2.sdk-relay.4nk-local]=8090
[i3.sdk-relay.4nk-local]=8090
[sdk-signer.4nk-local]=9090
[ihm.client.modules.4nk-local]=80
)
fail=0