博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux安装BTCPayServer并设置比特币BTC和Lightning支付网关
阅读量:5902 次
发布时间:2019-06-19

本文共 7905 字,大约阅读时间需要 26 分钟。

hot3.png

最大的比特币支付提供商之一BitPay已经遭遇Bitcoiners的折磨很长一段时间。该社区呼吁进行抵制,开发商Nicolas Dorier巧妙地利用了这一抵制事件。

Nicolas创建了一个名为BTCPayServer的开源和自托管BitPay兼容支付网关,受到了社区的好评。虽然有许多关于如何使用Docker和其他方法进行设置的指南,但我喜欢控制我在服务器上安装的内容,同时还要了解它的工作原理。

如果你出于某种原因更喜欢手动安装BTCPayServer,我会写一篇关于如何做到这一点的分步指南。

本教程是为Ubuntu 18.04编写的,但也适用于旧版本和其他基于Debian的发行版。在开始之前,请确保运行比特币核心和闪电网络节点。

安装依赖项

要运行BTCPayServer,你需要安装.NET Core SDKNBXplorerPostgreSQL

安装.NET Core SDK

转到下载文件夹或用于存储临时文件的任何其他文件夹:

cd ~/Downloads

并下载.NET Core SDK所需的Microsoft软件包:

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpgsudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -sr)/prod.listsudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list

更新包缓存并安装.NET Core:

sudo apt-get install apt-transport-httpssudo apt-get updatesudo apt-get install dotnet-sdk-2.1

安装NBXplorer

我们需要安装NBXplorer才能跟踪传入的链上交易。

如果你还没有创建源文件夹并打开它:

mkdir ~/sourcecd ~/source

克隆存储库并构建代码:

git clone https://github.com/dgarage/NBXplorercd NBXplorer./build.sh

创建数据文件夹:

mkdir -p ~/.nbxplorer/Maincd ~/.nbxplorer/Main

新的配置文件:

touch settings.config

使用你选择的编辑器打开文件并添加以下行:

btc.rpc.auth=
:
port=24445mainnet=1

确保使用你的bitcoind的rpc登录凭据。你可以使用以下命令找到它们:

cat ~/.bitcoin/bitcoin.conf | grep rpc

测试是否所有设置都正确:

/usr/bin/dotnet ~/source/NBXplorer/NBXplorer/bin/Release/netcoreapp2.1/NBXplorer.dll -c ~/.nbxplorer/Main/settings.config

如果是这样,输入ctrl + c终止进程并下载Systemd服务:

cd /usr/lib/systemd/systemsudo wget https://gist.githubusercontent.com/mariodian/de873b969e70eca4d0a7673efd697d0a/raw/acfc70c5694cd53d8a3df7ff54a35ff2caba7532/nbxplorer.service

根据你的环境编辑文件。

启用服务,启动它并检查状态:

sudo systemctl enable nbxplorer.servicesudo service nbxplorer startsudo service nbxplorer status

如果你没有看到错误,请转到下一步。

安装PostgreSQL

我无法使用MySQL/MariaDB设置BTCPayServer,所以我被迫使用PostgreSQL

首先安装它并以新创建的系统用户身份打开shell提示符:

sudo apt install postgresql postgresql-contribsudo -i -u postgres

创建一个新的数据库用户:

createuser --pwprompt --interactive

输入以下内容(你可以将satoshi更改为你喜欢的任何用户名):

创建一个新数据库:

createdb -O satoshi btcpayserver

如果你看到没有错误退出shell:

exit

安装BTCPayServer

克隆存储库并构建代码:

cd ~/sourcegit clone https://github.com/btcpayserver/btcpayserver.gitcd btcpayserver./build.sh

创建一个数据文件夹:

mkdir -p ~/.btcpayserver/Maincd ~/.btcpayserver/Main

一个新的配置文件:

touch settings.config

