**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
10 KiB
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 n’accepter 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 n’accepter 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 n’accepter 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 n’accepter 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 n’accepter 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 :
- Écouter en IPv4 uniquement : pas d’écoute sur
[::]. En fixant*_HOSTà l’adresse IPv4 de la machine (ex.192.168.1.105pour la machine bitcoin), le service n’écoute que sur cette interface (IPv4). - Accepter les flux reçus du proxy uniquement : si
ALLOWED_SOURCE_IP=192.168.1.100est défini, le service rejette (403) toute requête dont la source (après normalisation IPv6-mapped → IPv4) n’est 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 :
- Variables du service systemd (priorité la plus haute)
- Fichier
.envdans le répertoire de l'API - Variables d'environnement système (
process.env) - 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
.envdans Git - Utiliser
.gitignorepour 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 :
- Mettre à jour le fichier
.env - Mettre à jour le service systemd si nécessaire
- Redémarrer le service :
sudo systemctl restart <service-name> - Vérifier les logs :
sudo journalctl -u <service-name> -f