anchorage_layer_simple/docs/ENVIRONMENT.md
ncantu 937646cc45 Daily backup to git cron, backup/restore scripts, docs
**Motivations:**
- Export Signet and mining wallet backups to git with only 2 versions kept
- Document and add backup/restore scripts for signet and mining wallet

**Correctifs:**
- Backup-to-git uses SSH URL for passwordless cron; copy timestamped files only; prune to 2 versions; remove *-latest from backup repo

**Evolutions:**
- data/backup-to-git-cron.sh: daily export to git.4nkweb.com/4nk/backup
- save-signet-datadir-backup.sh, restore-signet-from-backup.sh, export-mining-wallet.sh, import-mining-wallet.sh
- features/backup-to-git-daily-cron.md, docs/MAINTENANCE.md backup section
- .gitignore: data/backup-to-git.log

**Pages affectées:**
- .gitignore, data/backup-to-git-cron.sh, docs/MAINTENANCE.md, features/backup-to-git-daily-cron.md
- save-signet-datadir-backup.sh, restore-signet-from-backup.sh, export-mining-wallet.sh, import-mining-wallet.sh
- Plus autres fichiers modifiés ou non suivis déjà présents dans le working tree
2026-02-04 03:07:57 +01:00

10 KiB
Raw Blame History

Fichiers d'Environnement - Configuration

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

Vue d'Ensemble

Ce document décrit tous les fichiers d'environnement utilisés dans le projet et leurs variables.

Fichiers d'Environnement

1. Fichier .env à la racine du projet

Emplacement : /home/ncantu/Bureau/code/bitcoin/.env

Utilisé par :

  • Docker (Bitcoin Core)
  • Scripts de configuration
  • Génération de bitcoin.conf

Variables principales :

# Mining Configuration
BLOCKPRODUCTIONDELAY=600          # Délai entre blocs (secondes)
MINERENABLED=1                     # Activer le mining (1 = oui, 0 = non)
NBITS=1e0377ae                     # Difficulté minimale (hex)
PRIVKEY=<clé_privée>               # Clé privée du signer (générée si vide)
MINETO=<adresse>                   # Adresse de mining (optionnel)
SIGNETCHALLENGE=<challenge>        # Challenge du signet

# RPC Configuration
RPCUSER=bitcoin                    # Utilisateur RPC
RPCPASSWORD=bitcoin                 # Mot de passe RPC

# User Agent
UACOMMENT=CustomSignet             # Commentaire User Agent

# ZMQ Configuration
ZMQPUBRAWBLOCK=tcp://0.0.0.0:28332
ZMQPUBRAWTX=tcp://0.0.0.0:28333
ZMQPUBHASHBLOCK=tcp://0.0.0.0:28334

# Network Configuration
RPCBIND=0.0.0.0:38332              # Port RPC
RPCALLOWIP=0.0.0.0/0               # IPs autorisées pour RPC
WHITELIST=0.0.0.0/0                # IPs whitelistées
ADDNODE=<ip>                       # Nœuds à ajouter (optionnel)
EXTERNAL_IP=<ip>                   # IP externe (optionnel)

Fichier d'exemple : env.example

2. Fichier .env de l'API Anchorage

Emplacement : /home/ncantu/Bureau/code/bitcoin/api-anchorage/.env

Variables :

# 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                      # Port fixe (défini aussi dans systemd)
API_HOST=0.0.0.0

# API Keys (séparées par des virgules)
API_KEYS=your-api-key-here,another-api-key

# Logging
LOG_LEVEL=info                     # error, warn, info, debug
NODE_ENV=production

Note : Le port est fixe (3010) et défini aussi dans le service systemd. En production, API_HOST=192.168.1.105 (machine bitcoin) et ALLOWED_SOURCE_IP=192.168.1.100 pour naccepter que le proxy en IPv4.

3. Fichier .env de l'API Faucet

Emplacement : /home/ncantu/Bureau/code/bitcoin/api-faucet/.env

Variables :

# 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
FAUCET_API_PORT=3021               # Port fixe (défini aussi dans systemd)
FAUCET_API_HOST=0.0.0.0

# API Keys (séparées par des virgules)
API_KEYS=your-api-key-here,another-api-key