获取LND的证书指纹并将其粘贴到下面的配置文件中。

openssl x509 -noout -fingerprint -sha256 -inform pem -in ~/.lnd/tls.cert

打开settings.config并添加以下行:

network=mainnetport=23001bind=0.0.0.0chains=btcBTC.explorer.url=http://127.0.0.1:24445BTC.lightning=type=lnd-rest;server=https://127.0.0.1:8080/;macaroonfilepath=~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon;certthumbprint=
postgres=User ID=
;Password=
;Host=localhost;Port=5432;Database=btcpayserver;

根据你的设置更改突出显示的变量variables

检查一切是否正常。

/usr/bin/dotnet run -p ~i/source/btcpayserver/BTCPayServer/BTCPayServer.csproj -c ~/.btcpayserver/Main/settings.config --network=mainnet

如果是这样,输入ctrl + c终止进程并下载Systemd服务:

cd /usr/lib/systemd/systemsudo wget https://gist.githubusercontent.com/mariodian/07bb13da314e2a321784b380f543651a/raw/6cef554d9e8311e683a017d5e63a07822dee7642/btcpayserver.service

根据你的环境编辑文件。

启用该服务,启动它并检查它是否正常运行:

sudo systemctl enable btcpayserver.servicesudo service btcpayserver startsudo service btcpayserver status

恭喜,你刚刚度过了最难的部分!

允许传入连接(可选)

如果要远程运行服务器,则必须打开端口23001

首先,转到路由器设置并找到虚拟服务器Virtual Server或端口转发Port Forwarding的部分,并在上述端口上设置端口转发。

然后回到你的linux机器并用iptables打开端口:

sudo iptables -A INPUT -p tcp --dport 23001 -j ACCEPT

如果你使用iptables-save也运行以下命令:

sudo iptables-save > /etc/iptables/rules.v4

你现在应该可以从另一台计算机连接到你的服务器。

设置BTCPayServer

转到你的BTCPayServer管理,注册一个新的管理员帐户并登录。

现在,转到Stores并单击Create a new store。完成后,转到商店设置并向下滚动到Derivation Scheme

BTC下单击修改Edit,然后在计算机或手机上打开支持BIP32的钱包。

出于本教程的目的,我将使用Electrum。

建议你创建一个新的钱包,而不是使用旧钱包,这样你就不必费心地重新扫描地址上的余额了。

完成后,单击Wallet -> Information,复制主公钥,将其粘贴回BTCPayServer管理,选中已启用,然后保存。

接下来,向下滚动到Lightning nodes (Experimental),然后单击修改modify

应该设置你的连接字符串,但如果没有,请粘贴以下内容:

type=lnd-rest;server=https://127.0.0.1:8080/;macaroonfilepath=/home/satoshi/.lnd/data/chain/bitcoin/mainnet/admin.macaroon;certthumbprint=

请记住添加你之前获得的LND证书指纹,并将主目录更改为你自己的目录。

单击测试连接Test connection,如果一切正常,请选中已启用Enable并单击提交submit

在这种情况下,服务器在你要通过域名访问的单独计算机上运行,转到Server Settings -> Maintenance,并在Change domain name添加你的名称(当然,你必须购买它)。

你还必须根据你的设置向你的域名提供商添加CNAME或A DNS记录。对不起,我无法帮助你,提供者太多了。

现在,你应该可以使用新域名访问BTCPayServer管理,如下所示:http://domain.ltd:23001

要创建POS终端,请转到Apps -> Create a new app并填写简短表单。然后,你将进入应用程序设置,你可以通过模板更改项目列表。

你还可以在网站中添加一个简单的付款按钮,你可以在Stores -> Settings -> Pay Button中配置,也可以在Stores -> Invoices -> Create a new invoice中手动创建发票。然后,你可以发送给客户。

当然,支付网关的前端设计是完全可定制的,因此你可以设置自己的徽标和颜色。

