10 KiB
10 KiB
📦 Guide d'Installation - 4NK Node
Guide complet pour installer et configurer l'infrastructure 4NK Node.
📋 Prérequis
Système
- OS : Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+)
- Architecture : x86_64
- RAM : 4 Go minimum, 8 Go recommandés
- Stockage : 20 Go minimum, 50 Go recommandés
- Réseau : Connexion Internet stable
Logiciels
- Docker : Version 20.10+
- Docker Compose : Version 2.0+
- Git : Version 2.25+
- Bash : Version 4.0+
🚀 Installation
1. Installation de Docker
Ubuntu/Debian
# Mettre à jour les paquets
sudo apt update
# Installer les dépendances
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
# Ajouter la clé GPG Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Ajouter le repository Docker
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installer Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Ajouter l'utilisateur au groupe docker
sudo usermod -aG docker $USER
# Démarrer Docker
sudo systemctl start docker
sudo systemctl enable docker
CentOS/RHEL
# Installer les dépendances
sudo yum install -y yum-utils
# Ajouter le repository Docker
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Installer Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Démarrer Docker
sudo systemctl start docker
sudo systemctl enable docker
# Ajouter l'utilisateur au groupe docker
sudo usermod -aG docker $USER
2. Configuration SSH (Recommandé)
# Générer une clé SSH
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk -C "4nk-automation"
# Ajouter à l'agent SSH
ssh-add ~/.ssh/id_ed25519_4nk
# Configurer Git pour utiliser la clé
git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_4nk"
# Afficher la clé publique pour GitLab
cat ~/.ssh/id_ed25519_4nk.pub
Ajouter la clé publique à GitLab :
- Aller sur GitLab > Settings > SSH Keys
- Coller la clé publique
- Cliquer sur "Add key"
3. Clonage du Repository
# Cloner avec SSH (recommandé)
git clone git@git.4nkweb.com:4nk/4NK_node.git
cd 4NK_node
# Ou avec HTTPS (si SSH non configuré)
# git clone https://git.4nkweb.com/4nk/4NK_node.git
# cd 4NK_node
4. Vérification de l'Installation
# Vérifier Docker
docker --version
docker-compose --version
# Vérifier la connectivité GitLab
ssh -T git@git.4nkweb.com
# Vérifier les permissions
ls -la
🔧 Configuration Initiale
1. Configuration des Variables d'Environnement
# Créer le fichier d'environnement
cat > .env << EOF
# Configuration 4NK Node
PROJECT_NAME=4NK Node
NETWORK_NAME=4nk_node_btcnet
# Logs
RUST_LOG=debug,bitcoincore_rpc=trace
# Bitcoin
BITCOIN_COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie
# Synchronisation
ENABLE_SYNC_TEST=1
# Ports
TOR_PORTS=9050:9050,9051:9051
BITCOIN_PORTS=38333:38333,18443:18443,29000:29000
BLINDBIT_PORTS=8000:8000
RELAY_1_PORTS=8090:8090,8091:8091
RELAY_2_PORTS=8092:8090,8093:8091
RELAY_3_PORTS=8094:8090,8095:8091
EOF
2. Configuration Bitcoin Core
# Vérifier la configuration Bitcoin
cat bitcoin/bitcoin.conf
# Modifier si nécessaire
nano bitcoin/bitcoin.conf
Configuration recommandée :
# Configuration Bitcoin Core Signet
signet=1
rpcuser=bitcoin
rpcpassword=your_secure_password
rpcbind=0.0.0.0
rpcallowip=172.19.0.0/16
zmqpubrawblock=tcp://0.0.0.0:29000
zmqpubrawtx=tcp://0.0.0.0:29000
txindex=1
server=1
listen=1
3. Configuration Blindbit
# Vérifier la configuration Blindbit
cat blindbit/blindbit.toml
# Modifier si nécessaire
nano blindbit/blindbit.toml
Configuration recommandée :
# Configuration Blindbit
host = "0.0.0.0:8000"
chain = "signet"
rpc_endpoint = "http://bitcoin:18443"
cookie_path = "/home/bitcoin/.bitcoin/signet/.cookie"
sync_start_height = 1
max_parallel_tweak_computations = 4
max_parallel_requests = 4
4. Configuration des Relais
# Vérifier les configurations des relais
ls -la sdk_relay/.conf.docker.*
# Modifier si nécessaire
nano sdk_relay/.conf.docker.relay1
nano sdk_relay/.conf.docker.relay2
nano sdk_relay/.conf.docker.relay3
Configuration recommandée pour chaque relay :
core_url=http://bitcoin:18443
core_wallet=relay_wallet
ws_url=0.0.0.0:8090
wallet_name=relay_wallet.json
network=signet
blindbit_url=http://blindbit:8000
zmq_url=tcp://bitcoin:29000
data_dir=.4nk
cookie_path=/home/bitcoin/.4nk/bitcoin.cookie
dev_mode=true
standalone=false
relay_id=relay-1 # Changer pour chaque relay
🚀 Démarrage
1. Démarrage Complet
# Démarrer tous les services
./restart_4nk_node.sh
# Vérifier le statut
docker ps
2. Démarrage Séquentiel (Debug)
# Démarrer Tor
./restart_4nk_node.sh -t
# Démarrer Bitcoin Core
./restart_4nk_node.sh -b
# Attendre la synchronisation Bitcoin (10-30 minutes)
echo "Attendre la synchronisation Bitcoin..."
docker logs bitcoin-signet | grep "progress"
# Démarrer Blindbit
./restart_4nk_node.sh -l
# Démarrer les relais
./restart_4nk_node.sh -r
3. Vérification du Démarrage
# Vérifier tous les services
docker ps
# Vérifier les logs
docker-compose logs --tail=50
# Vérifier la connectivité
./test_final_sync.sh
🧪 Tests Post-Installation
1. Tests de Connectivité
# Test de base
./test_final_sync.sh
# Test de synchronisation
./test_sync_logs.sh
# Test des messages WebSocket
python3 test_websocket_messages.py
2. Tests de Performance
# Vérifier l'utilisation des ressources
docker stats
# Test de charge
python3 test_websocket_messages.py --load-test
# Monitoring de la synchronisation
./monitor_sync.sh
3. Tests de Sécurité
# Vérifier les ports exposés
netstat -tlnp | grep -E "(18443|8000|9050|8090)"
# Vérifier les permissions
ls -la sdk_relay/.conf*
ls -la bitcoin/bitcoin.conf
ls -la blindbit/blindbit.toml
🔧 Configuration Avancée
1. Configuration Réseau
# Créer un réseau Docker personnalisé
docker network create 4nk-network --subnet=172.20.0.0/16
# Modifier docker-compose.yml
sed -i 's/4nk_default/4nk-network/g' docker-compose.yml
2. Configuration SSL/TLS
# Générer un certificat auto-signé
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
# Configurer nginx comme proxy SSL
cat > nginx.conf << EOF
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate cert.pem;
ssl_certificate_key key.pem;
location / {
proxy_pass http://localhost:8090;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host \$host;
}
}
EOF
3. Configuration de Pare-feu
# Autoriser seulement les ports nécessaires
sudo ufw allow 18443/tcp # Bitcoin Core RPC
sudo ufw allow 8090/tcp # sdk_relay WebSocket
sudo ufw allow 8000/tcp # Blindbit API
sudo ufw enable
# Vérifier les règles
sudo ufw status numbered
🚨 Dépannage
Problèmes Courants
1. Docker Non Installé
# Vérifier l'installation Docker
docker --version
# Si non installé, suivre les étapes d'installation ci-dessus
2. Permissions Docker
# Vérifier les permissions
docker ps
# Si erreur de permission
sudo usermod -aG docker $USER
newgrp docker
3. Ports Déjà Utilisés
# Vérifier les ports utilisés
sudo netstat -tlnp | grep -E "(18443|8000|9050|8090)"
# Arrêter les services conflictuels
sudo docker-compose down
4. Problèmes de Synchronisation Bitcoin
# Vérifier les logs Bitcoin
docker logs bitcoin-signet
# Vérifier l'espace disque
df -h
# Redémarrer Bitcoin Core
docker restart bitcoin-signet
Logs Utiles
# Logs de tous les services
docker-compose logs -f
# Logs d'un service spécifique
docker logs bitcoin-signet
docker logs blindbit-oracle
docker logs sdk_relay_1
# Logs avec timestamps
docker-compose logs -t
# Logs depuis une date
docker-compose logs --since="2024-01-01T00:00:00"
📊 Monitoring
1. Monitoring de Base
# Statut des conteneurs
docker ps
# Utilisation des ressources
docker stats
# Espace disque
docker system df
2. Monitoring Avancé
# Surveillance de la synchronisation
./monitor_sync.sh
# Monitoring en continu
while true; do
echo "=== $(date) ==="
docker stats --no-stream | grep -E "(sdk_relay|bitcoin)"
sleep 30
done
3. Alertes
# Script d'alerte simple
cat > monitor_alert.sh << 'EOF'
#!/bin/bash
if ! docker ps | grep -q "bitcoin-signet.*Up"; then
echo "ALERTE: Bitcoin Core n'est pas en cours d'exécution!"
# Ajouter notification (email, Slack, etc.)
fi
EOF
chmod +x monitor_alert.sh
🔄 Mise à Jour
1. Mise à Jour de l'Infrastructure
# Sauvegarder la configuration
cp -r . ../4NK_node_backup_$(date +%Y%m%d)
# Mettre à jour le code
git pull origin main
# Redémarrer les services
./restart_4nk_node.sh
2. Mise à Jour de Docker
# Mettre à jour Docker
sudo apt update
sudo apt upgrade docker-ce docker-ce-cli containerd.io
# Redémarrer Docker
sudo systemctl restart docker
3. Mise à Jour des Images
# Reconstruire les images
docker-compose build --no-cache
# Redémarrer les services
docker-compose up -d
📝 Checklist d'Installation
- Docker installé et configuré
- Docker Compose installé
- Clé SSH configurée pour GitLab
- Repository cloné
- Variables d'environnement configurées
- Configurations Bitcoin Core vérifiées
- Configurations Blindbit vérifiées
- Configurations des relais vérifiées
- Services démarrés avec succès
- Tests de connectivité passés
- Tests de synchronisation passés
- Monitoring configuré
- Pare-feu configuré (optionnel)
- SSL/TLS configuré (optionnel)
🎉 Installation Terminée
Félicitations ! L'infrastructure 4NK Node est maintenant installée et configurée.
Prochaines étapes :
- Consulter le Guide d'Utilisation
- Configurer les Nœuds Externes
- Tester la Synchronisation
- Configurer le Monitoring