# Faucet Configuration
FAUCET_AMOUNT=50000                # Montant en sats (0.0005 BTC)
FAUCET_WALLET_NAME=faucet          # Nom du wallet (optionnel)

# Logging
LOG_LEVEL=info
NODE_ENV=production

Note : Le port est fixe (3021) et défini aussi dans le service systemd. En production, FAUCET_API_HOST=192.168.1.103 (machine prod) et ALLOWED_SOURCE_IP=192.168.1.100 pour naccepter que le proxy en IPv4.

4. Fichier .env de l'API Filigrane

Emplacement : /home/ncantu/Bureau/code/bitcoin/api-filigrane/.env

Variables :

# API Configuration
WATERMARK_API_PORT=3022            # Port fixe (défini aussi dans systemd)
WATERMARK_API_HOST=0.0.0.0

# API Anchorage (pour ancrer les documents)
ANCHOR_API_URL=http://localhost:3010
# Ou en production :
# ANCHOR_API_URL=https://certificator.4nkweb.com

# API Blockchain (pour récupérer les infos de bloc)
BLOCKCHAIN_API_URL=http://localhost:3020
# Ou en production :
# BLOCKCHAIN_API_URL=https://dashboard.certificator.4nkweb.com

# API ClamAV (pour scanner les fichiers)
CLAMAV_API_URL=http://localhost:3023
# Ou en production :
# CLAMAV_API_URL=https://antivir.certificator.4nkweb.com

# Logging
LOG_LEVEL=info
NODE_ENV=production

Note : Le port est fixe (3022) et défini aussi dans le service systemd. En production, WATERMARK_API_HOST=192.168.1.103 (machine prod) et ALLOWED_SOURCE_IP=192.168.1.100 pour naccepter que le proxy en IPv4.

5. Fichier .env de l'API ClamAV

Emplacement : /home/ncantu/Bureau/code/bitcoin/api-clamav/.env

Variables :

# API Configuration
CLAMAV_API_PORT=3023               # Port fixe (défini dans le code)
CLAMAV_API_HOST=0.0.0.0

# ClamAV Daemon Configuration
CLAMAV_HOST=localhost              # Host du daemon ClamAV
CLAMAV_PORT=3310                   # Port du daemon ClamAV
CLAMAV_TIMEOUT=30000                # Timeout en millisecondes

# Logging
LOG_LEVEL=info
NODE_ENV=production

Note : Le port est fixe (3023) et défini directement dans le code (src/server.js). En production, CLAMAV_API_HOST=192.168.1.103 (machine prod) et ALLOWED_SOURCE_IP=192.168.1.100 pour naccepter que le proxy en IPv4.

6. Fichier .env du Dashboard

Emplacement : /home/ncantu/Bureau/code/bitcoin/signet-dashboard/.env

Variables :

# Dashboard Configuration
DASHBOARD_PORT=3020                # Port fixe (défini aussi dans systemd)
DASHBOARD_HOST=0.0.0.0

# Bitcoin RPC Configuration (sur la machine bitcoin : 127.0.0.1 = même nœud que Mempool)
BITCOIN_RPC_HOST=127.0.0.1
BITCOIN_RPC_PORT=38332
BITCOIN_RPC_USER=bitcoin
BITCOIN_RPC_PASSWORD=bitcoin
BITCOIN_RPC_TIMEOUT=30000

# API Anchorage Configuration
ANCHOR_API_URL=http://localhost:3010
# Ou en production :
# ANCHOR_API_URL=https://certificator.4nkweb.com
ANCHOR_API_KEY=your-api-key-here

# API Faucet Configuration
FAUCET_API_URL=http://localhost:3021
# Ou en production :
# FAUCET_API_URL=https://faucet.certificator.4nkweb.com

# API Filigrane Configuration
WATERMARK_API_URL=http://localhost:3022
# Ou en production :
# WATERMARK_API_URL=https://watermark.certificator.4nkweb.com

# Logging
LOG_LEVEL=info
NODE_ENV=production

Note : Le port est fixe (3020) et défini aussi dans le service systemd. En production, DASHBOARD_HOST=192.168.1.105 (machine bitcoin) et ALLOWED_SOURCE_IP=192.168.1.100 pour naccepter que le proxy en IPv4.

Variables d'Environnement dans les Services Systemd

