commit 4f4fec33be690d16948d8156af8e7033e80d5123 Author: Nicolas Cantu Date: Fri Aug 22 12:02:59 2025 +0200 rerise de lecoffre_node diff --git a/README.md b/README.md new file mode 100644 index 00000000..523d6a23 --- /dev/null +++ b/README.md @@ -0,0 +1,276 @@ +# 4NK Node - Infrastructure Docker + +Infrastructure Docker complète pour le développement et le déploiement de services 4NK + +## 🏗️ Architecture + +4NK Node est composé de plusieurs services orchestrés via Docker Compose : + +- **Tor** : Proxy anonyme pour Bitcoin Core +- **Bitcoin Core** : Nœud Bitcoin en mode signet +- **Blindbit** : Service de filtres pour les paiements silencieux +- **sdk_relay** : Service de relais pour l'intégration avec les applications + +## 🚀 Démarrage rapide + +### Prérequis + +- Docker et Docker Compose installés +- Au moins 10 Go d'espace disque disponible +- Connexion Internet pour la synchronisation Bitcoin + +### Installation + +```bash +# Cloner le repository +git clone https://git.4nkweb.com/4nk/4NK_node.git +cd 4NK_node + +# Lancer tous les services +sudo docker-compose up -d + +# Vérifier le statut des services +sudo docker-compose ps +``` + +### Services disponibles + +| Service | Port | Description | +|---------|------|-------------| +| Tor | 9050, 9051 | Proxy anonyme | +| Bitcoin Core | 18443 (RPC), 29000 (ZMQ) | Nœud Bitcoin signet | +| Blindbit | 8000 | Service de filtres | +| sdk_relay | 8090, 8091 | Service de relais | + +## 📋 Configuration + +### Bitcoin Core + +Configuration automatique pour le réseau signet avec : + +- RPC activé sur le port 18443 +- ZMQ activé sur le port 29000 +- Connexion Tor pour l'anonymat +- Synchronisation automatique + +### Blindbit + +Service de filtres pour les paiements silencieux : + +- Version stable (branche master) +- Connexion automatique à Bitcoin Core +- API REST sur le port 8000 + +### sdk_relay + +Service de relais pour l'intégration : + +- Configuration Docker automatique +- Authentification par cookie Bitcoin Core +- Connexion aux services via réseau Docker + +## 🔧 Scripts utilitaires + +### Tests de connectivité + +```bash +# Test complet de tous les services +cd sdk_relay +./test_final.sh + +# Test de connectivité réseau +./test_connectivity.sh + +# Test simple +./test_simple.sh +``` + +### Débogage + +```bash +# Débogage du container sdk_relay +./debug_container.sh + +# Logs des services +sudo docker-compose logs [service_name] +``` + +## 🌐 Réseau Docker + +Tous les services communiquent via le réseau `4nk_node_btcnet` avec résolution DNS automatique : + +- `bitcoin` : Bitcoin Core +- `blindbit` : Service Blindbit +- `tor` : Proxy Tor +- `sdk_relay` : Service de relais + +## 📊 Monitoring + +### Healthchecks + +Les services incluent des healthchecks automatiques : + +```bash +# Vérifier l'état des healthchecks +sudo docker-compose ps + +# Logs des healthchecks +sudo docker-compose logs | grep health +``` + +### Logs + +```bash +# Logs de tous les services +sudo docker-compose logs -f + +# Logs d'un service spécifique +sudo docker-compose logs -f bitcoin +sudo docker-compose logs -f blindbit +sudo docker-compose logs -f sdk_relay +``` + +## 🔒 Sécurité + +### Authentification + +- Bitcoin Core utilise l'authentification par cookie +- Les cookies sont automatiquement copiés dans les containers +- Permissions restrictives sur les fichiers sensibles + +### Réseau + +- Isolation via réseau Docker +- Communication interne uniquement +- Ports exposés limités au minimum nécessaire + +## 🛠️ Développement + +### Ajout d'un nouveau service + +1. Créer le Dockerfile dans un sous-répertoire +2. Ajouter le service dans `docker-compose.yml` +3. Configurer les dépendances et le réseau +4. Ajouter les healthchecks si nécessaire + +### Modification de la configuration + +```bash +# Modifier la configuration Bitcoin Core +sudo docker-compose down +# Éditer bitcoin/bitcoin.conf +sudo docker-compose up -d bitcoin + +# Modifier la configuration Blindbit +# Éditer blindbit/blindbit.toml +sudo docker-compose restart blindbit +``` + +## 📁 Structure des fichiers + +``` +lecoffre_node/ +├── bitcoin/ +│ ├── Dockerfile +│ └── bitcoin.conf +├── blindbit/ +│ ├── Dockerfile +│ └── blindbit.toml +├── sdk_relay/ +│ ├── Dockerfile +│ ├── .conf.docker +│ └── scripts/ +├── tor/ +│ ├── Dockerfile +│ └── torrc +├── docker-compose.yml +└── README.md +``` + +## 🚨 Dépannage + +### Problèmes courants + +1. **Ports déjà utilisés** + + ```bash + # Vérifier les ports utilisés + sudo netstat -tlnp | grep -E "(18443|8000|9050)" + + # Arrêter les services conflictuels + sudo docker-compose down + ``` + +2. **Problèmes de synchronisation Bitcoin** + + ```bash + # Vérifier les logs Bitcoin Core + sudo docker-compose logs bitcoin + + # Redémarrer Bitcoin Core + sudo docker-compose restart bitcoin + ``` + +3. **Problèmes de connectivité sdk_relay** + + ```bash + # Tester la connectivité + cd sdk_relay + ./test_final.sh + + # Vérifier la configuration + ./debug_container.sh + ``` + +### Logs détaillés + +```bash +# Logs avec timestamps +sudo docker-compose logs -t + +# Logs des 100 dernières lignes +sudo docker-compose logs --tail=100 + +# Logs depuis une date +sudo docker-compose logs --since="2024-01-01T00:00:00" +``` + +## 📈 Performance + +### Ressources recommandées + +- **CPU** : 2 cœurs minimum, 4 cœurs recommandés +- **RAM** : 4 Go minimum, 8 Go recommandés +- **Stockage** : 20 Go minimum pour la blockchain signet +- **Réseau** : Connexion stable pour la synchronisation + +### Optimisations + +```bash +# Limiter l'utilisation CPU +sudo docker-compose up -d --scale bitcoin=1 + +# Surveiller l'utilisation des ressources +sudo docker stats +``` + +## 🤝 Contribution + +1. Fork le repository +2. Créer une branche feature (`git checkout -b feature/nouvelle-fonctionnalite`) +3. Commit les changements (`git commit -am 'Ajout de nouvelle fonctionnalité'`) +4. Push la branche (`git push origin feature/nouvelle-fonctionnalite`) +5. Créer une Pull Request + +## 📄 Licence + +Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails. + +## 🆘 Support + +Pour obtenir de l'aide : + +1. Consulter la documentation +2. Vérifier les issues existantes +3. Créer une nouvelle issue avec les détails du problème +4. Inclure les logs et la configuration utilisée diff --git a/bitcoin/Dockerfile b/bitcoin/Dockerfile new file mode 100644 index 00000000..0d40955d --- /dev/null +++ b/bitcoin/Dockerfile @@ -0,0 +1,55 @@ +# bitcoin/Dockerfile +FROM debian:bullseye-slim as builder + +# Installation des dépendances +RUN apt-get update && apt-get install -y \ + curl \ + gnupg \ + && rm -rf /var/lib/apt/lists/* + +# Version de Bitcoin Core +ENV VERSION=24.1 + +# Téléchargement et vérification de Bitcoin Core +WORKDIR /tmp +RUN curl -O https://bitcoincore.org/bin/bitcoin-core-${VERSION}/bitcoin-${VERSION}-x86_64-linux-gnu.tar.gz && \ + curl -O https://bitcoincore.org/bin/bitcoin-core-${VERSION}/SHA256SUMS.asc && \ + curl -O https://bitcoincore.org/bin/bitcoin-core-${VERSION}/SHA256SUMS + +# Extraction de Bitcoin Core +RUN tar -xzf bitcoin-${VERSION}-x86_64-linux-gnu.tar.gz + +# Image finale +FROM debian:bullseye-slim + +# On redéfinit la version dans l'image finale +ENV VERSION=24.1 + +# Installation des dépendances nécessaires +RUN apt-get update && apt-get install -y \ + libatomic1 \ + && rm -rf /var/lib/apt/lists/* + +# Créer l'utilisateur et le groupe bitcoin +RUN groupadd -g 1000 bitcoin && \ + useradd -m -d /home/bitcoin -g bitcoin bitcoin + +# Copie des binaires depuis le builder +COPY --from=builder /tmp/bitcoin-${VERSION}/bin/bitcoind /usr/local/bin/ +COPY --from=builder /tmp/bitcoin-${VERSION}/bin/bitcoin-cli /usr/local/bin/ + +# Configuration +RUN mkdir -p /home/bitcoin/.bitcoin/wallets /home/bitcoin/.bitcoin/signet && \ + chown -R bitcoin:bitcoin /home/bitcoin/.bitcoin +COPY bitcoin.conf /home/bitcoin/.bitcoin/bitcoin.conf +RUN chown bitcoin:bitcoin /home/bitcoin/.bitcoin/bitcoin.conf + +VOLUME ["/home/bitcoin/.bitcoin"] + +# Exposition des ports (signet) +EXPOSE 38332 38333 29000 18443 + +USER bitcoin +WORKDIR /home/bitcoin +ENTRYPOINT ["bitcoind", "-conf=/home/bitcoin/.bitcoin/bitcoin.conf", "-signet", "-printtoconsole"] + diff --git a/bitcoin/bitcoin.conf b/bitcoin/bitcoin.conf new file mode 100644 index 00000000..281e3eab --- /dev/null +++ b/bitcoin/bitcoin.conf @@ -0,0 +1,42 @@ +# Configuration globale +datadir=/home/bitcoin/.bitcoin +server=1 +txindex=1 +debug=1 +loglevel=debug +logthreadnames=1 +signet=1 +onion=tor:9050 +listenonion=1 +proxy=tor:9050 + +# Paramètres RPC +rpcauth=bitcoin:c8ea921c7357bd6a5a8a7c43a12350a7$955e25b17672987b17c5a12f12cd8b9c1d38f0f86201c8cd47fc431f2e1c7956 +rpcallowip=0.0.0.0/0 +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:18443 +rpcbind=0.0.0.0 +rpcport=18443 +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 \ No newline at end of file diff --git a/blindbit/Dockerfile b/blindbit/Dockerfile new file mode 100644 index 00000000..3181616d --- /dev/null +++ b/blindbit/Dockerfile @@ -0,0 +1,31 @@ +# blindbit-oracle/Dockerfile +FROM golang:1.24 as builder + +WORKDIR /app + +# Cloner le repo blindbit-oracle (version stable) +RUN git clone --branch master --depth 1 https://github.com/setavenger/blindbit-oracle.git . + +# Compiler le binaire +RUN go build -o /go/bin/blindbit-oracle ./src + +# Utiliser debian:bookworm-slim qui contient GLIBC 2.34 +FROM debian:bookworm-slim + +# Installation des dépendances nécessaires +RUN apt-get update && apt-get install -y ca-certificates curl && rm -rf /var/lib/apt/lists/* + +# Copier le binaire depuis le builder +COPY --from=builder /go/bin/blindbit-oracle /usr/local/bin/blindbit-oracle + +# Créer le répertoire de données +RUN mkdir -p /data + +# Créer le volume pour les données +VOLUME ["/data"] + +# Exposer le port par défaut +EXPOSE 8000 + +# Démarrer blindbit-oracle avec le répertoire de données spécifié +ENTRYPOINT ["blindbit-oracle", "-datadir", "/data"] \ No newline at end of file diff --git a/blindbit/blindbit.toml b/blindbit/blindbit.toml new file mode 100644 index 00000000..b35ecb08 --- /dev/null +++ b/blindbit/blindbit.toml @@ -0,0 +1,28 @@ +# Configuration pour blindbit-oracle +host = "0.0.0.0:8000" + +# Définit la chaîne sur laquelle le wallet fonctionne +chain = "signet" + +# Point d'accès RPC Bitcoin +rpc_endpoint = "http://bitcoin:18443" + +# 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 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..d0ad8934 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,114 @@ +version: '3.8' + +services: + tor: + image: dperson/torproxy:latest + container_name: tor-proxy + networks: + btcnet: + aliases: + - tor + ports: + - "9050:9050" # Port SOCKS + - "9051:9051" # Port de contrôle + restart: unless-stopped + + bitcoin: + build: ./bitcoin + container_name: bitcoin-signet + depends_on: + - tor + volumes: + - bitcoin_data:/home/bitcoin/.bitcoin + - ./bitcoin/bitcoin.conf:/home/bitcoin/.bitcoin/bitcoin.conf + ports: + - "38333:38333" # signet p2p + - "18443:18443" # signet rpc + - "29000:29000" # zmq + networks: + btcnet: + aliases: + - bitcoin + environment: + - TOR_HOST=tor + - TOR_PORT=9050 + restart: unless-stopped + healthcheck: + test: ["CMD", "bitcoin-cli", "-conf=/home/bitcoin/.bitcoin/bitcoin.conf", "getblockchaininfo"] + interval: 30s + timeout: 10s + retries: 3 + + blindbit: + build: ./blindbit + container_name: blindbit-oracle + depends_on: + - bitcoin + volumes: + - blindbit_data:/data + - ./blindbit/blindbit.toml:/data/blindbit.toml + - bitcoin_data:/home/bitcoin/.bitcoin + ports: + - "8000:8000" + networks: + btcnet: + aliases: + - blindbit + restart: unless-stopped + + sdk_relay: + build: + context: .. + dockerfile: lecoffre_node/sdk_relay/Dockerfile + container_name: sdk_relay + depends_on: + bitcoin: + condition: service_healthy + blindbit: + condition: service_started + volumes: + - bitcoin_data:/home/bitcoin/.bitcoin + - ./bitcoin/bitcoin.conf:/home/bitcoin/.bitcoin/bitcoin.conf + - sdk_relay_data:/home/bitcoin/.4nk + - ./sdk_relay/.conf.docker:/home/bitcoin/.conf.docker + ports: + - "8090:8090" + - "8091:8091" + networks: + btcnet: + aliases: + - sdk_relay + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + environment: + - RUST_LOG=debug,bitcoincore_rpc=trace + - HOME=/home/bitcoin + - BITCOIN_COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie + restart: on-failure:3 + entrypoint: > + /bin/sh -c " + cp /home/bitcoin/.conf.docker /home/bitcoin/.conf && + cp /home/bitcoin/.bitcoin/signet/.cookie /home/bitcoin/.4nk/bitcoin.cookie && + chmod 600 /home/bitcoin/.4nk/bitcoin.cookie && + /usr/local/bin/sdk_relay --config .conf" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8091/health"] + interval: 30s + timeout: 10s + retries: 3 + +volumes: + bitcoin_data: + name: 4nk_node_bitcoin_data + blindbit_data: + name: 4nk_node_blindbit_data + sdk_relay_data: + name: 4nk_node_sdk_relay_data + +networks: + btcnet: + name: 4nk_node_btcnet + driver: bridge diff --git a/sdk_relay/.conf.docker b/sdk_relay/.conf.docker new file mode 100644 index 00000000..c76240f5 --- /dev/null +++ b/sdk_relay/.conf.docker @@ -0,0 +1,16 @@ +# Configuration sdk_relay pour Docker +# Services connectés via réseau Docker + +# Bitcoin Core RPC (utilise le nom d'hôte Docker et le cookie) +core_url=http://bitcoin:18443 +core_wallet=relay_wallet +ws_url=127.0.0.1:8080 +wallet_name=relay_wallet.json +network=signet +blindbit_url=http://blindbit:8000 +zmq_url=tcp://bitcoin:29000 +data_dir=.4nk + +# Mode développement +dev_mode=true +standalone=false diff --git a/sdk_relay/Dockerfile b/sdk_relay/Dockerfile new file mode 100644 index 00000000..99e03efd --- /dev/null +++ b/sdk_relay/Dockerfile @@ -0,0 +1,50 @@ +# sdk_relay Dockerfile +FROM rust:1.89 as builder + +WORKDIR /app + +# Copier les sources +COPY sdk_relay/ /app/sdk_relay/ +COPY sdk_common/ /app/sdk_common/ + +# Compiler sdk_relay +WORKDIR /app/sdk_relay +RUN sed -i 's|path = "../sdk_common"|path = "/app/sdk_common"|' Cargo.toml && \ + cargo build --release + +# Image finale +FROM debian:bookworm-slim + +# Installation des dépendances +RUN apt-get update && apt-get install -y \ + ca-certificates \ + curl \ + strace \ + && rm -rf /var/lib/apt/lists/* + +# Copier le binaire +COPY --from=builder /app/sdk_relay/target/release/sdk_relay /usr/local/bin/sdk_relay + +# Créer l'utilisateur bitcoin +RUN groupadd -g 1000 bitcoin && \ + useradd -m -d /home/bitcoin -g bitcoin bitcoin + +# Répertoire de travail +WORKDIR /home/bitcoin + +# Créer le répertoire de données +RUN mkdir -p /home/bitcoin/.4nk + +# Copier la configuration +COPY sdk_relay/.conf /home/bitcoin/.conf + +# Changer les permissions +RUN chown -R bitcoin:bitcoin /home/bitcoin + +USER bitcoin + +# Exposer les ports +EXPOSE 8090 8091 + +# Point d'entrée par défaut (peut être surchargé) +CMD ["/bin/bash"] diff --git a/sdk_relay/debug_container.sh b/sdk_relay/debug_container.sh new file mode 100755 index 00000000..fde479d4 --- /dev/null +++ b/sdk_relay/debug_container.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Script de débogage pour le container sdk_relay +set -e + +echo "🔍 Débogage du container sdk_relay..." +echo "" + +# Test 1: Vérifier que le container sdk_relay est connecté au réseau +echo "📡 Test 1: Réseau du container sdk_relay" +if sudo docker inspect sdk_relay | grep -q "4nk_node_btcnet"; then + echo "✅ Container connecté au réseau 4nk_node_btcnet" +else + echo "❌ Container non connecté au réseau 4nk_node_btcnet" +fi + +# Test 2: Vérifier la configuration dans le container +echo "" +echo "📡 Test 2: Configuration dans le container" +echo "Configuration .conf:" +sudo docker exec sdk_relay cat /home/bitcoin/.conf 2>/dev/null || echo "❌ Impossible de lire .conf" + +echo "" +echo "Configuration .conf.docker:" +sudo docker exec sdk_relay cat /home/bitcoin/.conf.docker 2>/dev/null || echo "❌ Impossible de lire .conf.docker" + +# Test 3: Vérifier la résolution DNS depuis sdk_relay +echo "" +echo "📡 Test 3: Résolution DNS depuis sdk_relay" +echo "Résolution 'bitcoin':" +sudo docker exec sdk_relay getent hosts bitcoin 2>/dev/null || echo "❌ Impossible de résoudre 'bitcoin'" + +echo "Résolution 'blindbit':" +sudo docker exec sdk_relay getent hosts blindbit 2>/dev/null || echo "❌ Impossible de résoudre 'blindbit'" + +# Test 4: Vérifier la connectivité depuis sdk_relay +echo "" +echo "📡 Test 4: Connectivité depuis sdk_relay" +echo "Test Bitcoin Core (port 18443):" +sudo docker exec sdk_relay sh -c "nc -z bitcoin 18443" 2>/dev/null && echo "✅ Bitcoin Core accessible" || echo "❌ Bitcoin Core inaccessible" + +echo "Test Blindbit (port 8000):" +sudo docker exec sdk_relay sh -c "nc -z blindbit 8000" 2>/dev/null && echo "✅ Blindbit accessible" || echo "❌ Blindbit inaccessible" + +# Test 5: Vérifier les variables d'environnement +echo "" +echo "📡 Test 5: Variables d'environnement" +sudo docker exec sdk_relay env | grep -E "(RUST_LOG|HOME|BITCOIN)" || echo "❌ Variables d'environnement non trouvées" + +# Test 6: Vérifier le répertoire de travail +echo "" +echo "📡 Test 6: Répertoire de travail" +sudo docker exec sdk_relay pwd +sudo docker exec sdk_relay ls -la /home/bitcoin/ + +echo "" +echo "🎯 Résumé du débogage terminé" diff --git a/sdk_relay/test_connectivity.sh b/sdk_relay/test_connectivity.sh new file mode 100755 index 00000000..b78f9505 --- /dev/null +++ b/sdk_relay/test_connectivity.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# Script de test de connectivité pour sdk_relay +set -e + +echo "🔍 Test de connectivité pour sdk_relay..." +echo "" + +# Test 1: Vérifier que le container sdk_relay peut résoudre les noms d'hôtes +echo "📡 Test 1: Résolution DNS depuis sdk_relay" +if sudo docker run --rm --network 4nk_node_btcnet --name test_sdk_relay lecoffre_node_sdk_relay getent hosts bitcoin 2>/dev/null | grep -q "bitcoin"; then + echo "✅ Résolution DNS 'bitcoin' OK" +else + echo "❌ Résolution DNS 'bitcoin' échoue" +fi + +if sudo docker run --rm --network 4nk_node_btcnet --name test_sdk_relay lecoffre_node_sdk_relay getent hosts blindbit 2>/dev/null | grep -q "blindbit"; then + echo "✅ Résolution DNS 'blindbit' OK" +else + echo "❌ Résolution DNS 'blindbit' échoue" +fi + +# Test 2: Vérifier la connectivité depuis sdk_relay +echo "" +echo "📡 Test 2: Connectivité depuis sdk_relay" +if sudo docker run --rm --network 4nk_node_btcnet --name test_sdk_relay lecoffre_node_sdk_relay sh -c "nc -z bitcoin 18443" 2>/dev/null; then + echo "✅ Bitcoin Core accessible depuis sdk_relay" +else + echo "❌ Bitcoin Core inaccessible depuis sdk_relay" +fi + +if sudo docker run --rm --network 4nk_node_btcnet --name test_sdk_relay lecoffre_node_sdk_relay sh -c "nc -z blindbit 8000" 2>/dev/null; then + echo "✅ Blindbit accessible depuis sdk_relay" +else + echo "❌ Blindbit inaccessible depuis sdk_relay" +fi + +# Test 3: Vérifier la configuration dans le container sdk_relay +echo "" +echo "📡 Test 3: Configuration dans sdk_relay" +echo "Configuration .conf.docker:" +sudo docker run --rm --network 4nk_node_btcnet --name test_sdk_relay lecoffre_node_sdk_relay cat /home/bitcoin/.conf.docker 2>/dev/null || echo "❌ Impossible de lire .conf.docker" + +echo "" +echo "🎯 Résumé:" +echo " - DNS bitcoin: $(if sudo docker run --rm --network 4nk_node_btcnet --name test_sdk_relay lecoffre_node_sdk_relay getent hosts bitcoin 2>/dev/null | grep -q "bitcoin"; then echo "✅"; else echo "❌"; fi)" +echo " - DNS blindbit: $(if sudo docker run --rm --network 4nk_node_btcnet --name test_sdk_relay lecoffre_node_sdk_relay getent hosts blindbit 2>/dev/null | grep -q "blindbit"; then echo "✅"; else echo "❌"; fi)" +echo " - Connectivité Bitcoin: $(if sudo docker run --rm --network 4nk_node_btcnet --name test_sdk_relay lecoffre_node_sdk_relay sh -c "nc -z bitcoin 18443" 2>/dev/null; then echo "✅"; else echo "❌"; fi)" +echo " - Connectivité Blindbit: $(if sudo docker run --rm --network 4nk_node_btcnet --name test_sdk_relay lecoffre_node_sdk_relay sh -c "nc -z blindbit 8000" 2>/dev/null; then echo "✅"; else echo "❌"; fi)" diff --git a/sdk_relay/test_docker.sh b/sdk_relay/test_docker.sh new file mode 100755 index 00000000..75199e70 --- /dev/null +++ b/sdk_relay/test_docker.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +# Script de test pour vérifier la configuration Docker +set -e + +echo "🔍 Test de la configuration Docker..." +echo "" + +# Test 1: Vérifier que le fichier de configuration Docker existe +echo "📡 Test 1: Fichier de configuration Docker" +if [ -f ".conf.docker" ]; then + echo "✅ Fichier .conf.docker présent" + echo "📄 Contenu:" + cat .conf.docker +else + echo "❌ Fichier .conf.docker manquant" + exit 1 +fi + +# Test 2: Vérifier la résolution DNS dans le réseau Docker +echo "" +echo "📡 Test 2: Résolution DNS Docker" +if sudo docker exec bitcoin-signet getent hosts bitcoin 2>/dev/null | grep -q "bitcoin"; then + echo "✅ Résolution DNS 'bitcoin' OK" +else + echo "❌ Résolution DNS 'bitcoin' échoue" +fi + +if sudo docker exec bitcoin-signet getent hosts blindbit 2>/dev/null | grep -q "blindbit"; then + echo "✅ Résolution DNS 'blindbit' OK" +else + echo "❌ Résolution DNS 'blindbit' échoue" +fi + +# Test 3: Vérifier la connectivité réseau +echo "" +echo "📡 Test 3: Connectivité réseau" +if sudo docker exec bitcoin-signet sh -c "nc -z bitcoin 18443" 2>/dev/null; then + echo "✅ Bitcoin Core accessible depuis le réseau Docker" +else + echo "❌ Bitcoin Core inaccessible depuis le réseau Docker" +fi + +if sudo docker exec bitcoin-signet sh -c "nc -z blindbit 8000" 2>/dev/null; then + echo "✅ Blindbit accessible depuis le réseau Docker" +else + echo "❌ Blindbit inaccessible depuis le réseau Docker" +fi + +echo "" +echo "🎯 Résumé:" +echo " - Configuration Docker: $(if [ -f ".conf.docker" ]; then echo "✅"; else echo "❌"; fi)" +echo " - DNS bitcoin: $(if sudo docker exec bitcoin-signet getent hosts bitcoin 2>/dev/null | grep -q "bitcoin"; then echo "✅"; else echo "❌"; fi)" +echo " - DNS blindbit: $(if sudo docker exec bitcoin-signet getent hosts blindbit 2>/dev/null | grep -q "blindbit"; then echo "✅"; else echo "❌"; fi)" +echo " - Connectivité Bitcoin: $(if sudo docker exec bitcoin-signet sh -c "nc -z bitcoin 18443" 2>/dev/null; then echo "✅"; else echo "❌"; fi)" +echo " - Connectivité Blindbit: $(if sudo docker exec bitcoin-signet sh -c "nc -z blindbit 8000" 2>/dev/null; then echo "✅"; else echo "❌"; fi)" diff --git a/sdk_relay/test_final.sh b/sdk_relay/test_final.sh new file mode 100755 index 00000000..885f095f --- /dev/null +++ b/sdk_relay/test_final.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# Script de test final pour sdk_relay +set -e + +echo "🔍 Test final de sdk_relay..." +echo "" + +# Test 1: Vérifier que tous les services sont prêts +echo "📡 Test 1: Services prêts" +if sudo docker-compose ps | grep -q "bitcoin-signet.*Up"; then + echo "✅ Bitcoin Core en cours d'exécution" +else + echo "❌ Bitcoin Core non démarré" + exit 1 +fi + +if sudo docker-compose ps | grep -q "blindbit-oracle.*Up"; then + echo "✅ Blindbit en cours d'exécution" +else + echo "❌ Blindbit non démarré" + exit 1 +fi + +# Test 2: Vérifier la résolution DNS depuis sdk_relay +echo "" +echo "📡 Test 2: Résolution DNS depuis sdk_relay" +if sudo docker run --rm --network 4nk_node_btcnet lecoffre_node_sdk_relay getent hosts bitcoin 2>/dev/null | grep -q "bitcoin"; then + echo "✅ Résolution DNS 'bitcoin' OK" +else + echo "❌ Résolution DNS 'bitcoin' échoue" + exit 1 +fi + +if sudo docker run --rm --network 4nk_node_btcnet lecoffre_node_sdk_relay getent hosts blindbit 2>/dev/null | grep -q "blindbit"; then + echo "✅ Résolution DNS 'blindbit' OK" +else + echo "❌ Résolution DNS 'blindbit' échoue" + exit 1 +fi + +# Test 3: Vérifier la connectivité depuis sdk_relay +echo "" +echo "📡 Test 3: Connectivité depuis sdk_relay" +if sudo docker run --rm --network 4nk_node_btcnet lecoffre_node_sdk_relay sh -c "curl -s -f http://bitcoin:18443 >/dev/null" 2>/dev/null; then + echo "✅ Bitcoin Core accessible depuis sdk_relay" +else + echo "❌ Bitcoin Core inaccessible depuis sdk_relay" + exit 1 +fi + +if sudo docker run --rm --network 4nk_node_btcnet lecoffre_node_sdk_relay sh -c "curl -s -f http://blindbit:8000 >/dev/null" 2>/dev/null; then + echo "✅ Blindbit accessible depuis sdk_relay" +else + echo "❌ Blindbit inaccessible depuis sdk_relay" + exit 1 +fi + +# Test 4: Vérifier la configuration dans le container sdk_relay +echo "" +echo "📡 Test 4: Configuration dans sdk_relay" +echo "Configuration .conf.docker:" +sudo docker run --rm --network 4nk_node_btcnet lecoffre_node_sdk_relay cat /home/bitcoin/.conf.docker 2>/dev/null || echo "❌ Impossible de lire .conf.docker" + +echo "" +echo "🎯 Tous les tests sont passés ! sdk_relay peut maintenant démarrer." +echo "" +echo "💡 Pour démarrer sdk_relay:" +echo " sudo docker-compose up -d sdk_relay" diff --git a/sdk_relay/test_simple.sh b/sdk_relay/test_simple.sh new file mode 100755 index 00000000..874dc26d --- /dev/null +++ b/sdk_relay/test_simple.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Script de test simple pour sdk_relay +set -e + +echo "🔍 Test simple de sdk_relay..." +echo "" + +# Test 1: Vérifier que le fichier de configuration existe +echo "📡 Test 1: Fichier de configuration" +if [ -f ".conf.docker" ]; then + echo "✅ Fichier .conf.docker présent" +else + echo "❌ Fichier .conf.docker manquant" + exit 1 +fi + +# Test 2: Vérifier la résolution DNS depuis le réseau Docker +echo "" +echo "📡 Test 2: Résolution DNS depuis le réseau Docker" +if sudo docker run --rm --network 4nk_node_btcnet debian:bookworm-slim getent hosts bitcoin 2>/dev/null | grep -q "bitcoin"; then + echo "✅ Résolution DNS 'bitcoin' OK" +else + echo "❌ Résolution DNS 'bitcoin' échoue" +fi + +if sudo docker run --rm --network 4nk_node_btcnet debian:bookworm-slim getent hosts blindbit 2>/dev/null | grep -q "blindbit"; then + echo "✅ Résolution DNS 'blindbit' OK" +else + echo "❌ Résolution DNS 'blindbit' échoue" +fi + +# Test 3: Vérifier la connectivité depuis le réseau Docker +echo "" +echo "📡 Test 3: Connectivité depuis le réseau Docker" +if sudo docker run --rm --network 4nk_node_btcnet debian:bookworm-slim sh -c "nc -z bitcoin 18443" 2>/dev/null; then + echo "✅ Bitcoin Core accessible depuis le réseau Docker" +else + echo "❌ Bitcoin Core inaccessible depuis le réseau Docker" +fi + +if sudo docker run --rm --network 4nk_node_btcnet debian:bookworm-slim sh -c "nc -z blindbit 8000" 2>/dev/null; then + echo "✅ Blindbit accessible depuis le réseau Docker" +else + echo "❌ Blindbit inaccessible depuis le réseau Docker" +fi + +echo "" +echo "🎯 Résumé:" +echo " - Configuration: $(if [ -f ".conf.docker" ]; then echo "✅"; else echo "❌"; fi)" +echo " - DNS bitcoin: $(if sudo docker run --rm --network 4nk_node_btcnet debian:bookworm-slim getent hosts bitcoin 2>/dev/null | grep -q "bitcoin"; then echo "✅"; else echo "❌"; fi)" +echo " - DNS blindbit: $(if sudo docker run --rm --network 4nk_node_btcnet debian:bookworm-slim getent hosts blindbit 2>/dev/null | grep -q "blindbit"; then echo "✅"; else echo "❌"; fi)" +echo " - Connectivité Bitcoin: $(if sudo docker run --rm --network 4nk_node_btcnet debian:bookworm-slim sh -c "nc -z bitcoin 18443" 2>/dev/null; then echo "✅"; else echo "❌"; fi)" +echo " - Connectivité Blindbit: $(if sudo docker run --rm --network 4nk_node_btcnet debian:bookworm-slim sh -c "nc -z blindbit 8000" 2>/dev/null; then echo "✅"; else echo "❌"; fi)" diff --git a/tor/Dockerfile b/tor/Dockerfile new file mode 100644 index 00000000..10c3e2f7 --- /dev/null +++ b/tor/Dockerfile @@ -0,0 +1,18 @@ +# Tor proxy pour Bitcoin Core +FROM dperson/torproxy:latest + +# Exposer les ports Tor +EXPOSE 9050 9051 + +# Configuration Tor pour Bitcoin Core +ENV TOR_SERVICE_DIR=/var/lib/tor +ENV TOR_CONFIG_FILE=/etc/tor/torrc + +# Créer le répertoire de configuration +RUN mkdir -p /etc/tor + +# Configuration Tor de base +COPY torrc /etc/tor/torrc + +# Point d'entrée personnalisé +ENTRYPOINT ["/usr/sbin/tor", "-f", "/etc/tor/torrc"] diff --git a/tor/torrc b/tor/torrc new file mode 100644 index 00000000..13faa252 --- /dev/null +++ b/tor/torrc @@ -0,0 +1,20 @@ +# Configuration Tor pour Bitcoin Core +# Port SOCKS +SocksPort 9050 +SocksListenAddress 0.0.0.0 + +# Port de contrôle (optionnel) +ControlPort 9051 +ControlListenAddress 0.0.0.0 + +# Répertoire de données +DataDirectory /var/lib/tor + +# Logs +Log notice stdout + +# Autoriser les connexions depuis Bitcoin Core +SocksPolicy accept 0.0.0.0/0 + +# Configuration pour Bitcoin Core +AutomapHostsOnResolve 1