Le serveur BTCPay est un processeur de paiement de crypto-monnaie open source et auto-hébergé. Avec BTCPay Server, vous n’avez pas besoin de payer de frais à un processeur de paiement tiers, et comme il s’agit d’un paiement peer-to-peer, il résiste à la censure. Ce tutoriel vous montrera comment configurer le serveur BTCPay sur Ubuntu.
Fonctionnalités du serveur BTCPay
- Votre propre processeur de paiement Bitcoin .
- Pas besoin de s’inquiéter de la fermeture du compte par un tiers comme Paypal.
- Débarrassez-vous des frais déraisonnables fixés par les processeurs de paiement tiers.
- Intégration avec les plates-formes de commerce électronique courantes telles que Magento , Shopify, WooCommerce, Joomla Virtuemart, Prestashop et Shopware.
- Vous pouvez ajouter un nombre illimité d’utilisateurs et de magasins.
- Prend en charge le réseau Bitcoin Lightning
- Accepte les altcoins.
- Intégration avec Quickbooks Comptabilité en ligne.
- Plugins
- API puissantes
Remarque : Avec BTCPay Server, vous n’avez plus besoin de payer de frais aux processeurs de paiement tiers (comme BitPay), mais il y a toujours des frais de transaction Bitcoin, qui peuvent être réduits en utilisant un nœud Lightning et un autre outil appelé processeur de paiement dans Serveur BTCPay.
Configuration requise pour le serveur
- Au moins 2 cœurs de processeur et 4 Go de RAM
- Disque de 600 Go pour le stockage des données
Nous utiliserons le BTCPay Docker, qui simplifie le processus de configuration. Il n’est pas recommandé de configurer BTCPay manuellement dans un environnement de production.
Étape 1 : Installez Docker sur le serveur Ubuntu 22.04
Docker est inclus dans le référentiel de logiciels Ubuntu. Cependant, pour nous assurer que nous avons la dernière version, nous devrons l’installer à partir du référentiel APT de Docker. Connectez-vous à votre serveur via SSH , puis exécutez la commande suivante pour ajouter le référentiel Docker à votre serveur Ubuntu.
echo "deb [signed-by=/etc/apt/keyrings/docker.gpg.key arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
Ensuite, exécutez la commande suivante pour importer la clé Docker GPG dans le système Ubuntu afin qu’APT puisse vérifier l’intégrité du package lors de l’installation.
wget --quiet -O - https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.gpg.key
Et comme ce référentiel utilise une connexion HTTPS, que je recommande à tous les référentiels de logiciels, nous devons également installer apt-transport-https
et ca-certificates
empaqueter.
sudo apt install apt-transport-https certificats ca
Enfin, mettez à jour l’index des packages sur votre système Ubuntu et installez docker-ce
(Docker Community Edition).
sudo apt update sudo apt install docker-ce
Une fois Docker installé, le démon Docker devrait être automatiquement démarré. Vous pouvez vérifier son état avec :
systemctl status docker
S’il n’est pas en cours d’exécution, démarrez le démon avec les deux commandes suivantes :
sudo systemctl restart docker.socket sudo systemctl restart docker.service
Et activez le démarrage automatique au démarrage du système:
sudo systemctl enable docker
Vérifiez la version de Docker.
docker -v
Exemple de sortie :
Docker version 20.10.18, build 370c289
Étape 2 : Installer et démarrer le conteneur BTCPay Docker
Cette étape doit être exécutée en tant qu’utilisateur root, passez donc en root.
sudo -i
Clonez le référentiel Github du serveur BTCPay.
apt install git cd ~ git clone https://github.com/btcpayserver/btcpayserver-docker.git
Il sera enregistré sous le répertoire ~/btcpayserver-docker/
Accédez à ce répertoire.
cd ~/btcpayserver-docker/
Avant de démarrer le conteneur BTCPay Docker, nous devons définir plusieurs variables d’environnement en exécutant les commandes suivantes une par une.
export BTCPAY_HOST="btcpay.example.com"
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_REVERSEPROXY="empty"
export BTCPAYGEN_EXCLUDE_FRAGMENTS="$BTCPAYGEN_EXCLUDE_FRAGMENTS;nginx-https"
export BTCPAYGEN_LIGHTNING="lnd"
export BTCPAY_ENABLE_SSH=true
export
est une commande shell Linux qui définit les variables d’environnement.
Où
- BTCPAY_HOST : Vous devez remplacer
btcpay.example.com
par votre nom d’hôte préféré pour votre instance BTCPay. Par exemple, j’utilisebtcpay.linuxbabe.com
. - NBTICOIN_NETWORK : choisissez d’exécuter sur
mainnet
,testnet
ouregnet
. Vous devez exécuter sur le réseau principal dans un environnement de production. - BTCPAYGEN_CRYPTO01 : Choisissez la crypto-monnaie que votre instance BTCPAY prendra en charge. Pour l’instant, vous pouvez choisir BTC. Les altcoins peuvent être ajoutés plus tard.
- BTCPAYGEN_REVERSEPROXY : Vous pouvez choisir entre
nginx
,traefix
etemtpy
: Nous ne voulons pas que le conteneur Docker agisse en tant que proxy inverse. Nous pouvons utiliser le serveur Web Nginx existant comme proxy inverse. - BTCPAYGEN_EXECLUDE_FRAMENTS : Nous ne voulons pas que le conteneur Docker génère des certificats TLS. Nous obtiendrons et installerons un certificat Let’s Encrypt TLS gratuit plus tard.
- BTCPAYGEN_LIGHTING : Vous pouvez utiliser
lnd
ouclightning
pour la prise en charge de la mise en réseau Lightning - BTCPAY_ENABlE_SSH : Autorise BTCPAY à gérer les clés autorisées SSH.
Pour vérifier la valeur d’une variable d’environnement, vous pouvez utiliser la commande echo. Par exemple.
echo $BTCPAY_HOST
Ensuite, exécutez la commande suivante pour installer et démarrer le conteneur BTCPay Docker.
. ./btcpay-setup.sh -i
Exemple de sortie :
Installed bitcoin-cli.sh to /usr/local/bin: Command line for your Bitcoin instance Installed bitcoin-lncli.sh to /usr/local/bin: Command line for your Bitcoin LND instance Installed btcpay-clean.sh to /usr/local/bin: Command line for deleting old unused docker images Installed btcpay-down.sh to /usr/local/bin: Command line for stopping all services related to BTCPay Server Installed btcpay-restart.sh to /usr/local/bin: Command line for restarting all services related to BTCPay Server Installed btcpay-setup.sh to /usr/local/bin: Command line for restarting all services related to BTCPay Server Installed btcpay-up.sh to /usr/local/bin: Command line for starting all services related to BTCPay Server Installed btcpay-admin.sh to /usr/local/bin: Command line for some administrative operation in BTCPay Server Installed btcpay-update.sh to /usr/local/bin: Command line for updating your BTCPay Server to the latest commit of this repository Installed changedomain.sh to /usr/local/bin: Command line for changing the external domain of your BTCPay Server
Vérifiez l’état du service systemd :
sudo systemctl status btcpayserver.service
Production:
Vérifiez les conteneurs Docker :
sudo docker ps
Production:
Comme vous pouvez le constater, le btcpayserver/btcpayserver
conteneur Docker n’expose pas le port au système d’exploitation hôte. Modifiez le fichier Docker Compose.
nano ~/btcpayserver-docker/Generated/docker-compose.generated.yml
Ajoutez les lignes suivantes dans la btcpayserver
section.
ports : - "49392:49392"
Comme ça:
Enregistrez et fermez le fichier. Redémarrez ensuite btcpayserver.service.
sudo systemctl restart btcpayserver
Vérifiez à nouveau l’état du conteneur Docker.
sudo docker ps
Vous verrez que le port 49392 du système d’exploitation hôte est mappé au port Docker 49392.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS cf182b7d5e6f btcpayserver/btcpayserver:1.6.11 "/app/docker-entrypo…" 14 minutes ago Up 14 minutes 0.0.0.0:49392->49392/tcp
En cas d’erreur dans les variables d’environnement, vous pouvez les modifier, puis exécuter à nouveau le script de configuration et redémarrer btcpayserver.service
.
Étape 3 : Configurer le proxy inverse Nginx
Installez le serveur Web Nginx à partir du référentiel de logiciels Ubuntu par défaut.
sudo apt install -y nginx
Créez un fichier d’hôte virtuel Nginx pour le serveur BTCPay.
sudo nano /etc/nginx/conf.d/btcpay-server.conf
Ajoutez les lignes suivantes dans ce fichier.
# If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the # scheme used to connect to this server map $http_x_forwarded_proto $proxy_x_forwarded_proto { default $http_x_forwarded_proto; '' $scheme; } # If we receive X-Forwarded-Port, pass it through; otherwise, pass along the # server port the client connected to map $http_x_forwarded_port $proxy_x_forwarded_port { default $http_x_forwarded_port; '' $server_port; } # If we receive Upgrade, set Connection to "upgrade"; otherwise, delete any # Connection header that may have been passed to this server map $http_upgrade $proxy_connection { default upgrade; '' close; } # Apply fix for very long server names server_names_hash_bucket_size 128; # Prevent Nginx Information Disclosure server_tokens off; # Default dhparam # Set appropriate X-Forwarded-Ssl header map $scheme $proxy_x_forwarded_ssl { default off; https on; } gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; log_format vhost '$host $remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; access_log off; # HTTP 1.1 support proxy_http_version 1.1; proxy_buffering off; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $proxy_connection; 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 $proxy_x_forwarded_proto; proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl; proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; client_header_buffer_size 500k; large_client_header_buffers 4 500k; http2_max_field_size 500k; http2_max_header_size 500k; # Mitigate httpoxy attack (see README for details) proxy_set_header Proxy ""; server { server_name btcpay.linuxbabe.com; listen 80; access_log /var/log/nginx/btcpay.access; error_log /var/log/nginx/btcpay.error; client_max_body_size 100M; # Here is the main BTCPay Server application location / { proxy_pass http://127.0.0.1:49392; } # Include the next two stanzas if and only if you want to expose your lightning gRPC & RPC interfaces to the internet #location /lnrpc.Lightning { # grpc_pass grpcs://127.0.0.1:10009; #} #location /lnd-rest/btc/ { # rewrite ^/lnd-rest/btc/(.*) /$1 break; # proxy_pass https://127.0.0.1:8080/; #} # Include this stanza if you are planning to set up Ride The Lightning (RTL) location /rtl/ { proxy_pass http://127.0.0.1:3000/rtl/; } }
Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.
sudo nginx-t
Si le test réussit, rechargez Nginx.
sudo systemctl reload nginx
Étape 4 : Activer HTTPS
Pour chiffrer le trafic HTTP, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let’s Encrypt. Exécutez la commande suivante pour installer le client Let’s Encrypt (certbot) sur le serveur Ubuntu.
sudo apt install certbot python3-certbot-nginx
Ensuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d btcpay.example.com
Où
--nginx
: Utilisez le plug-in nginx.--agree-tos
: Accepter les conditions d’utilisation.--redirect
: Force HTTPS par redirection 301.--hsts
: Ajoutez l’en-tête Strict-Transport-Security à chaque réponse HTTP. Forcer le navigateur à toujours utiliser TLS pour le domaine. Protège contre le SSL/TLS Stripping.--staple-ocsp
: active l’agrafage OCSP. Une réponse OCSP valide est agrafée au certificat que le serveur propose pendant TLS.
Le certificat devrait maintenant être obtenu et installé automatiquement.
Étape 5 : Utilisation de l’interface Web du serveur BTCPay
Vous pouvez maintenant accéder à https://btcpay.example.com
pour créer un compte administrateur.
Une fois le compte administrateur créé, BTCPay Server désactive automatiquement l’enregistrement de nouveaux utilisateurs. Vous pouvez le réactiver si vous le souhaitez.
Dans le coin inférieur droit, vous pouvez vérifier l’état de synchronisation du nœud Bitcoin.
Il est recommandé d’attendre la fin de ce processus avant de faire quoi que ce soit d’autre dans le tableau de bord du serveur BTCPay.
Étape 6 :
Maintenant, vous devez
- créer un magasin
- créer un portefeuille
- configurer le nœud d’éclairage
Cliquez sur le bouton Créer une boutique pour commencer. Si vous ne possédez pas de boutique e-commerce, vous pouvez toujours créer une boutique sur le serveur BTCPAY. Un magasin est une entité qui recevra le paiement des autres.
Ensuite, cliquez sur le bouton Configurer un portefeuille .
Vous pouvez importer votre portefeuille existant ou créer un nouveau portefeuille. Même si j’ai un Bitcoin existant, je préfère toujours créer un nouveau portefeuille sur le serveur BTCPAY.
Il existe deux types de portefeuilles que vous pouvez créer :
- Portefeuille chaud
- Portefeuille pour montre uniquement
J’ai choisi de créer un portefeuille réservé aux montres car il est plus sécurisé.
Il existe 4 types d’adresse :
- Segwit
- Segwit enveloppé
- Héritage
- Racine pivotante
Je choisis le type d’ adresse Segwit recommandé. Vous pouvez également définir une phrase secrète pour votre portefeuille afin de le rendre plus sécurisé.
Ensuite, BTCPAY affichera la phrase de récupération de votre portefeuille. Vous devez l’écrire sur papier et le conserver en lieu sûr. Cliquez sur le bouton Terminé et le portefeuille est créé.
Ensuite, cliquez sur le bouton Configurer un nœud d’éclairage . Vous pouvez choisir d’utiliser le nœud Lightning interne BTCPAY ou d’utiliser un nœud Lightning personnalisé. Je choisis la voie la plus simple : Utiliser le nœud interne . Cliquez sur le bouton Enregistrer .
Dans la page Paramètres BTC Lightning , vous pouvez activer l’URL Lightning (LNURL) pour les factures.
Comment mettre à niveau le serveur BTCPAY
Lorsqu’une nouvelle version de BTCPay Server est publiée, exécutez la commande suivante en tant que root pour la mettre à jour.
btcpay-update.sh
Modifiez ensuite le fichier Docker Compose.
sudo nano /root/btcpayserver-docker/Generated/docker-compose.generated.yml
Ajoutez les lignes suivantes dans la btcpayserver
section.
ports : - "49392:49392"
Comme ça:
Enregistrez et fermez le fichier. Redémarrez ensuite btcpayserver.service.
sudo systemctl restart btcpayserver
Emballer
J’espère que ce tutoriel vous a aidé à configurer BTCPAY sur Ubuntu. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de trucs et astuces. Prenez soin de vous.
Merci de votez pour cet article :