如何安装BTCPay Server?

今日起接受比特币支付,使用BTCPay Server!本指南将引领您完成安装之旅。

引言

尽管我们的指南详细介绍了如何在Azure或Lunanode上通过一键式操作完成BTCPay Server的安装,但BTCPay Server的适用范围远不止于此。

以下内容将为您揭示如何在任何支持Docker的环境中轻松部署BTCPay Server。

系统架构

如图所示,BTCPay依赖于多个基础设施组件,主要包括:

  • 轻量级区块浏览器(NBXplorer),
  • 数据库(PostgreSQL),
  • 完整节点(例如Bitcoin Core)。

若您支持的不仅仅是标准比特币交易,还可能涉及更多依赖项,例如:

完整安装指南(面向技术用户)

您亦可选择在个人机器或VPS实例上安装BTCPay Server。

官方支持的安装方式基于Docker(以及Docker-Compose)。

首先,确保您拥有指向主机的域名A记录,且端口44380对外开放。若需使用闪电网络,则端口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的内容,请观看此视频。

Docker自动化构建

环境变量

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:使用的网络类型(例如mainnettestnetregtest,默认:mainnet
  • LIGHTNING_ALIAS:若使用闪电网络节点,可为其设置别名
  • BTCPAYGEN_CRYPTO1:支持的首种加密货币(例如btcltc,默认:btc
  • BTCPAYGEN_CRYPTO2:支持的第二种加密货币(例如btcltc,默认:(空)
  • BTCPAYGEN_CRYPTON:支持的第N种加密货币,N最大为9(例如btcltc,默认:(空)
  • BTCPAYGEN_REVERSEPROXY:指定使用的反向代理;NGinx支持HTTPS(例如nginxtraefik(空),默认:nginx
  • BTCPAYGEN_LIGHTNING:使用的闪电网络实现(例如clightninglndphoenixd,默认:(空)
  • 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_WALLETBWT_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:设置您的BTCPayServer
  • btcpay-restart.sh:重启您的BTCPayServer

幕后运作

生成的docker-compose

当您运行btcpay-setup.sh时,您的环境变量将被build.sh(或build.ps1)用于生成适合您需求的docker-compose。完整选项列表请参见:环境变量

默认情况下,生成的文件为Generated/docker-compose.generated.yml,由适用于您设置的相关Docker片段构建。

当前可用的BTCPAYGEN_ADDITIONAL_FRAGMENTS包括:

您还可创建自己的自定义片段

若您希望向BTCPAYGEN_ADDITIONAL_FRAGMENTS添加选项并重新配置安装:

export BTCPAYGEN_ADDITIONAL_FRAGMENTS="$BTCPAYGEN_ADDITIONAL_FRAGMENTS;opt-lnd-autopilot"
. btcpay-setup.sh -I

例如,若您希望在Generated/docker-compose.custom.yml中支持btcltc,并使用nginxclightning

注:首次运行可能耗时较长,但后续运行将即刻完成。

在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是一个实用工具,执行以下操作:

  1. 确保您的系统已安装docker和docker-compose
  2. 通过./build.sh生成docker-compose
  3. 设置环境文件以配置您的docker-compose
  4. 设置环境变量,以便工具集中描述的工具能够正常工作
  5. 将这些工具的符号链接添加至/usr/bin
  6. 通过upstart或systemd确保BTCPay在重启时自动启动
  7. 通过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添加替代币?

  1. NBitcoinNBxplorerBTCPayServer中添加对您的加密货币的支持。(参考其他货币的示例)
  2. 创建您自己的docker镜像(BTC示例
  3. 创建docker-compose片段(BTC示例
  4. 添加您的CryptoDefinitionBTC示例

build.sh使用docker hub上的预构建docker-compose generator镜像。若您修改了docker-compose generator的源代码(例如CryptoDefinitionBTC示例),需通过设置环境变量BTCPAYGEN_DOCKER_IMAGEbtcpayserver/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 最新 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/lightning v25.02 :check_mark: :check_mark: :check_mark: Github - DockerHub
shahanafarooqui/rtl v0.15.4 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/lnd v0.18.5-beta :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/bitcoin 27.1 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/bitcoinknots 28.1 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/btcpayserver 2.1.1 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/monero 0.18.3.4 :check_mark: :check_mark: :check_mark: Github - DockerHub
nicolasdorier/nbxplorer 2.5.26 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/letsencrypt-nginx-proxy-companion 2.2.9-2 :check_mark: :check_mark: :check_mark: Github - DockerHub
nginx 1.25.3-bookworm :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/docker-gen 0.10.7 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/btctransmuter 0.0.59 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/cloudflared 2024.8.2-4 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/btcpayserver-configurator 0.0.21 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/eps 0.2.2 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/joinmarket 0.9.10 :check_mark: :check_mark: :check_mark: Github - DockerHub
nicolasdorier/ndlc-cli 1.0.1 :check_mark: :check_mark: :check_mark: 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配置运行时环境变量:

  • 如果您使用的是NGinx,请参阅此文档
  • 如果您未使用NGinx,请参阅此文档

btcpay-setup.sh的作用概述

btcpay-setup.sh是一个实用工具,其功能如下:

  1. 确保您的系统已安装Docker和Docker-Compose。
  2. 通过./build.sh生成Docker-Compose配置文件。
  3. 设置环境文件以配置您的Docker-Compose。
  4. 配置环境变量,以便工具能够正常运行。
  5. 将这些工具的符号链接添加到/usr/bin中。
  6. 通过Upstart或Systemd确保BTCPay在重启时自动启动。
  7. 通过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)?

  1. NBitcoinNBxplorerBTCPayServer中添加对您加密货币的支持(可参考其他币种的示例)。
  2. 创建您自己的Docker镜像(比特币示例)。
  3. 创建Docker-Compose片段(比特币示例)。
  4. 添加您的CryptoDefinition比特币示例)。

build.sh使用的是Docker Hub上预构建的docker-compose generator镜像。如果您修改了docker-compose generator的源代码(例如CryptoDefinition),则需要通过设置环境变量BTCPAYGEN_DOCKER_IMAGEbtcpayserver/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 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
pihole/pihole 2025.03.0 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/shopify-app-deployer 1.4 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/snapdrop 1.2 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/tor 0.4.8.10 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/woocommerce 3.1.0 :check_mark: :cross_mark: :check_mark: Github - DockerHub
acinq/phoenixd 0.6.0 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/postgres 13.18 :check_mark: :check_mark: :check_mark: Github - DockerHub
kamigawabul/btglnd 最新 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
kamigawabul/docker-bitcoingold 0.15.2 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
acinq/eclair release-0.7.0 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
chekaz/docker-bitcoinplus 2.7.0 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
dalijolijo/docker-bitcore 0.90.9.10 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
btcpayserver/dash 22.0.0 :check_mark: :cross_mark: :check_mark: Github - DockerHub
btcpayserver/dogecoin 1.14.7 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
chekaz/docker-feathercoin 0.16.3 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
groestlcoin/lightning v23.05 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
groestlcoin/groestlcoin-lightning-charge version-0.4.22 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
groestlcoin/groestlcoin-spark version-0.2.16 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
groestlcoin/eclair v0.6.0 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
groestlcoin/lnd v0.10.0-grs :check_mark: :cross_mark: :cross_mark: Github - DockerHub
btcpayserver/groestlcoin 25.0 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/elements 23.2.3 :check_mark: :check_mark: :check_mark: Github - DockerHub
btcpayserver/litecoin 0.21.2.1-2 :check_mark: :check_mark: :check_mark: Github - DockerHub
wakiyamap/docker-monacoin 0.20.2 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
redis 6.2.2-buster :check_mark: :cross_mark: :cross_mark: Github - DockerHub
jvandrew/btcqbo 0.3.36 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
shesek/bwt 0.2.2-electrum :check_mark: :check_mark: :check_mark: Github - DockerHub
chatwoot/chatwoot v1.7.0 :check_mark: :check_mark: :check_mark: Github - DockerHub
lukechilds/electrumx 最新 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
fireflyiii/core 最新 :check_mark: :check_mark: :check_mark: Github - DockerHub
podcastindexorg/podcasting20-helipad v0.1.10 :check_mark: :check_mark: :check_mark: Github - DockerHub
jvandrew/librepatron 0.7.39 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
jvandrew/isso atron.22 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
lightninglabs/lightning-terminal v0.14.1-alpha-path-prefix :check_mark: :cross_mark: :check_mark: Github - DockerHub
hectorchu1/mwebd 最新 :check_mark: :check_mark: :check_mark: Github - DockerHub
mempool/frontend v2.5.0 :check_mark: :check_mark: :check_mark: Github - DockerHub
mempool/backend v2.5.0 :check_mark: :check_mark: :check_mark: Github - DockerHub
mariadb 10.11 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
kukks/nnostr-relay v0.0.23 :check_mark: :check_mark: :check_mark: Github - DockerHub
sphinxlightning/sphinx-relay v2.2.9 :check_mark: :check_mark: :check_mark: Github - DockerHub
djbooth007/tallycoin_connect v1.8.0 :check_mark: :check_mark: :check_mark: Github - DockerHub
benjaminchodroff/rust-teos 最新 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
apotdevin/thunderhub base-v0.13.31 :check_mark: :check_mark: :check_mark: Github - DockerHub
lncapital/torq 0.20.3 :check_mark: :check_mark: :check_mark: Github - DockerHub
timescale/timescaledb latest-pg14 :check_mark: :check_mark: :check_mark: Github - DockerHub
zammad/zammad-docker-compose zammad-postgresql-3.4.0-4 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
memcached 1.5.22-alpine :check_mark: :cross_mark: :cross_mark: Github - DockerHub
traefik v2.6 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
chekaz/docker-trezarcoin 0.13.0 :check_mark: :cross_mark: :cross_mark: Github - DockerHub
romanornr/docker-viacoin 0.15.2 :check_mark: :cross_mark: :cross_mark: Github - DockerHub

常见问题解答

如何调整我的运行环境?

以管理员身份执行 . btcpay-setup.sh 命令,此操作将显示系统所期望的环境变量设置。例如,若您已支持 btcltc,并希望新增支持 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_PORTREVERSEPROXY_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,耐心等待您的服务器完成升级。