536 lines
11 KiB
Markdown
536 lines
11 KiB
Markdown
# 📦 Guide d'Installation - <PROJECT_NAME>
|
|
|
|
> Ce document est un modèle générique. Remplacez <PROJECT_NAME>, <ORG_NAME>, <REPO_SSH_URL>, <REPO_HTTPS_URL> et adaptez les sections à votre contexte (Gitea/GitHub/GitLab).
|
|
|
|
Guide complet pour installer et configurer l'infrastructure <PROJECT_NAME>.
|
|
|
|
## 📋 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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é)
|
|
|
|
```bash
|
|
# 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 à votre forge Git (Gitea/GitHub/GitLab) :**
|
|
1. Aller sur GitLab > Settings > SSH Keys
|
|
2. Coller la clé publique
|
|
3. Cliquer sur "Add key"
|
|
|
|
### 3. Clonage du Repository
|
|
|
|
```bash
|
|
# Cloner avec SSH (recommandé)
|
|
git clone <REPO_SSH_URL>
|
|
cd <PROJECT_DIR>
|
|
|
|
# Ou avec HTTPS (si SSH non configuré)
|
|
# git clone <REPO_HTTPS_URL>
|
|
# cd <PROJECT_DIR>
|
|
```
|
|
|
|
### 4. Vérification de l'Installation
|
|
|
|
```bash
|
|
# Vérifier Docker
|
|
docker --version
|
|
docker-compose --version
|
|
|
|
# Vérifier la connectivité à votre forge (si SSH)
|
|
ssh -T git@<REPO_HOST>
|
|
|
|
# Vérifier les permissions
|
|
ls -la
|
|
```
|
|
|
|
## 🔧 Configuration Initiale
|
|
|
|
### 1. Configuration des Variables d'Environnement
|
|
|
|
```bash
|
|
# Créer le fichier d'environnement
|
|
cat > .env << EOF
|
|
# Configuration projet
|
|
PROJECT_NAME=<PROJECT_NAME>
|
|
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
|
|
|
|
```bash
|
|
# Vérifier la configuration Bitcoin
|
|
cat bitcoin/bitcoin.conf
|
|
|
|
# Modifier si nécessaire
|
|
nano bitcoin/bitcoin.conf
|
|
```
|
|
|
|
**Configuration recommandée :**
|
|
```ini
|
|
# 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
|
|
|
|
```bash
|
|
# Vérifier la configuration Blindbit
|
|
cat blindbit/blindbit.toml
|
|
|
|
# Modifier si nécessaire
|
|
nano blindbit/blindbit.toml
|
|
```
|
|
|
|
**Configuration recommandée :**
|
|
```toml
|
|
# 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
|
|
|
|
```bash
|
|
# 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 :**
|
|
```ini
|
|
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
|
|
|
|
```bash
|
|
# Démarrer tous les services
|
|
./restart_4nk_node.sh
|
|
|
|
# Vérifier le statut
|
|
docker ps
|
|
```
|
|
|
|
### 2. Démarrage Séquentiel (Debug)
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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é
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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é
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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é
|
|
|
|
```bash
|
|
# Vérifier l'installation Docker
|
|
docker --version
|
|
|
|
# Si non installé, suivre les étapes d'installation ci-dessus
|
|
```
|
|
|
|
#### 2. Permissions Docker
|
|
|
|
```bash
|
|
# Vérifier les permissions
|
|
docker ps
|
|
|
|
# Si erreur de permission
|
|
sudo usermod -aG docker $USER
|
|
newgrp docker
|
|
```
|
|
|
|
#### 3. Ports Déjà Utilisés
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Statut des conteneurs
|
|
docker ps
|
|
|
|
# Utilisation des ressources
|
|
docker stats
|
|
|
|
# Espace disque
|
|
docker system df
|
|
```
|
|
|
|
### 2. Monitoring Avancé
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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 :**
|
|
1. Consulter le [Guide d'Utilisation](USAGE.md)
|
|
2. Configurer les [Nœuds Externes](EXTERNAL_NODES.md)
|
|
3. Tester la [Synchronisation](SYNCHRONIZATION.md)
|
|
4. Configurer le [Monitoring](PERFORMANCE.md)
|
|
|
|
---
|