TUTORIELS
Comment encaisser vous-même des paiements Bitcoin avec BTCPay Server
Tout prestataire de paiement hébergé est une entreprise qui peut geler vos fonds. Ce n'est pas une hypothèse d'école pour quiconque encaisse du Bitcoin : les grands prestataires ont ajouté, il y a des années déjà, une vérification d'identité, des seuils de versement et des conditions de règlement, et un marchand qui échoue à l'un de ces contrôles l'apprend généralement alors que l'argent est déjà en transit. BTCPay Server existe précisément pour cette raison. C'est un logiciel libre et open source qui transforme un serveur que vous contrôlez en votre propre caisse — factures, écran de caisse, plugins de boutique, Lightning — sans aucune entreprise au milieu, sans pourcentage prélevé et sans compte à perdre. L'installer tient véritablement en un seul après-midi. Ce qui détermine si le résultat est bon, c'est la machine qui tourne dessous, et la poignée de détails qu'une installation par défaut laisse discrètement pointer vers vous.
Ce que BTCPay Server remplace réellement
Un prestataire hébergé se place entre votre client et votre portefeuille. Il génère l'adresse, surveille la chaîne, convertit le montant, détient les fonds pendant un certain temps, puis finit par vous les reverser. Chacune de ces étapes est une occasion pour lui d'apprendre quelque chose sur vous, et un point où il peut refuser. BTCPay fait le même travail sur du matériel que vous louez, et la différence dans ce qu'il sait est totale.
- Les paiements arrivent directement dans votre propre portefeuille. Vous donnez à BTCPay une clé publique étendue, il en dérive une nouvelle adresse par facture et la surveille — il ne détient jamais de clé privée pour les paiements on-chain et ne peut déplacer le moindre satoshi.
- Il n'y a ni frais ni compte. Le logiciel est open source, vous le faites tourner vous-même, et il n'y a rien à demander ni rien dont on puisse vous suspendre.
- Il gère les parties fastidieuses à construire soi-même : l'expiration des factures, la conversion de taux en direct, les paiements insuffisants et excédentaires, les paiements partiels, les remboursements et un reçu que le client peut vérifier de manière indépendante.
- Il fournit les interfaces dont la plupart des gens ont besoin — un écran de caisse, des boutons de paiement, une page de financement participatif, des plugins pour les plateformes e-commerce habituelles — et une API complète si vous l'intégrez à votre propre logiciel.
- Lightning est inclus dans le même déploiement si vous le souhaitez, et c'est ce qui rend viables les paiements de quelques dollars à peine.
La limite mérite d'être posée clairement. BTCPay ne convertit pas le Bitcoin dans votre monnaie locale, et il ne supprime ni l'exchange ni la banque si c'est par là que l'argent doit finalement passer. Ce qu'il supprime, c'est le prestataire — l'intermédiaire qui prenait une commission, détenait vos fonds entre-temps et exigeait votre identité pour le faire. Ce que vous récupérez a la même forme qu'un site web que vous hébergez vous-même : plus de contrôle, et le travail qui va avec.
Vous devenez le prestataire de paiement
Ce travail est le coût honnête de l'auto-hébergement, et il vaut bien mieux le comprendre avant l'installation qu'après. Personne ne surveille votre disponibilité, personne ne restaure votre sauvegarde, et personne ne décroche au bout d'une ligne de support au moment où un client insiste avoir payé alors que vous ne voyez rien venir.
- La disponibilité vous appartient. Une facture ne peut pas être créée pendant que le serveur est hors ligne, donc une caisse qui doit toujours fonctionner a besoin d'une machine que quelqu'un surveille réellement.
- Les sauvegardes vous appartiennent. Perdre le serveur est surmontable ; perdre le descripteur du portefeuille ou l'état des canaux Lightning ne l'est pas.
- La garde des clés se scinde en deux. Les fonds on-chain reposent dans un portefeuille que BTCPay se contente de surveiller, ce qui est l'arrangement sûr. Les fonds Lightning reposent dans un portefeuille chaud sur le serveur lui-même, ce qui ne l'est pas — considérez ce solde comme une trésorerie de fonctionnement, jamais comme de l'épargne.
- Les litiges n'ont pas d'arbitre. Il n'y a pas de rétrofacturations, ce qui est très largement le but recherché, mais cela signifie aussi que chaque remboursement est une décision que vous prenez et une transaction que vous envoyez.
- Les mises à jour vous appartiennent. Sous l'interface conviviale se trouve une pile de conteneurs contenant un nœud Bitcoin, qui exige la même discipline de maintenance que tout ce que vous laissez tourner sur une IP publique.
Rien de tout cela n'est lourd. Ce sont quelques minutes par mois une fois que tout tourne, plus un après-midi appliqué au démarrage. Ce n'est simplement pas nul, et les frais d'un prestataire de paiement achetaient en partie exactement cela.
Dimensionner la machine : le nœud en dessous décide de tout
BTCPay lui-même est une application légère. Le nœud Bitcoin contre lequel il tourne ne l'est pas, et presque toutes les erreurs de dimensionnement ici viennent du fait de budgétiser pour l'application web plutôt que pour la chaîne en dessous. Un déploiement standard fait tourner Bitcoin Core, un indexeur qui suit vos portefeuilles, une base de données, un reverse proxy et l'application — et c'est Core qui réclame le disque, la mémoire et la patience.
- Le stockage est la décision qui détermine votre offre. Une chaîne non élaguée dépasse déjà 750 GB aujourd'hui et croît d'environ 7 GB par mois. Le déploiement propose à la place des préréglages d'économie de stockage qui plafonnent les données de blocs à environ 100, 50 ou 25 GB, et chacun d'eux reste un véritable nœud complet qui vérifie chaque règle par lui-même.
- L'élagage ne raccourcit pas la première synchronisation. Core télécharge et vérifie chaque bloc depuis le bloc genesis de toute façon ; l'élagage décide seulement ce qu'il conserve ensuite.
- La mémoire est ce qui détermine la vitesse de synchronisation. 4 GB suffisent à le faire tourner, 8 GB synchronisent nettement plus vite et laissent de la place pour Lightning et une base de données qui ne se bat pas avec le nœud pour le cache.
- Le NVMe n'est pas optionnel. La synchronisation initiale est dominée par les lectures et écritures aléatoires sur la base UTXO, si bien que le même travail sur un disque lent prend des jours plutôt que des heures.
- La bande passante n'a rien de particulier une fois synchronisé, mais la première synchronisation télécharge la chaîne dans son intégralité. Un plan facturé au volume n'est pas fait pour ça.
En pratique, cela retombe sur le VPS-8 à $13.99/mo — 4 vCPU EPYC, 8 GB DDR5 ECC et 120 GB de NVMe Gen4 — comme choix par défaut sensé pour un nœud élagué avec Lightning, avec le VPS-16 à $26.99/mo si vous préférez ne plus jamais penser au disque. Chaque palier VPS embarque du NVMe Gen4 en RAID-10 et un transfert illimité, si bien que la capacité est la seule vraie variable. Si vous voulez la chaîne non élaguée — pour rescanner un vieux portefeuille, ou pour faire tourner un serveur Electrum à côté de la boutique — oubliez entièrement la gamme VPS : un serveur dédié à partir de $64/mo avec 2 × 1 TB de NVMe est à la fois moins cher et bien plus spacieux que le plus grand VPS, et l'écart ne fera que se creuser avec le temps. Les compromis sont les mêmes que ceux couverts dans faire tourner un nœud Bitcoin complet, car c'est précisément ce que vous faites ici, avec une caisse greffée par-dessus.
Étape par étape : d'un VPS tout neuf à une caisse opérationnelle
- 01Déployez le VPS et durcissez-le d'abordUne machine Debian ou Ubuntu, une authentification SSH par clé uniquement, un pare-feu qui refuse tout par défaut — avant que quoi que ce soit de précieux ne s'y trouve. La version ordonnée de cette checklist fait l'objet de son propre guide.
- 02Pointez un domaine vers le serveur et ouvrez les ports 80 et 443BTCPay émet son propre certificat au premier démarrage, ce qui ne fonctionne que si le nom d'hôte pointe déjà vers la machine et que les deux ports sont joignables. Faire cela dans le mauvais ordre est de loin la cause la plus fréquente d'installation ratée.
- 03Clonez le déploiement Docker officielLe projet fournit une configuration de conteneurs aux choix assumés. Utilisez-la plutôt que d'assembler les pièces à la main — c'est elle qui sert de référence pour tester le chemin de mise à niveau.
- 04Décidez de vos options avant le premier lancementLe réseau, le nom d'hôte, l'implémentation Lightning et le préréglage de stockage sont des variables d'environnement lues une seule fois à l'installation. Changer le niveau d'élagage par la suite n'est pas gratuit, décidez donc maintenant.
- 05Lancez le script d'installation et laissez-le synchroniserTout démarre dans des conteneurs et Bitcoin Core commence son téléchargement initial de la chaîne. C'est la partie longue — plusieurs heures sur du NVMe — et la seule étape que vous ne pouvez pas précipiter.
- 06Enregistrez le compte admin immédiatementLe premier compte à s'inscrire devient administrateur. Faites-le dès que l'interface répond, pas le lendemain matin.
- 07Rattachez un portefeuille à votre boutiqueCréez une boutique, puis connectez un portefeuille en important une clé publique étendue depuis un portefeuille matériel ou un compte dédié de votre propre logiciel. BTCPay surveille les adresses ; il ne signe jamais rien.
- 08Testez avec un vrai paiement, puis connectez l'interfaceEnvoyez-vous un petit montant et vérifiez que la facture est réglée. Ce n'est qu'ensuite que vous connectez l'écran de caisse, le plugin de la boutique ou l'API que votre site appellera réellement.
Lightning : ce que ça vaut, et ce que ça coûte réellement
Les paiements on-chain fonctionnent partout et coûtent ce que coûte la mempool ce jour-là, ce qui rend tout ce qui est sous quelques dollars maladroit, voire absurde. Lightning corrige cela, et BTCPay fait tourner un nœud pour vous dans le même déploiement. Pour les paiements petits ou fréquents, c'est la bonne réponse. C'est aussi un engagement opérationnel d'une autre nature qu'un nœud Bitcoin, et les différences méritent d'être connues avant de l'activer.
- Il vous faut de la liquidité entrante avant de pouvoir être payé. Ouvrir votre propre canal vous donne une capacité à dépenser, pas à recevoir. Tant que personne n'ouvre de canal vers vous ou que vous n'acquérez pas de capacité entrante, votre nœud ne peut rien accepter du tout.
- Le solde est chaud par conception. Les fonds des canaux vivent dans un portefeuille sur le serveur, en ligne parce qu'ils doivent l'être. Gardez-y une trésorerie de fonctionnement et transférez le reste on-chain.
- L'état des canaux ne se sauvegarde pas en copiant des fichiers. Restaurer un ancien instantané d'un nœud Lightning peut vous coûter les canaux qu'il décrit. Utilisez le mécanisme de sauvegarde propre à l'implémentation, et comprenez ce qu'il restaure réellement.
- Les temps d'arrêt coûtent plus cher ici qu'on-chain. Un nœud hors ligne ne peut ni acheminer ni recevoir, et un état périmé qui revient en ligne peut être pénalisé.
- Les canaux ont un coût on-chain aux deux extrémités. Ouvrir et fermer sont des transactions, donc l'habitude de multiplier les petits canaux coûte cher discrètement.
- Votre nœud est visible si vous le laissez l'être. Un nœud annoncé publiquement diffuse son alias et son adresse réseau à tout le monde, ce qui place votre serveur sur une carte que n'importe qui peut consulter.
Une voie médiane raisonnable consiste à utiliser Lightning avec des canaux non annoncés — vous pouvez être payé sans publier votre infrastructure — et l'on-chain par défaut pour tout montant important. Si vous voulez que le nœud soit joignable sans être identifiable, faites-le tourner via Tor, le même raisonnement qui place un nœud Bitcoin derrière un service onion plutôt que sur une IP publique.
Les fuites d'identité qu'une installation par défaut laisse en place
C'est la section qui compte si vous avez choisi BTCPay spécifiquement pour échapper à un prestataire qui savait qui vous étiez. Le logiciel supprime ce prestataire parfaitement. Il ne supprime pas, à lui seul, tout ce qui rattache par ailleurs la caisse à une personne — et la plupart de ces éléments viennent d'étapes qui semblent sans rapport avec le paiement.
- Le domaine. Un registrar détient votre identité même quand le WHOIS public est expurgé, et il a besoin d'une adresse valide pour garder le nom actif. Le nom d'hôte est de loin la façon la plus courante de retracer une caisse auto-hébergée jusqu'à son propriétaire.
- La transparence des certificats. Dès qu'un certificat est émis, le nom d'hôte exact est publié dans des journaux publics que n'importe qui peut consulter. Un sous-domaine que vous pensiez privé — pay.quelquechose, btcpay.quelquechose — est annoncé au monde entier, horodaté.
- L'hébergeur. Si le serveur a été acheté avec une carte à votre nom légal, la machine est à votre nom légal, quoi qu'il tourne dessus. Cela se joue à l'inscription, bien avant la première facture.
- La clé publique étendue. Donner un xpub à BTCPay lui permet de surveiller chaque adresse que cette clé dérive, y compris des soldes et un historique que vous n'aviez jamais prévu d'exposer à une application web. Utilisez un compte dédié pour la boutique, jamais le xpub de votre portefeuille principal.
- Le nœud Lightning. Un nœud annoncé publie un alias et une adresse. Un alias portant votre marque, sur une IP qui sert aussi votre caisse, relie les deux de façon permanente dans un graphe public.
- Les appels sortants. Les fournisseurs de taux, les plugins et les intégrations de notification contactent tous l'extérieur depuis la machine, et les notifications par email transitent par le compte SMTP que vous avez configuré. Chacun d'eux est un tiers qui voit votre serveur.
- Le chemin de sortie des fonds. Les pièces qui quittent la boutique vers un compte vérifié sur un exchange arrivent avec leur historique attaché. Cette fuite est en aval de BTCPay, et c'est celle qui défait le plus souvent tout le soin apporté en amont.
Refermer ces fuites est un travail ordinaire, pas quelque chose d'exotique. Choisissez un registrar qui accepte la crypto et ne collecte que le strict minimum, et donnez-lui une adresse qui n'est pas liée à votre identité. Placez la machine chez un hébergeur qui n'a jamais demandé qui vous êtes et payez-la depuis un solde en crypto — Bitcoin est pseudonyme plutôt qu'anonyme, donc recharger en Monero est ce qui referme la trace on-chain si cela compte pour vous. Et atteignez l'interface d'administration via un tunnel WireGuard plutôt que d'exposer une page de connexion pour quelque chose qui détient de l'argent. Chacune de ces décisions ne se prend qu'une fois ; ensemble, elles font toute la différence entre « aucun prestataire » et une confidentialité réelle.
Faire vivre la boutique après le lancement
Une caisse qui fonctionne depuis un an est une caisse que personne n'a regardée depuis un an. Une brève routine de maintenance évite que cela ne se transforme en panne le jour où vous avez le plus de monde.
- Mettez à jour au rythme du projet, pas au vôtre. Le déploiement dispose d'un chemin de mise à niveau qui fait avancer ensemble des versions de conteneurs assorties ; mettre à jour les pièces à la main, c'est exactement ainsi qu'une pile qui fonctionne devient une pile cassée.
- Sauvegardez ce qui ne peut pas être régénéré : la base de données et la configuration de la boutique, le descripteur du portefeuille, et la sauvegarde Lightning si vous en faites tourner un. La blockchain n'est pas une sauvegarde — elle se retélécharge.
- Restaurez une fois, délibérément, pendant que tout va bien. Une sauvegarde non testée d'un système de paiement n'est qu'une hypothèse sur vos revenus.
- Surveillez le disque. Un nœud élagué a une empreinte stable, mais ce n'est pas le cas des journaux et des bases de données, et un disque plein arrête le nœud, ce qui arrête les factures.
- Gardez la machine à jour et les ports fermés. Tout ce qui figure dans la checklist de durcissement des dix premières minutes s'applique ici, avec bien plus en jeu.
Ajoutez au passage un contrôle externe sur la boutique. Quelque chose d'aussi simple qu'une sonde qui interroge l'endpoint de facturation depuis l'extérieur vous avertit que la caisse est en panne avant qu'un client ne vous l'apprenne, ce qui représente l'essentiel de la différence pratique entre l'auto-hébergement et l'injoignable. Et traitez la machine elle-même comme le décrivent les dix premières minutes sur un nouveau VPS, car l'enjeu est plus élevé sur une machine qui détient de l'argent.
Les erreurs qui coûtent de l'argent réel
- Importer une phrase de récupération au lieu d'une clé publique étendue, ce qui transforme une application web publique en portefeuille chaud détenant chaque paiement jamais reçu.
- Configurer le DNS après avoir lancé l'installeur, puis se demander pourquoi le certificat n'a jamais été émis et pourquoi le site ne se charge pas.
- Choisir le préréglage d'élagage le plus agressif, puis essayer de rattacher un portefeuille avec des années d'historique que le nœud ne peut plus rescanner.
- Traiter le solde Lightning comme de l'épargne plutôt que comme une trésorerie de fonctionnement qui se trouve être en ligne.
- Sauvegarder un nœud Lightning en copiant son répertoire de données, et supposer que cela constitue un chemin de restauration valable.
- Acheter une offre dimensionnée pour l'application web, puis manquer de disque à mi-chemin de la synchronisation initiale.
- Laisser l'interface d'administration ouverte à tout internet derrière un mot de passe réutilisé d'ailleurs.
- Enregistrer le domaine et louer le serveur à votre propre nom, après avoir fait tout le reste correctement.
BTCPay fait partie des rares logiciels qui suppriment purement et simplement un intermédiaire au lieu de le remplacer par un autre, plus sympathique. L'installation prend un après-midi et la synchronisation une nuit. Ce qui vous reste, c'est une caisse qui accepte Bitcoin et Lightning, ne prélève rien, ne conserve aucun fonds, et ne répond à personne — tournant sur une machine que vous pouvez payer depuis le même solde qu'elle encaisse. Dimensionnez le disque pour le nœud, gardez la phrase de récupération hors du serveur, et placez la machine quelque part qui n'a jamais demandé votre nom.