BTCPay server

Installer & configurer un BTCPay sur Ubuntu / Docker

(Last Updated On: 4 octobre 2022)

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-httpset ca-certificatesempaqueter.

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

 Linux Ubuntu

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

exportest une commande shell Linux qui définit les variables d’environnement.

  • BTCPAY_HOST : Vous devez remplacer btcpay.example.compar votre nom d’hôte préféré pour votre instance BTCPay. Par exemple, j’utilise btcpay.linuxbabe.com.
  • NBTICOIN_NETWORK : choisissez d’exécuter sur mainnettestnetou regnet. 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 nginxtraefixet emtpy: 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 lndou clightningpour 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:

 Linux Ubuntu

Vérifiez les conteneurs Docker :

sudo docker ps

Production:

 Linux Ubuntu

Comme vous pouvez le constater, le btcpayserver/btcpayserverconteneur 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 btcpayserversection.

    ports :
    - "49392:49392"

Comme ça:

 Linux Ubuntu

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

  • --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.compour créer un compte administrateur.

 Linux Ubuntu

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.

 Linux Ubuntu

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.

 Linux Ubuntu

Ensuite, cliquez sur le bouton Configurer un portefeuille .

 Linux Ubuntu

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.

 Linux Ubuntu

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é.

 Linux Ubuntu

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é.

 Linux Ubuntu

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 .

 Linux Ubuntu

Dans la page Paramètres BTC Lightning , vous pouvez activer l’URL Lightning (LNURL) pour les factures.

 Linux Ubuntu

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 btcpayserversection.

    ports :
    - "49392:49392"

Comme ça:

 Linux Ubuntu

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 :
Votez : Pas malMoyenBienAcès bienExcélent (5 votes, average: 3,80 out of 5)
Loading...

Laisser un commentaire

Translate »