设置SSL加密证书(可选)

首先让我们安装将用作反向代理的Apache 2。

sudo apt-get install apache2

启用所需模块:

sudo a2enmod rewritesudo a2enmod proxysudo a2enmod proxy_httpsudo a2enmod proxy_ajpsudo a2enmod deflatesudo a2enmod headerssudo a2enmod proxy_balancersudo a2enmod proxy_connectsudo a2enmod proxy_html

重启服务器:

sudo systemctl restart apache2

为你的域名安装Let's加密证书。但你可以使用任何其他证书颁发机构。

用以下内容替换/etc/apache2/sites-enabled/000-default.conf的内容:

ServerAdmin webmaster@localhost ServerName btcpay.freedomnode.com RewriteEngine on RewriteCond %{SERVER_NAME} =btcpay.freedomnode.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

根据你的需要更改ServerName

然后,使用以下内容替换/etc/apache2/sites-enabled/000-default-le-ssl.conf的内容:

ServerAdmin webmaster@localhost ServerName btcpay.freedomnode.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ProxyPass "/" "http://127.0.0.1:23001/" ProxyPassReverse / "http://127.0.0.1:23001/" ProxyPreserveHost On SSLCertificateFile /etc/letsencrypt/live/btcpay.freedomnode.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/btcpay.freedomnode.com/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf

再次,编辑ServerName并确保SSLCertificateFileSSLCertificateKeyFile指向正确的文件。

重新加载服务器:

sudo systemctl reload apache2

现在回到~/.btcpayserver/Main/settings.config并添加:

externalurl=HTTPS://btcpay.freedomnode.com

再次将服务器名称更改为你自己的名称。

你还可以从配置中删除bind=0.0.0.0,因为远程连接将从现在开始通过Apache进行代理。

重启BTCPayServer:

sudo service btcpayserver restart

打开浏览器并检查新安装的SSL证书是否正常工作。

======================================================================

分享一些比特币、以太坊、EOS、Fabric等区块链相关的交互式在线编程实战教程:

  • ,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • ,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • ,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
  • ,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • ,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • ,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • ,主要介绍智能合约与dapp应用开发,适合入门。
  • ,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • ,课程以一个数字艺术品创作与分享DApp的实战开发为主线,深入讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
  • ,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • ,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • ,本课程以手机EOS钱包的完整开发过程为主线,深入学习EOS区块链应用开发,课程内容即涵盖账户、计算资源、智能合约、动作与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深入浅出,非常适合前端工程师深入学习EOS区块链应用开发。
  • ,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、通道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操作实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
  • ,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、通道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操作实践,是java工程师学习Fabric区块链开发的最佳选择。
  • ,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是

转载于:https://my.oschina.net/u/2472105/blog/3060100

你可能感兴趣的文章
SPUserResizableView
查看>>
宏定义(#ifndef+#define+#endif)的作用
查看>>
Prometheus安装部署以及配置
查看>>
taobao-pamirs-schedule-2.0源码分析——类设计
查看>>
10位程序员眼中的2007:寻找软件开…
查看>>
Web开发之-DOM操作对象
查看>>
APUE第15章学习扎记之程序的存储区布局试验
查看>>
ubuntu升级16.04 inter idea 中文输入法无效
查看>>
三目运算判断jsp脚本里面的值
查看>>
sshtunnel在本地访问云服务器mysql
查看>>
Java类加载器( 死磕8)
查看>>
小蚂蚁学习APP接口开发(1)—— json方式封装通信接口
查看>>
我的友情链接
查看>>
CDN相关
查看>>
Tomcat的设置4——Tomcat的体系结构与设置基于端口号的虚拟主机
查看>>
三种判断端口存活的方法和链接200的判断方法
查看>>
我的友情链接
查看>>
ftp协议基础
查看>>
顺时针打印矩阵
查看>>
访问共享经常中断
查看>>