ncantu 20d115a31c feat: Add APIs, dashboard, documentation and improve scripts
**Motivations:**
- Add API services for anchorage and faucet functionality
- Add dashboard interface for signet monitoring
- Improve documentation and maintenance guides
- Enhance existing scripts for better functionality

**Root causes:**
- Need for API services to interact with Bitcoin Signet
- Need for user-friendly dashboard interface
- Need for comprehensive documentation
- Scripts required improvements for better reliability

**Correctifs:**
- Updated Dockerfile with better configuration
- Improved gen-bitcoind-conf.sh and gen-signet-keys.sh scripts
- Enhanced mine.sh, miner, run.sh, and setup-signet.sh scripts
- Updated env.example with new configuration options

**Evolutions:**
- Added api-anchorage service with anchor functionality
- Added api-faucet service for testnet coin distribution
- Added signet-dashboard for monitoring and management
- Added comprehensive documentation in docs/ directory
- Added configure-nginx-proxy.sh for proxy configuration
- Added update-signet.sh for signet updates
- Added ETAT_SYSTEME.md and START_DASHBOARD_AND_FAUCET.md guides
- Added .bitcoin-version file for version tracking

**Pages affectées:**
- Dockerfile
- env.example
- gen-bitcoind-conf.sh
- gen-signet-keys.sh
- mine.sh
- miner
- run.sh
- setup-signet.sh
- api-anchorage/ (new)
- api-faucet/ (new)
- signet-dashboard/ (new)
- docs/ (new)
- configure-nginx-proxy.sh (new)
- update-signet.sh (new)
- ETAT_SYSTEME.md (new)
- START_DASHBOARD_AND_FAUCET.md (new)
- .bitcoin-version (new)
- .env (modified)
- mempool/ (added)
2026-01-24 02:40:25 +01:00

8.1 KiB

Guide de Déploiement - API d'Ancrage Bitcoin Signet

Auteur : Équipe 4NK Date : 2026-01-23 Version : 1.0

Vue d'Ensemble

Ce guide explique comment déployer l'API d'ancrage Bitcoin Signet sur le serveur de production (192.168.1.103) et la configurer pour être accessible via nginx sur le proxy (192.168.1.100) au domaine certificator.4nkweb.com.

Architecture

Internet
  ↓ HTTPS
certificator.4nkweb.com (DNS → 4nk.myftp.biz)
  ↓
Nginx Proxy (192.168.1.100:443)
  ↓ HTTP
API Anchor (192.168.1.103:3010)
  ↓ RPC
Bitcoin Signet Node (192.168.1.103:38332)

Prérequis

  • Serveur de production (192.168.1.103) accessible
  • Nginx configuré sur le proxy (192.168.1.100)
  • Nœud Bitcoin Signet fonctionnel sur 192.168.1.103:38332
  • Node.js >= 18.0.0 installé sur le serveur de production
  • Accès SSH au serveur de production

Déploiement sur le Serveur de Production

1. Préparation du Serveur

# Se connecter au serveur de production
ssh prod

# Vérifier Node.js
node --version  # Doit être >= 18.0.0

# Installer Node.js si nécessaire
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

2. Cloner et Installer l'API

# Créer le répertoire de déploiement
sudo mkdir -p /srv/4NK/certificator.4nkweb.com
sudo chown ncantu:ncantu /srv/4NK/certificator.4nkweb.com
cd /srv/4NK/certificator.4nkweb.com

# Cloner le dépôt (ou copier les fichiers)
# Si le code est dans un dépôt git :
# git clone <repository-url> .

# Ou copier les fichiers depuis votre machine locale
# scp -r api-anchorage/* ncantu@192.168.1.103:/srv/4NK/certificator.4nkweb.com/

3. Installation des Dépendances

cd /srv/4NK/certificator.4nkweb.com
npm install --production

4. Configuration

# Créer le fichier .env
cp .env.example .env
nano .env

Configuration recommandée pour la production :

# Bitcoin RPC Configuration
BITCOIN_RPC_HOST=localhost
BITCOIN_RPC_PORT=38332
BITCOIN_RPC_USER=bitcoin
BITCOIN_RPC_PASSWORD=bitcoin
BITCOIN_RPC_TIMEOUT=30000

# API Configuration
API_PORT=3010
API_HOST=0.0.0.0

# API Keys (séparées par des virgules)
# IMPORTANT: Générer des clés sécurisées pour la production
API_KEYS=prod-api-key-1,prod-api-key-2

# Logging
LOG_LEVEL=info

# Mining Configuration
MINING_ENABLED=true
MINING_FEE_RATE=0.00001

Sécurité :

  • Générer des clés API fortes (ex: openssl rand -hex 32)
  • Ne jamais commiter le fichier .env
  • Utiliser des mots de passe RPC différents de ceux par défaut en production

5. Test Local

# Tester que l'API démarre
npm start

# Dans un autre terminal, tester
curl http://localhost:3010/health

6. Déploiement avec PM2 (Recommandé)

# Installer PM2 globalement
sudo npm install -g pm2

# Démarrer l'API avec PM2
pm2 start src/server.js --name anchor-api

# Sauvegarder la configuration PM2
pm2 save

