今日起接受比特币支付,使用BTCPay Server!本指南将引领您完成安装之旅。
引言
尽管我们的指南详细介绍了如何在Azure或Lunanode上通过一键式操作完成BTCPay Server的安装,但BTCPay Server的适用范围远不止于此。
以下内容将为您揭示如何在任何支持Docker的环境中轻松部署BTCPay Server。
系统架构
如图所示,BTCPay依赖于多个基础设施组件,主要包括:
- 轻量级区块浏览器(NBXplorer),
- 数据库(PostgreSQL),
- 完整节点(例如Bitcoin Core)。
若您支持的不仅仅是标准比特币交易,还可能涉及更多依赖项,例如:
- Core Lightning (CLN)
- LitecoinD及其他货币守护进程
- 以及更多……
完整安装指南(面向技术用户)
您亦可选择在个人机器或VPS实例上安装BTCPay Server。
官方支持的安装方式基于Docker(以及Docker-Compose)。
首先,确保您拥有指向主机的域名A记录
,且端口443
和80
对外开放。若需使用闪电网络,则端口9735
为必需(若使用莱特币闪电网络则为9736
)。否则,您需通过运行changedomain.sh
手动设置域名。
假设您的域名是btcpay.EXAMPLE.com
。
以下设置假定您希望支持比特币、Core Lightning (CLN),并由Nginx自动配置HTTPS。同时启用节点修剪功能,若您有足够磁盘空间支持完整节点,可修改或忽略此设置。最后,您的域名btcpay.EXAMPLE.com
应反映实际域名。
环境变量可根据您的需求进行调整,部分变量可能需要额外存储空间。
# 以root用户登录
sudo su -
# 创建BTCPay文件夹
mkdir BTCPayServer
cd BTCPayServer
# 克隆此仓库
git clone https://github.com/btcpayserver/btcpayserver-docker
cd btcpayserver-docker
# 使用正确参数运行btcpay-setup.sh
export BTCPAY_HOST="btcpay.EXAMPLE.com"
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage-s"
export BTCPAYGEN_REVERSEPROXY="nginx"
export BTCPAYGEN_LIGHTNING="clightning"
export BTCPAY_ENABLE_SSH=true
. ./btcpay-setup.sh -I
exit
btcpay-setup.sh
将执行以下操作:
- 安装Docker
- 安装Docker-Compose
- 确保BTCPay在重启时自动启动(通过upstart或systemd)
- 设置环境变量以使用BTCPay工具
- 将BTCPay工具添加至/usr/bin
- 启动BTCPay Server
下方视频将一步步指导您如何在VPS上使用Docker设置BTCPay Server。
若您有兴趣了解更多关于使用Docker Compose设置BTCPay的内容,请观看此视频。
环境变量
btcpay-setup.sh
将使用以下环境变量:
BTCPAY_HOST
:您的网站主机名(例如btcpay.example.com
)BTCPAY_ADDITIONAL_HOSTS
:可选,指定支持https的额外域名(例如example2.com,example3.com)REVERSEPROXY_HTTP_PORT
:反向代理绑定的HTTP流量公共端口(默认:80)REVERSEPROXY_HTTPS_PORT
:反向代理绑定的HTTPS流量公共端口(默认:443)REVERSEPROXY_DEFAULT_HOST
:可选,若使用nginx反向代理,指定通过IP或未识别域名访问服务器时显示的网站NOREVERSEPROXY_HTTP_PORT
:可选,若不使用反向代理,指定HTTP流量的开放端口(默认:80)NBITCOIN_NETWORK
:使用的网络类型(例如mainnet
、testnet
或regtest
,默认:mainnet
)LIGHTNING_ALIAS
:若使用闪电网络节点,可为其设置别名BTCPAYGEN_CRYPTO1
:支持的首种加密货币(例如btc
、ltc
,默认:btc
)BTCPAYGEN_CRYPTO2
:支持的第二种加密货币(例如btc
、ltc
,默认:(空)
)BTCPAYGEN_CRYPTON
:支持的第N种加密货币,N最大为9(例如btc
、ltc
,默认:(空)
)BTCPAYGEN_REVERSEPROXY
:指定使用的反向代理;NGinx支持HTTPS(例如nginx
、traefik
、(空)
,默认:nginx
)BTCPAYGEN_LIGHTNING
:使用的闪电网络实现(例如clightning
、lnd
、phoenixd
,默认:(空)
)BTCPAYGEN_SUBNAME
:生成的docker-compose文件子名称,完整名称为Generated/docker-compose.SUBNAME.yml
(默认:generated
)BTCPAYGEN_ADDITIONAL_FRAGMENTS
:以分号分隔的额外片段列表(例如opt-save-storage
)LETSENCRYPT_EMAIL
:若证书过期且自动续期失败,将向此邮箱发送通知(例如[email protected]
)ACME_CA_URI
:请求HTTPS证书的API端点(默认:production
)BTCPAY_ENABLE_SSH
:可选,允许BTCPay Server通过编辑主机authorized_keys获取SSH访问权限,可用于管理authorized_keys或通过网站直接更新BTCPay Server(默认:false)BTCPAYGEN_DOCKER_IMAGE
:可选,若自定义了C#生成器,指定使用的生成器镜像。设置为btcpayserver/docker-compose-generator:local
可在运行时本地构建生成器BTCPAY_IMAGE
:可选,若自定义了btcpayserver镜像,指定使用的镜像BTCPAYGEN_EXCLUDE_FRAGMENTS
:以分号分隔的强制排除片段列表(例如litecoin-clightning
)TOR_RELAY_NICKNAME
:若通过opt-add-tor-relay激活tor中继,此为中继昵称TOR_RELAY_EMAIL
:若通过opt-add-tor-relay激活tor中继,此为Tor联系您的邮箱
此外,某些插件还有特定的环境变量:
LIBREPATRON_HOST
:若通过opt-add-librepatron激活libre patron,此为您的libre patron网站主机名(例如librepatron.example.com
)ZAMMAD_HOST
:若通过opt-add-zammad激活zammad,此为您的zammad网站主机名(例如zammad.example.com
)WOOCOMMERCE_HOST
:若通过opt-add-woocommerce激活woocommerce,此为您的woocommerce网站主机名(例如store.example.com
)EPS_XPUB
:若通过opt-add-electrum-ps激活Electrum Personal Server (EPS),在首次运行EPS服务器前必须设置您要使用的钱包扩展公钥(XPUB、YPUB或ZPUB)。若未设置此项而意外启动EPS,将无法正常工作,因为EPS模型仅监控指定钱包- 若通过opt-add-bwt激活Bitcoin Wallet Tracker,可使用
BWT_XPUB
/BWT_XPUB_*
(设置您的XPUB/YPUB/ZPUB)、BWT_DESCRIPTOR
/BWT_DESCRIPTOR_*
(用于脚本描述符)、BWT_RESCAN_SINCE
(设置为钱包创建日期YYYY-MM-DD以加速重新扫描)、BWT_BITCOIND_WALLET
和BWT_GAP_LIMIT
LND_WTCLIENT_SWEEP_FEE
:若通过opt-lnd-wtclient激活LND watchtower,可使用LND_WTCLIENT_SWEEP_FEE
更改构建正义交易时使用的清扫费用(默认10 sat/byte)FIREFLY_HOST
:若通过opt-add-fireflyiii激活fireflyiii,此为您的fireflyiii网站主机名(例如firefly.example.com
)CLOUDFLARE_TUNNEL_TOKEN
:用于通过Cloudflare Argo Tunnel将您的实例暴露于明网(若通过opt-add-cloudflared激活cloudflare tunnel,设置说明请参见文档)
工具集
BTCPay安装完成后,您将获得一系列实用脚本:
bitcoin-cli.sh
:访问您的比特币节点实例(用于RPC)bitcoin-lightning-cli.sh
:访问您的CLN节点实例(用于RPC)changedomain.sh
:更改您的BTCPayServer域名(请先禁用2FA/U2F,否则可能无法登录账户)btcpay-update.sh
:将BTCPayServer更新至最新版本btcpay-up.sh
:运行docker-compose up
btcpay-down.sh
:运行docker-compose down
btcpay-setup.sh
:更改服务器设置btcpay-clean.sh
:清除未使用的docker镜像. ./btcpay-setup.sh
:查看额外参数信息. ./btcpay-setup.sh -i
:设置您的BTCPayServerbtcpay-restart.sh
:重启您的BTCPayServer
幕后运作
生成的docker-compose
当您运行btcpay-setup.sh
时,您的环境变量将被build.sh(或build.ps1)用于生成适合您需求的docker-compose。完整选项列表请参见:环境变量
默认情况下,生成的文件为Generated/docker-compose.generated.yml
,由适用于您设置的相关Docker片段构建。
当前可用的BTCPAYGEN_ADDITIONAL_FRAGMENTS
包括:
- opt-save-storage:保留约1年的区块(BTC修剪至100 GB)
- opt-save-storage-s:保留约6个月的区块(BTC修剪至50 GB)
- opt-save-storage-xs:保留约3个月的区块(BTC修剪至25 GB)
- opt-save-storage-xxs:保留约2周的区块(BTC修剪至5 GB)(不支持闪电网络)
- opt-lnd-autocompact:激活LND数据库自动压缩
- opt-lnd-autopilot:在LND上激活自动驾驶(5个通道,分配60%)
- opt-lnd-keysend:在LND上激活keysend
- opt-lnd-wtclient:在LND上激活watchtower客户端,可使用
LND_WTCLIENT_SWEEP_FEE
覆盖默认10 sat/byte的正义交易费用 - opt-lnd-watchtower:激活LND watchtower RPC
- opt-save-memory:降低默认dbcache以延长同步时间(适用于内存小于2GB的机器)
- opt-more-memory:增加默认dbcache以加速同步(适用于内存约4GB的机器)
- opt-add-btcqbo:允许在Quickbooks上创建包含BTCPay Server支付方式的发票(更多信息请参见github仓库,此插件由JeffVandrewJr维护,更多内容请观看此视频)
- opt-add-librepatron:提供由BTCPay支持的自托管Patreon替代方案(更多信息请参见github仓库,此插件由JeffVandrewJr维护)
- opt-add-woocommerce:提供预装BTCPay Server插件的自托管woocommerce
- opt-add-tor:将BTCPayServer、Woocommerce、您的闪电节点作为隐藏服务暴露,并接受完整节点的onion peers。警告:此选项用于解决NAT和防火墙问题,并帮助保护客户隐私,但无法在针对您的攻击中保护您的隐私
- opt-add-btctransmuter:提供自托管的IFTTT风格加密服务,如法币结算(更多信息请参见github仓库)
- opt-txindex:若需为Bisq、DOJO等启用txindex=1,可在bitcoin.conf中设置
- opt-expose-unsafe:若需为Bisq、DOJO、Esplora等不安全地暴露bitcoind P2P端口8333。警告:仅在受信任的LAN或设置了特定主机白名单的防火墙规则下使用
- opt-add-tor-relay:提供非出口tor中继,确保端口9001可外部访问。请阅读运行tor中继的法律影响及运营中继所需的资源
- opt-add-electrumx:整合完整的ElectrumX服务器(来自官方来源)与BTCPay,使用BTCPay服务器的完整比特币节点以在使用自有Electrum钱包时实现完全隐私。您还可以在路由器等设备上开放端口50002至互联网,成为ElectrumX网络的一部分,帮助其他Electrum钱包用户连接。比特币选项
-txindex
对ElectrumX是必需的,此片段将在您的BTCPay服务器上自动启用,无需使用opt-txindex.yml片段 - opt-add-electrum-ps:将Electrum Personal Server (EPS)与BTCPay整合(EPS是ElectrumX服务器选项的单用户替代方案)。EPS也将使用BTCPay服务器的完整比特币节点以在使用自有Electrum钱包时实现完全隐私,仅供个人使用(即其他用户无法使用您的服务器验证交易)。此外,比特币选项
-txindex
对EPS不是必需的,可在修剪节点上运行(不同于ElectrumX)。首次启用EPS前需将您的XPUB/YPUB/ZPUB作为环境变量EPS_XPUB
添加(参见上文环境变量部分,详情请参见完整文档) - opt-add-electrum-bwt:整合Bitcoin Wallet Tracker Electrum服务器,采用类似于EPS的个人钱包索引模型。需设置
BWT_XPUB
为您的XPUB/YPUB/ZPUB(参见环境变量部分)。服务器仅在本地和通过onion服务可用 - opt-add-configurator:整合BTCPay Server Configurator以通过UI管理您的BTCPay部署,并轻松在其他地方进行新部署
- opt-add-pihole(参见文档)
- opt-add-ndlc(参见文档)
- opt-add-lightning-terminal:用于Lightning Terminal/LiT。由dennisreimann维护
- opt-add-mempool:用于Mempool。由dennisreimann维护
- opt-add-sphinxrelay:用于Sphinx Relay。由dennisreimann维护
- opt-add-tallycoin-connect:用于Tallycoin Connect。由dennisreimann维护
- opt-add-thunderhub:用于浏览器中的LND闪电节点管理器。由apotdevin维护
- opt-add-teos:用于The Eye Of Satoshi,一种BOLT13闪电瞭望塔。使用服务器或Tor上的端口9814连接
- opt-add-chatwoot:用于开源聊天支持系统。(参见文档)
- opt-add-zammad:用于Zammad,一种基于Web的开源帮助台/客户支持系统,具备通过电话、Facebook、Twitter、聊天和电子邮件等多种渠道管理客户沟通的功能
- opt-monero-expose:暴露monero节点的RPC端口127.0.0.1:18081以连接您自己的钱包。例如,使用ssh端口转发至您的计算机
- opt-add-fireflyiii(参见文档)
- opt-add-joinmarket(参见文档)
- opt-add-helipad:用于Podcastindex.org Helipad。需要LND
- opt-add-nostr-relay:用于Nostr Relay
- opt-add-cloudflared:轻松将您的本地服务器暴露于明网(参见文档)
- opt-add-torq:安装Torq节点管理应用程序。需要LND
- opt-add-snapdrop:安装Snapdrop。您可通过访问服务器的
/snapdrop
路径使用 - opt-add-ltcmweb:添加对Litecoin MWEB支付方式插件的支持服务
- opt-add-shopify:安装Shopify App Deployer。用于BTCPay Server Shopify插件
- opt-add-nolimits:从您的比特币节点中移除OP_RETURN限制和最低中继交易费用
您还可创建自己的自定义片段。
若您希望向BTCPAYGEN_ADDITIONAL_FRAGMENTS
添加选项并重新配置安装:
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="$BTCPAYGEN_ADDITIONAL_FRAGMENTS;opt-lnd-autopilot"
. btcpay-setup.sh -I
例如,若您希望在Generated/docker-compose.custom.yml
中支持btc
和ltc
,并使用nginx
和clightning
:
注:首次运行可能耗时较长,但后续运行将即刻完成。
在Windows上(在powershell中运行):
Invoke-Command {
$BTCPAYGEN_CRYPTO1="btc"
$BTCPAYGEN_CRYPTO2="ltc"
$BTCPAYGEN_REVERSEPROXY="nginx"
$BTCPAYGEN_LIGHTNING="clightning"
$BTCPAYGEN_SUBNAME="custom"
. .\build.ps1
}
在Linux上:
BTCPAYGEN_CRYPTO1="btc" \
BTCPAYGEN_CRYPTO2="ltc" \
BTCPAYGEN_REVERSEPROXY="nginx" \
BTCPAYGEN_LIGHTNING="clightning" \
BTCPAYGEN_SUBNAME="custom" \
./build.sh
接下来,您需要为Generated/docker-compose.custom.yml
配置运行时环境变量:
再次说明,btcpay-setup.sh
的作用是什么?
btcpay-setup.sh
是一个实用工具,执行以下操作:
- 确保您的系统已安装docker和docker-compose
- 通过
./build.sh
生成docker-compose - 设置环境文件以配置您的docker-compose
- 设置环境变量,以便工具集中描述的工具能够正常工作
- 将这些工具的符号链接添加至
/usr/bin
- 通过upstart或systemd确保BTCPay在重启时自动启动
- 通过docker-compose启动BTCPay
btcpay-setup.sh
生成的文件概览
/etc/profile.d/btcpay-env.sh
确保您登录时环境变量正确设置,以便使用工具:
export BTCPAYGEN_OLD_PREGEN="false"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_CRYPTO2=""
export BTCPAYGEN_CRYPTO3=""
export BTCPAYGEN_CRYPTO4=""
export BTCPAYGEN_CRYPTO5=""
export BTCPAYGEN_CRYPTO6=""
export BTCPAYGEN_CRYPTO7=""
export BTCPAYGEN_CRYPTO8=""
export BTCPAYGEN_CRYPTO9=""
export BTCPAYGEN_LIGHTNING="clightning"
export BTCPAYGEN_REVERSEPROXY="nginx"
export BTCPAYGEN_ADDITIONAL_FRAGMENTS=""
export BTCPAY_DOCKER_COMPOSE="/var/lib/waagent/custom-script/download/0/btcpayserver-docker/Production/docker-compose.generated.yml"
export BTCPAY_BASE_DIRECTORY="/var/lib/waagent/custom-script/download/0"
export BTCPAY_ENV_FILE="/var/lib/waagent/custom-script/download/0/.env"
export BTCPAY_HOST_SSHKEYFILE="/root/.ssh/id_rsa_btcpay"
if cat $BTCPAY_ENV_FILE &> /dev/null; then
export $(grep -v '^#' "$BTCPAY_ENV_FILE" | xargs)
fi
/etc/systemd/system/btcpayserver.service
确保您可通过systemctl
控制btcpay,并在重启时自动启动BTCPayServer:
[Unit]
Description=BTCPayServer service
After=docker.service network-online.target
Requires=docker.service network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd "$BTCPAY_BASE_DIRECTORY/btcpayserver-docker" && . helpers.sh && btcpay_up'
ExecStop=/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd "$BTCPAY_BASE_DIRECTORY/btcpayserver-docker" && . helpers.sh && btcpay_down'
ExecReload=/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd "$BTCPAY_BASE_DIRECTORY/btcpayserver-docker" && . helpers.sh && btcpay_restart'
[Install]
WantedBy=multi-user.target
.env
($BTCPAY_ENV_FILE
)包含传递给docker-compose管理的容器的环境变量:
BTCPAY_HOST=btcpay.EXAMPLE.com
ACME_CA_URI=production
NBITCOIN_NETWORK=mainnet
[email protected]
BTCPAY_SSHTRUSTEDFINGERPRINTS=SHA256:eSCD7NtQ/Q6IBl2iRB9caAQ3lDZd8s8iUL6SdeNnhpA
BTCPAY_SSHKEYFILE=/datadir/id_rsa
如何向BTCPayServer添加替代币?
- 在NBitcoin、NBxplorer和BTCPayServer中添加对您的加密货币的支持。(参考其他货币的示例)
- 创建您自己的docker镜像(BTC示例)
- 创建docker-compose片段(BTC示例)
- 添加您的
CryptoDefinition
(BTC示例)
build.sh
使用docker hub上的预构建docker-compose generator
镜像。若您修改了docker-compose generator
的源代码(例如CryptoDefinition
BTC示例),需通过设置环境变量BTCPAYGEN_DOCKER_IMAGE
为btcpayserver/docker-compose-generator:local
来配置build.sh
使用您自己的镜像。
cd docker-compose-generator
BTCPAYGEN_DOCKER_IMAGE="btcpayserver/docker-compose-generator:local"
或在powershell中:
cd docker-compose-generator
$BTCPAYGEN_DOCKER_IMAGE="btcpayserver/docker-compose-generator:local"
然后运行./build.sh
或. .\build.ps1
。
这将在Generated
文件夹中生成您的docker-compose,您可随后运行并测试。
请注意,BTCPayServer开发人员不会花费过多时间测试您的镜像,请确保其正常工作。
支持
镜像 | 版本 | x64 | arm32v7 | arm64v8 | 链接 |
---|---|---|---|---|---|
以下是关于BTCPayServer及其相关Docker镜像的详细支持列表与配置指南,涵盖了多个加密货币及相关工具的版本信息与架构支持情况: |
镜像名称 | 版本 | x64 | arm32v7 | arm64v8 | 链接 |
---|---|---|---|---|---|
btcpayserver/docker-compose-generator | 最新 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/lightning | v25.02 | ![]() |
![]() |
![]() |
Github - DockerHub |
shahanafarooqui/rtl | v0.15.4 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/lnd | v0.18.5-beta | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/bitcoin | 27.1 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/bitcoinknots | 28.1 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/btcpayserver | 2.1.1 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/monero | 0.18.3.4 | ![]() |
![]() |
![]() |
Github - DockerHub |
nicolasdorier/nbxplorer | 2.5.26 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/letsencrypt-nginx-proxy-companion | 2.2.9-2 | ![]() |
![]() |
![]() |
Github - DockerHub |
nginx | 1.25.3-bookworm | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/docker-gen | 0.10.7 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/btctransmuter | 0.0.59 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/cloudflared | 2024.8.2-4 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/btcpayserver-configurator | 0.0.21 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/eps | 0.2.2 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/joinmarket | 0.9.10 | ![]() |
![]() |
![]() |
Github - DockerHub |
nicolasdorier/ndlc-cli | 1.0.1 | ![]() |
![]() |
![]() |
Github - DockerHub |
在Windows上的配置方法(请在PowerShell中运行):
Invoke-Command {
$BTCPAYGEN_CRYPTO1="btc"
$BTCPAYGEN_CRYPTO2="ltc"
$BTCPAYGEN_REVERSEPROXY="nginx"
$BTCPAYGEN_LIGHTNING="clightning"
$BTCPAYGEN_SUBNAME="custom"
. .\build.ps1
}
在Linux上的配置方法:
BTCPAYGEN_CRYPTO1="btc" \
BTCPAYGEN_CRYPTO2="ltc" \
BTCPAYGEN_REVERSEPROXY="nginx" \
BTCPAYGEN_LIGHTNING="clightning" \
BTCPAYGEN_SUBNAME="custom" \
./build.sh
接下来,您需要为Generated/docker-compose.custom.yml
配置运行时环境变量:
btcpay-setup.sh
的作用概述
btcpay-setup.sh
是一个实用工具,其功能如下:
- 确保您的系统已安装Docker和Docker-Compose。
- 通过
./build.sh
生成Docker-Compose配置文件。 - 设置环境文件以配置您的Docker-Compose。
- 配置环境变量,以便工具能够正常运行。
- 将这些工具的符号链接添加到
/usr/bin
中。 - 通过Upstart或Systemd确保BTCPay在重启时自动启动。
- 通过Docker-Compose启动BTCPay。
btcpay-setup.sh
生成的文件概览
/etc/profile.d/btcpay-env.sh
:确保您登录时环境变量正确设置,以便使用相关工具。/etc/systemd/system/btcpayserver.service
:确保您可以通过systemctl
控制BTCPay,并保证BTCPayServer在重启时自动启动。.env
($BTCPAY_ENV_FILE
):包含传递给Docker-Compose管理的容器的环境变量。
如何为BTCPayServer添加替代币(Altcoin)?
- 在NBitcoin、NBxplorer和BTCPayServer中添加对您加密货币的支持(可参考其他币种的示例)。
- 创建您自己的Docker镜像(比特币示例)。
- 创建Docker-Compose片段(比特币示例)。
- 添加您的
CryptoDefinition
(比特币示例)。
build.sh
使用的是Docker Hub上预构建的docker-compose generator
镜像。如果您修改了docker-compose generator
的源代码(例如CryptoDefinition
),则需要通过设置环境变量BTCPAYGEN_DOCKER_IMAGE
为btcpayserver/docker-compose-generator:local
来配置build.sh
使用您自己的镜像。
cd docker-compose-generator
BTCPAYGEN_DOCKER_IMAGE="btcpayserver/docker-compose-generator:local"
或在PowerShell中:
cd docker-compose-generator
$BTCPAYGEN_DOCKER_IMAGE="btcpayserver/docker-compose-generator:local"
然后运行./build.sh
或. .\build.ps1
。这将在Generated
文件夹中生成您的Docker-Compose配置文件,您可以随后运行并测试。
请注意,BTCPayServer开发人员不会花费过多时间测试您的镜像,因此请确保其正常运行。以下是关于Docker镜像及其相关信息的详细列表,涵盖了多个项目及其版本、支持的架构、以及对应的代码仓库和镜像仓库链接,旨在为用户提供全面的技术参考:
项目名称 | 版本 | AMD64支持 | ARM32支持 | ARM64支持 | 代码仓库与镜像仓库 |
---|---|---|---|---|---|
dgarage/ndlc | 1.0.1 | ![]() |
![]() |
![]() |
Github - DockerHub |
pihole/pihole | 2025.03.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/shopify-app-deployer | 1.4 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/snapdrop | 1.2 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/tor | 0.4.8.10 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/woocommerce | 3.1.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
acinq/phoenixd | 0.6.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/postgres | 13.18 | ![]() |
![]() |
![]() |
Github - DockerHub |
kamigawabul/btglnd | 最新 | ![]() |
![]() |
![]() |
Github - DockerHub |
kamigawabul/docker-bitcoingold | 0.15.2 | ![]() |
![]() |
![]() |
Github - DockerHub |
acinq/eclair | release-0.7.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
chekaz/docker-bitcoinplus | 2.7.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
dalijolijo/docker-bitcore | 0.90.9.10 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/dash | 22.0.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/dogecoin | 1.14.7 | ![]() |
![]() |
![]() |
Github - DockerHub |
chekaz/docker-feathercoin | 0.16.3 | ![]() |
![]() |
![]() |
Github - DockerHub |
groestlcoin/lightning | v23.05 | ![]() |
![]() |
![]() |
Github - DockerHub |
groestlcoin/groestlcoin-lightning-charge | version-0.4.22 | ![]() |
![]() |
![]() |
Github - DockerHub |
groestlcoin/groestlcoin-spark | version-0.2.16 | ![]() |
![]() |
![]() |
Github - DockerHub |
groestlcoin/eclair | v0.6.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
groestlcoin/lnd | v0.10.0-grs | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/groestlcoin | 25.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/elements | 23.2.3 | ![]() |
![]() |
![]() |
Github - DockerHub |
btcpayserver/litecoin | 0.21.2.1-2 | ![]() |
![]() |
![]() |
Github - DockerHub |
wakiyamap/docker-monacoin | 0.20.2 | ![]() |
![]() |
![]() |
Github - DockerHub |
redis | 6.2.2-buster | ![]() |
![]() |
![]() |
Github - DockerHub |
jvandrew/btcqbo | 0.3.36 | ![]() |
![]() |
![]() |
Github - DockerHub |
shesek/bwt | 0.2.2-electrum | ![]() |
![]() |
![]() |
Github - DockerHub |
chatwoot/chatwoot | v1.7.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
lukechilds/electrumx | 最新 | ![]() |
![]() |
![]() |
Github - DockerHub |
fireflyiii/core | 最新 | ![]() |
![]() |
![]() |
Github - DockerHub |
podcastindexorg/podcasting20-helipad | v0.1.10 | ![]() |
![]() |
![]() |
Github - DockerHub |
jvandrew/librepatron | 0.7.39 | ![]() |
![]() |
![]() |
Github - DockerHub |
jvandrew/isso | atron.22 | ![]() |
![]() |
![]() |
Github - DockerHub |
lightninglabs/lightning-terminal | v0.14.1-alpha-path-prefix | ![]() |
![]() |
![]() |
Github - DockerHub |
hectorchu1/mwebd | 最新 | ![]() |
![]() |
![]() |
Github - DockerHub |
mempool/frontend | v2.5.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
mempool/backend | v2.5.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
mariadb | 10.11 | ![]() |
![]() |
![]() |
Github - DockerHub |
kukks/nnostr-relay | v0.0.23 | ![]() |
![]() |
![]() |
Github - DockerHub |
sphinxlightning/sphinx-relay | v2.2.9 | ![]() |
![]() |
![]() |
Github - DockerHub |
djbooth007/tallycoin_connect | v1.8.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
benjaminchodroff/rust-teos | 最新 | ![]() |
![]() |
![]() |
Github - DockerHub |
apotdevin/thunderhub | base-v0.13.31 | ![]() |
![]() |
![]() |
Github - DockerHub |
lncapital/torq | 0.20.3 | ![]() |
![]() |
![]() |
Github - DockerHub |
timescale/timescaledb | latest-pg14 | ![]() |
![]() |
![]() |
Github - DockerHub |
zammad/zammad-docker-compose | zammad-postgresql-3.4.0-4 | ![]() |
![]() |
![]() |
Github - DockerHub |
memcached | 1.5.22-alpine | ![]() |
![]() |
![]() |
Github - DockerHub |
traefik | v2.6 | ![]() |
![]() |
![]() |
Github - DockerHub |
chekaz/docker-trezarcoin | 0.13.0 | ![]() |
![]() |
![]() |
Github - DockerHub |
romanornr/docker-viacoin | 0.15.2 | ![]() |
![]() |
![]() |
Github - DockerHub |
常见问题解答
如何调整我的运行环境?
以管理员身份执行 . btcpay-setup.sh
命令,此操作将显示系统所期望的环境变量设置。例如,若您已支持 btc
和 ltc
,并希望新增支持 btg
,可按以下步骤操作:
export BTCPAYGEN_CRYPTO3='btg'
. btcpay-setup.sh -I
若我在 btcpay-setup.sh
脚本推出之前(即2018年5月17日之前)已完成部署,是否可以迁移至这一新系统?
是的,请运行以下命令进行更新:
sudo su -
cd $DOWNLOAD_ROOT/btcpayserver-docker
git checkout master
git pull
git checkout 9acb5d8067cb5c46f59858137feb699b41ac9f19
btcpay-update.sh
. ./btcpay-setup.sh -I
git checkout master
btcpay-update.sh
exit
在Windows上遇到错误:Cannot create container for service docker: Mount denied
?
若您遇到如下错误:
Cannot create container for service docker: b'Mount denied:\nThe source path "\\var\\run\\docker.sock:/var/run/docker.sock"\nis not a valid Windows path'
。
请在PowerShell中运行以下命令:
$Env:COMPOSE_CONVERT_WINDOWS_PATHS=1
随后,执行docker-compose -f EXAMPLE.yml up
。
此问题源于Docker for Windows,并已在GitHub上进行跟踪。
如何修剪我的节点?
以下命令将您的比特币全节点修剪至最大100GB(区块数据):
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage"
. ./btcpay-setup.sh -I
其他选项可在此处文档中查看。
如何自定义生成的docker-compose文件?
在某些情况下,您可能希望更详细地定制您的环境。虽然可以手动修改Generated/docker-compose.generated.yml
,但下次运行btcpay-update.sh
时,您的更改将被覆盖。
幸运的是,您可以利用BTCPAYGEN_ADDITIONAL_FRAGMENTS
来实现!
例如,让我们启用修剪至60GB:
首先,将opt-save-storage复制到docker片段文件夹中,命名为opt-save-storage.custom.yml
。**重要提示:**文件名必须以.custom.yml
结尾,否则在运行btcpay-update.sh
时会产生git冲突。
根据您的需求修改新的opt-save-storage.custom.yml
文件:
@@ -14,8 +14,7 @@ version: "3"
services:
bitcoind:
environment:
- BITCOIN_EXTRA_ARGS: prune=100000
+ BITCOIN_EXTRA_ARGS: prune=60000
然后进行设置:
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="$BTCPAYGEN_ADDITIONAL_FRAGMENTS;opt-save-storage.custom"
. ./btcpay-setup.sh -I
是否可以在除80和443以外的端口上运行BTCPay Server?
您可以通过设置环境变量REVERSEPROXY_HTTP_PORT
和REVERSEPROXY_HTTPS_PORT
来更改HTTP和HTTPS的端口。这在主机上的80和443端口已被占用,或您希望通过现有Web代理卸载SSL终止时非常有用。
当您将REVERSEPROXY_HTTP_PORT
设置为非80端口时,内置的Let’s Encrypt证书将无法工作,因为Let’s Encrypt会尝试通过互联网连接到您域名上的80端口来验证您的SSL证书请求。此验证请求必须能够到达BTCPay Server才能获得证书。
若需在不同端口上运行,最好使用另一个Web代理终止SSL并转发流量。
是否可以卸载HTTPS终止?
可以。请参阅文档。
如何备份我的BTCPay Server?
请参阅我们文档中的备份与恢复指南。
为向后兼容:点击此处查看旧backup.sh流程的描述
:::warning
请考虑切换到新的备份与恢复流程,因为backup.sh
将不再维护。
:::
我们提供了一个备份脚本,用于导出数据库并保存重要文件:
cd "$BTCPAY_BASE_DIRECTORY/btcpayserver-docker"
./backup.sh
这会将备份本地保存为/var/lib/docker/volumes/backup_datadir/_data/backup.tar.gz
。
以下是自定义备份名称和位置的选项:
BACKUP_TIMESTAMP=true
以日期时间作为文件名的一部分保存备份,避免备份被覆盖。BACKUP_PROVIDER=SCP
将备份远程保存,需要额外的SCP_TARGET
环境变量(见下文)。BACKUP_PROVIDER=Dropbox
将备份保存到Dropbox,需要额外的DROPBOX_TOKEN
环境变量(见下文)。
cd "$BTCPAY_BASE_DIRECTORY/btcpayserver-docker"
# 使用自定义文件名和时间戳备份:
BACKUP_TIMESTAMP=true ./backup.sh
# 通过SCP备份:
BACKUP_PROVIDER=SCP SCP_TARGET=myhost:backups/btcpay ./backup.sh
# 备份到Dropbox:
BACKUP_PROVIDER=Dropbox DROPBOX_TOKEN=myDropboxToken ./backup.sh
您也可以选择仅导出数据库。此选项无需停止和重启docker容器:
cd "$BTCPAY_BASE_DIRECTORY/btcpayserver-docker"
./backup.sh --only-db
如何连接到数据库?
在服务器上,您可以通过以postgres用户身份使用psql
连接来开启数据库会话:
docker exec -ti $(docker ps -a -q -f "name=postgres_1") psql -U postgres
然后,在psql
中,您可以选择一个数据库并与表进行交互:
# 列出数据库
\l
# 连接到数据库
\c btcpayservermainnet
# 列出表
\dt
# 列出用户
SELECT "Id", "Email" FROM "AspNetUsers";
# 结束会话
\q
BTCPay Server的主要数据库表属于public
模式。插件有自己的模式,以插件命名。
默认情况下,仅显示public
模式的表。如果您也想查看并选择插件表,需要扩展搜索路径:
# 列出插件模式
SELECT * FROM pg_catalog.pg_namespace WHERE nspname LIKE 'BTCPayServer.%';
# 扩展搜索路径
SET search_path TO "BTCPayServer.Plugins.MyPlugin", public;
# 表列表现在也显示MyPlugin的表
\dt
如何升级我的BTCPay Server Docker?
运行脚本./btcpay-update.sh
,耐心等待您的服务器完成升级。