Accepter Bitcoin sans intermédiaire avec BTCPay Server
Guide pas-à-pas pour déployer BTCPay Server sur votre propre VPS. Zéro frais de transaction, zéro KYC, zéro dépendance à un tiers.
Pourquoi auto-héberger ses paiements Bitcoin ?
Les processeurs de paiement comme BitPay ou Coinbase Commerce prélèvent des frais, imposent un KYC et peuvent geler vos fonds à tout moment. BTCPay Server élimine ces intermédiaires : vous recevez les paiements directement dans votre wallet, sans aucun tiers.
- 0 % de frais — aucune commission prélevée, jamais
- Aucun KYC — pas de vérification d’identité requise
- Souveraineté totale — vos clés, vos règles, vos données
- Open source — audité, transparent, maintenu activement
Prérequis
Avant de commencer, vous aurez besoin de :
- Un VPS avec minimum 2 vCPU, 4 Go de RAM et 80 Go de stockage SSD (Debian 12 recommandé)
- Un nom de domaine pointé vers l’IP du serveur (ex. : pay.votredomaine.fr)
- Un enregistrement DNS de type A vers l’IPv4 du VPS
- Un accès root ou sudo au serveur
Si vous activez le support Monero ou Lightning Network, prévoyez 8 Go de RAM et 150 Go de stockage minimum pour la synchronisation complète de la blockchain.
Configuration DNS
Créez un enregistrement A chez votre registrar :
pay.votredomaine.fr. IN A 203.0.113.42
Vérifiez la propagation avant de continuer :
dig +short pay.votredomaine.fr
Installation avec Docker
BTCPay Server s’installe via un script officiel qui orchestre Docker Compose. Commencez par préparer le serveur :
sudo apt update && sudo apt upgrade -y sudo apt install -y curl git apt-transport-https \ ca-certificates gnupg lsb-release
Installer Docker Engine
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER newgrp docker
Cloner et lancer BTCPay Server
Le déploiement utilise les variables d’environnement pour la configuration. Adaptez le domaine et les options :
export BTCPAY_HOST="pay.votredomaine.fr" export NBITCOIN_NETWORK="mainnet" export BTCPAYGEN_CRYPTO1="btc" export BTCPAYGEN_REVERSEPROXY="nginx" export BTCPAYGEN_LIGHTNING="clightning" export BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage-s" cd /root git clone https://github.com/btcpayserver/btcpayserver-docker cd btcpayserver-docker . ./btcpay-setup.sh -i
Le script génère la configuration Docker Compose, télécharge les images et démarre les conteneurs. Le certificat TLS est provisionné automatiquement via Let’s Encrypt. La synchronisation initiale de la blockchain peut prendre 24 à 72 heures selon le matériel.
Vérifiez que les conteneurs tournent :
cd /root/btcpayserver-docker docker compose ps
Configurer un wallet Bitcoin
Une fois BTCPay accessible sur votre domaine, créez un compte administrateur puis un store. Dans les paramètres du store, section Wallets → Bitcoin, vous avez deux options :
- Hot wallet — BTCPay génère les clés sur le serveur. Pratique mais moins sécurisé.
- xpub import — Vous importez la clé publique étendue depuis un hardware wallet (Ledger, Trezor, ColdCard). Les clés privées ne quittent jamais l’appareil.
Pour un usage en production, importez toujours un xpub depuis un hardware wallet. BTCPay génère des adresses uniques pour chaque facture à partir de cette clé publique.
Ajouter le support Monero
Pour accepter Monero en plus de Bitcoin, ajoutez la variable et relancez le setup :
export BTCPAYGEN_CRYPTO2="xmr" cd /root/btcpayserver-docker . ./btcpay-setup.sh -i
Le démon Monero va synchroniser sa propre blockchain. Prévoyez 80 Go supplémentaires de stockage et une synchronisation de 12 à 48 heures. Dans l’interface BTCPay, configurez le wallet Monero via Wallets → Monero en important votre adresse de vue (view key).
Intégration WooCommerce
BTCPay fournit un plugin WordPress officiel. Installez-le depuis votre back-office WordPress :
- Allez dans Extensions → Ajouter et cherchez BTCPay for WooCommerce V2
- Activez le plugin et ouvrez ses paramètres
- Dans BTCPay Server, générez une paire d’API keys via Account → Manage Account → API Keys
- Collez l’URL du serveur et la clé API dans le plugin WooCommerce
- Activez le moyen de paiement dans WooCommerce → Paramètres → Paiements
Les factures BTCPay sont créées automatiquement à chaque commande. Le client scanne un QR code, paie, et le statut de la commande est mis à jour via webhook.
Service caché Tor
BTCPay peut exposer la page de paiement via un service .onion pour renforcer la confidentialité de vos clients. Activez Tor dans la configuration :
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="$BTCPAYGEN_ADDITIONAL_FRAGMENTS;opt-add-tor" cd /root/btcpayserver-docker . ./btcpay-setup.sh -i
Récupérez l’adresse .onion générée :
cat /var/lib/docker/volumes/generated_tor_servicesdir/_data/BTCPayServer/hostname
Vos clients peuvent désormais accéder à la page de paiement via Tor Browser sans révéler leur adresse IP.
Bonnes pratiques de sécurité
- Désactivez l’accès root SSH et utilisez des clés Ed25519 uniquement
- Activez UFW et n’ouvrez que les ports 22, 80 et 443
- Configurez Fail2ban pour protéger SSH et nginx
- Activez les mises à jour automatiques avec unattended-upgrades
- Utilisez un utilisateur non-root dédié pour BTCPay
- Restreignez l’inscription à votre instance BTCPay dans Server Settings → Policies
- Activez le 2FA sur votre compte administrateur BTCPay
# Firewall minimal sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
Sauvegardes
BTCPay inclut un script de sauvegarde intégré. Lancez-le manuellement ou via cron :
cd /root/btcpayserver-docker ./btcpay-backup.sh
Automatisez la sauvegarde quotidienne et l’envoi vers un stockage externe :
# /etc/cron.d/btcpay-backup 0 3 * * * root /root/btcpayserver-docker/btcpay-backup.sh \ && rsync -az /var/lib/docker/volumes/backup_datadir/ \ backup@storage.example.com:/backups/btcpay/
Testez régulièrement la restauration sur un environnement de test. Une sauvegarde non testée ne vaut rien.
Trop technique ? Je m’en occupe.
Déploiement BTCPay Server clé en main, configuré et sécurisé sur votre VPS.
Demander un devis gratuit