# Configurer PM2 pour démarrer au boot
pm2 startup
# Suivre les instructions affichées

7. Vérification

# Vérifier que l'API fonctionne
curl http://localhost:3010/health

# Vérifier les logs PM2
pm2 logs anchor-api

# Vérifier le statut
pm2 status

Configuration Nginx sur le Proxy

1. Se Connecter au Proxy

ssh proxy

2. Créer la Configuration Nginx

sudo nano /etc/nginx/sites-available/certificator.4nkweb.com

Contenu :

# API Anchor sur certificator.4nkweb.com
server {
    listen 443 ssl http2;
    server_name certificator.4nkweb.com;

    # Certificats SSL (Let's Encrypt)
    ssl_certificate /etc/letsencrypt/live/certificator.4nkweb.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/certificator.4nkweb.com/privkey.pem;

    # Configuration SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # Logs
    access_log /var/log/nginx/certificator.4nkweb.com.access.log;
    error_log /var/log/nginx/certificator.4nkweb.com.error.log;

    # Proxy vers l'API
    location / {
        proxy_pass http://192.168.1.103:3010;
        proxy_http_version 1.1;

        # Headers
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        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 $scheme;

        # Timeouts
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;

        # Cache
        proxy_cache_bypass $http_upgrade;
    }
}

# Redirection HTTP vers HTTPS
server {
    listen 80;
    server_name certificator.4nkweb.com;
    return 301 https://$server_name$request_uri;
}

3. Activer la Configuration

# Créer le lien symbolique
sudo ln -s /etc/nginx/sites-available/certificator.4nkweb.com /etc/nginx/sites-enabled/

# Tester la configuration
sudo nginx -t

# Recharger nginx
sudo systemctl reload nginx

4. Obtenir le Certificat SSL

# Obtenir le certificat Let's Encrypt
sudo certbot --nginx -d certificator.4nkweb.com

# Vérifier le renouvellement automatique
sudo certbot renew --dry-run

Vérification Post-Déploiement

1. Vérifier l'API Localement

# Sur le serveur de production
curl http://localhost:3010/health

2. Vérifier via le Proxy

# Depuis n'importe quelle machine
curl https://certificator.4nkweb.com/health

3. Tester l'Ancrage

# Utiliser le client de test
cd /srv/4NK/certificator.4nkweb.com
export API_KEY=prod-api-key-1
export API_URL=https://certificator.4nkweb.com
npm test

Maintenance

Redémarrage de l'API

# Via PM2
pm2 restart anchor-api

# Ou arrêter/démarrer
pm2 stop anchor-api
pm2 start anchor-api

Mise à Jour

# Arrêter l'API
pm2 stop anchor-api

# Mettre à jour le code
cd /srv/4NK/certificator.4nkweb.com
git pull  # ou copier les nouveaux fichiers

# Mettre à jour les dépendances si nécessaire
npm install --production

# Redémarrer
pm2 start anchor-api

Logs

# Voir les logs en temps réel
pm2 logs anchor-api

# Voir les logs nginx
sudo tail -f /var/log/nginx/certificator.4nkweb.com.access.log
sudo tail -f /var/log/nginx/certificator.4nkweb.com.error.log

Monitoring

# Statut PM2
pm2 status

# Informations détaillées
pm2 info anchor-api

# Monitoring en temps réel
pm2 monit

Dépannage

L'API ne répond pas

  1. Vérifier que l'API est démarrée :

    pm2 status
    
  2. Vérifier les logs :

    pm2 logs anchor-api --lines 50
    
  3. Vérifier le port :

    sudo netstat -tlnp | grep 3010
    

Erreur de connexion Bitcoin RPC

  1. Vérifier que le nœud Bitcoin est accessible :

    curl -u bitcoin:bitcoin http://localhost:38332
    
  2. Vérifier les variables d'environnement :

    grep BITCOIN_RPC .env
    

Erreur 502 Bad Gateway (Nginx)

  1. Vérifier que l'API est accessible depuis le proxy :

    # Depuis le proxy
    curl http://192.168.1.103:3010/health
    
  2. Vérifier les logs nginx :

    sudo tail -f /var/log/nginx/certificator.4nkweb.com.error.log
    
  3. Vérifier le firewall :

    # Sur le serveur de production
    sudo ufw status
    # Le port 3010 doit être ouvert pour le réseau interne
    

Sécurité

Recommandations

  1. Clés API :

    • Générer des clés fortes (32+ caractères aléatoires)
    • Rotater régulièrement
    • Ne jamais les exposer publiquement
  2. RPC Bitcoin :

    • Utiliser des credentials différents en production
    • Restreindre RPCALLOWIP dans bitcoin.conf
    • Utiliser rpcauth au lieu de rpcuser/rpcpassword
  3. HTTPS :

    • Toujours utiliser HTTPS en production
    • Renouveler automatiquement les certificats Let's Encrypt
  4. Firewall :

    • Ne pas exposer le port 3010 publiquement
    • Utiliser nginx comme reverse proxy uniquement
  5. Logs :

    • Ne pas logger les clés API
    • Surveiller les tentatives d'accès non autorisées

Dernière mise à jour : 2026-01-23