Les services systemd définissent aussi des variables d'environnement pour garantir que les ports sont fixes :

API Anchorage (api-anchorage/anchorage-api.service)

Environment=API_PORT=3010
Environment=API_HOST=192.168.1.105
Environment=ALLOWED_SOURCE_IP=192.168.1.100

API Faucet (api-faucet/faucet-api.service)

Environment=FAUCET_API_PORT=3021
Environment=FAUCET_API_HOST=192.168.1.103
Environment=ALLOWED_SOURCE_IP=192.168.1.100

API Filigrane (api-filigrane/filigrane-api.service)

Environment=WATERMARK_API_PORT=3022
Environment=WATERMARK_API_HOST=192.168.1.103
Environment=ALLOWED_SOURCE_IP=192.168.1.100

API ClamAV (api-clamav/clamav-api.service)

Environment=CLAMAV_API_PORT=3023
Environment=CLAMAV_API_HOST=192.168.1.103
Environment=ALLOWED_SOURCE_IP=192.168.1.100
Environment=CLAMAV_HOST=localhost
Environment=CLAMAV_PORT=3310

Dashboard (signet-dashboard/signet-dashboard.service)

Environment=DASHBOARD_PORT=3020
Environment=DASHBOARD_HOST=192.168.1.105
Environment=ALLOWED_SOURCE_IP=192.168.1.100

Écoute réseau : IPv4 uniquement, flux reçus du proxy (192.168.1.100)

Les services backend doivent :

  1. Écouter en IPv4 uniquement : pas découte sur [::]. En fixant *_HOST à ladresse IPv4 de la machine (ex. 192.168.1.105 pour la machine bitcoin), le service nécoute que sur cette interface (IPv4).
  2. Accepter les flux reçus du proxy uniquement : si ALLOWED_SOURCE_IP=192.168.1.100 est défini, le service rejette (403) toute requête dont la source (après normalisation IPv6-mapped → IPv4) nest pas 192.168.1.100.
  • Machine bitcoin (192.168.1.105) : DASHBOARD_HOST=192.168.1.105, API_HOST=192.168.1.105 (anchorage), ALLOWED_SOURCE_IP=192.168.1.100.
  • Machine prod (192.168.1.103) : FAUCET_API_HOST=192.168.1.103, WATERMARK_API_HOST=192.168.1.103, CLAMAV_API_HOST=192.168.1.103, ALLOWED_SOURCE_IP=192.168.1.100.

Voir features/services-ecoute-ipv4-proxy.md pour le détail.

Ordre de Priorité

Les variables d'environnement sont chargées dans cet ordre :

  1. Variables du service systemd (priorité la plus haute)
  2. Fichier .env dans le répertoire de l'API
  3. Variables d'environnement système (process.env)
  4. Valeurs par défaut dans le code

Création des Fichiers .env

Depuis les exemples

# À la racine du projet
cp env.example .env

# Pour chaque API
cd api-anchorage && cp .env.example .env
cd ../api-faucet && cp .env.example .env
cd ../api-filigrane && cp .env.example .env
cd ../api-clamav && cp .env.example .env
cd ../signet-dashboard && cp .env.example .env

Variables Sensibles

⚠️ Important : Les fichiers .env contiennent des informations sensibles :

  • Clés API
  • Mots de passe RPC
  • Clés privées Bitcoin

Sécurité :

  • Ne jamais commiter les fichiers .env dans Git
  • Utiliser .gitignore pour exclure les fichiers .env
  • Changer les valeurs par défaut en production
  • Utiliser des clés API fortes et uniques

Vérification des Variables

Vérifier qu'un fichier .env est chargé

# Dans le code Node.js, les variables sont loggées au démarrage
# Vérifier les logs du service
sudo journalctl -u anchorage-api | grep ENV

Tester les variables

# Charger et afficher les variables (sans exposer les secrets)
cd api-anchorage
node -e "require('dotenv').config(); console.log('API_PORT:', process.env.API_PORT);"

Migration et Mise à Jour

Lors de la mise à jour des variables :

  1. Mettre à jour le fichier .env
  2. Mettre à jour le service systemd si nécessaire
  3. Redémarrer le service : sudo systemctl restart <service-name>
  4. Vérifier les logs : sudo journalctl -u <service-name> -f

Références