Linux安裝BTCPayServer並設置比特幣BTC和Lightning支付網關

最大的比特幣支付提供商之一BitPay已經遭遇Bitcoiners的折磨很長一段時間。該社區呼籲進行抵制,開發商Nicolas Dorier巧妙地利用了這一抵制事件。php

Nicolas建立了一個名爲BTCPayServer的開源和自託管BitPay兼容支付網關,受到了社區的好評。雖然有許多關於如何使用Docker和其餘方法進行設置的指南,但我喜歡控制我在服務器上安裝的內容,同時還要了解它的工做原理。html

若是你出於某種緣由更喜歡手動安裝BTCPayServer,我會寫一篇關於如何作到這一點的分步指南。前端

本教程是爲Ubuntu 18.04編寫的,但也適用於舊版本和其餘基於Debian的發行版。在開始以前,請確保運行比特幣核心和閃電網絡節點。java

安裝依賴項

要運行BTCPayServer,你須要安裝.NET Core SDKNBXplorerPostgreSQLnode

安裝.NET Core SDK

轉到下載文件夾或用於存儲臨時文件的任何其餘文件夾:python

cd ~/Downloads

並下載.NET Core SDK所需的Microsoft軟件包:linux

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

更新包緩存並安裝.NET Core:android

sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.1

安裝NBXplorer

咱們須要安裝NBXplorer才能跟蹤傳入的鏈上交易。git

若是你尚未建立源文件夾並打開它:程序員

mkdir ~/source
cd ~/source

克隆存儲庫並構建代碼:

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

建立數據文件夾:

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

新的配置文件:

touch settings.config

使用你選擇的編輯器打開文件並添加如下行:

btc.rpc.auth=<bitcoind rpc user>:<bitcoind rpc password>
port=24445
mainnet=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/system
sudo wget https://gist.githubusercontent.com/mariodian/de873b969e70eca4d0a7673efd697d0a/raw/acfc70c5694cd53d8a3df7ff54a35ff2caba7532/nbxplorer.service

根據你的環境編輯文件。

啓用服務,啓動它並檢查狀態:

sudo systemctl enable nbxplorer.service
sudo service nbxplorer start
sudo service nbxplorer status

若是你沒有看到錯誤,請轉到下一步。

安裝PostgreSQL

我沒法使用MySQL/MariaDB設置BTCPayServer,因此我被迫使用PostgreSQL

首先安裝它並以新建立的系統用戶身份打開shell提示符:

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

建立一個新的數據庫用戶:

createuser --pwprompt --interactive

輸入如下內容(你能夠將satoshi更改成你喜歡的任何用戶名):

建立一個新數據庫:

createdb -O satoshi btcpayserver

若是你看到沒有錯誤退出shell:

exit

安裝BTCPayServer

克隆存儲庫並構建代碼:

cd ~/source
git clone https://github.com/btcpayserver/btcpayserver.git
cd btcpayserver
./build.sh

建立一個數據文件夾:

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

一個新的配置文件:

touch settings.config

獲取LND的證書指紋並將其粘貼到下面的配置文件中。

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

打開settings.config並添加如下行:

network=mainnet
port=23001
bind=0.0.0.0
chains=btc
BTC.explorer.url=http://127.0.0.1:24445
BTC.lightning=type=lnd-rest;server=https://127.0.0.1:8080/;macaroonfilepath=~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon;certthumbprint=<finger print>
postgres=User ID=<your db user>;Password=<your db 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/system
sudo wget https://gist.githubusercontent.com/mariodian/07bb13da314e2a321784b380f543651a/raw/6cef554d9e8311e683a017d5e63a07822dee7642/btcpayserver.service

根據你的環境編輯文件。

啓用該服務,啓動它並檢查它是否正常運行:

sudo systemctl enable btcpayserver.service
sudo service btcpayserver start
sudo 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=<your cert fingerprint>

請記住添加你以前得到的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 rewrite
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo a2enmod deflate
sudo a2enmod headers
sudo a2enmod proxy_balancer
sudo a2enmod proxy_connect
sudo a2enmod proxy_html

重啓服務器:

sudo systemctl restart apache2

爲你的域名安裝Let's加密證書。但你可使用任何其餘證書頒發機構。

用如下內容替換/etc/apache2/sites-enabled/000-default.conf的內容:

<VirtualHost *:80>
	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
</VirtualHost>

根據你的須要更改ServerName

而後,使用如下內容替換/etc/apache2/sites-enabled/000-default-le-ssl.conf的內容:

<IfModule mod_ssl.c>
<VirtualHost *:443>
	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
</VirtualHost>
</IfModule>

再次,編輯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等區塊鏈相關的交互式在線編程實戰教程:

  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
  • c#比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在C#代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是C#工程師不可多得的比特幣開發學習課程。
  • java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
  • php以太坊,主要是介紹使用php進行智能合約開發交互,進行帳號建立、交易、轉帳、代幣開發以及過濾器和交易等內容。
  • 以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • ERC721以太坊通證明戰,課程以一個數字藝術品創做與分享DApp的實戰開發爲主線,深刻講解以太坊非同質化通證的概念、標準與開發方案。內容包含ERC-721標準的自主實現,講解OpenZeppelin合約代碼庫二次開發,實戰項目採用Truffle,IPFS,實現了通證以及去中心化的通證交易所。
  • C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括帳戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。
  • EOS入門教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、帳戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
  • 深刻淺出玩轉EOS錢包開發,本課程以手機EOS錢包的完整開發過程爲主線,深刻學習EOS區塊鏈應用開發,課程內容即涵蓋帳戶、計算資源、智能合約、動做與交易等EOS區塊鏈的核心概念,同時也講解如何使用eosjs和eosjs-ecc開發包訪問EOS區塊鏈,以及如何在React前端應用中集成對EOS區塊鏈的支持。課程內容深刻淺出,很是適合前端工程師深刻學習EOS區塊鏈應用開發。
  • Hyperledger Fabric 區塊鏈開發詳解,本課程面向初學者,內容即包含Hyperledger Fabric的身份證書與MSP服務、權限策略、通道配置與啓動、鏈碼通訊接口等核心概念,也包含Fabric網絡設計、nodejs鏈碼與應用開發的操做實踐,是Nodejs工程師學習Fabric區塊鏈開發的最佳選擇。
  • Hyperledger Fabric java 區塊鏈開發詳解,課程面向初學者,內容即包含Hyperledger Fabric的身份證書與MSP服務、權限策略、通道配置與啓動、鏈碼通訊接口等核心概念,也包含Fabric網絡設計、java鏈碼與應用開發的操做實踐,是java工程師學習Fabric區塊鏈開發的最佳選擇。
  • tendermint區塊鏈開發詳解,本課程適合但願使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操代碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。

匯智網原創翻譯,轉載請標明出處。這裏是如何在Linux上手動安裝BTCPayServer並設置比特幣BTC和Lightning支付網關

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息