---
title: "在 VPS 上自建 BTCPay Server：配置、安装与备份 | OffshoreServ"
description: "在 VPS 上自建 BTCPay Server：修剪节点所需的硬盘与内存、适合的套餐、官方 Docker 安装、闪电网络、备份与安全。"
url: https://offshoreserv.com/zh/docs/vps/btcpay-server
lang: zh-Hans
updated: 2026-09-26
source: HTML page at the url above (canonical); this is its Markdown version
---

知识库 · VPS

# 如何在 VPS 上自托管 BTCPay Server

在 VPS 上自托管 BTCPay Server：修剪节点的需求、适合的套餐、在 Ubuntu 24.04 上的官方 Docker 安装、闪电网络、备份与安全。

更新于 2026年9月26日 阅读约 10 分钟

本指南要点

- 对于启用修剪、仅支持比特币的服务器，BTCPay 给出的起步配置是 2 个 vCPU、4 GB 内存和 50 GB SSD，我们的 Cutter 套餐即可满足。
- 将域名指向服务器，开放 80 和 443 端口，然后以 source 方式运行官方的 btcpay-setup.sh 脚本。
- 网站能够打开后立即注册：第一个账户将成为服务器管理员。
- 连接硬件钱包或 xpub（扩展公钥），这样服务器永远不会持有您的助记词。
- 运行 btcpay-backup.sh，将归档文件复制到服务器之外，并单独备份闪电网络通道。

VPS8 个章节

要自托管 BTCPay Server，您需要一台足以运行修剪比特币节点的 Linux VPS（BTCPay 的起步配置：2 个 vCPU、4 GB 内存和 50 GB SSD）、一个指向该服务器的域名，并开放 80 和 443 端口。使用官方的 btcpayserver-docker 脚本进行安装；根据 BTCPay 文档，首次同步需要一到五天。

以下步骤使用一台运行 Ubuntu 24.04 LTS 或 Debian 12 的 [离岸 VPS](https://offshoreserv.com/zh/offshore-vps)，并具有 root 权限，如 [快速入门](https://offshoreserv.com/zh/docs/getting-started) 所述。请将 `btcpay.example.com` 替换为您的主机名，将 `SERVER_IP` 替换为您服务器的 IPv4 地址。

> 网站能够打开后请立即注册账户。在新的 BTCPay Server 上创建的第一个账户将成为其管理员。

## BTCPay Server 的配置要求与合适的套餐

[官方 Docker 部署](https://github.com/btcpayserver/btcpayserver-docker) 会在一台机器上运行 BTCPay Server、PostgreSQL、NBXplorer、Bitcoin Core、带自动 HTTPS 的 Nginx 以及 Tor。BTCPay Server 的修剪节点会下载并校验每一个区块，但只保留最近的区块，上限为所选预设的目标值。BTCPay 的 [服务器规格说明](https://docs.btcpayserver.org/Docker/specs/) 按以下方式估算硬盘空间：主机系统 10 GB，比特币的链状态（chainstate）15 GB，再加上该目标值：

| 部署方式 | 修剪预设（保留的区块量） | 按 BTCPay 公式估算的硬盘空间 | 适合的套餐 | 每月价格 |
| --- | --- | --- | --- | --- |
| 测试用，仅比特币 | `opt-save-storage-xxs`（5 GB） | 30 GB | Sloop：1 个 vCPU、2 GB 内存、40 GB NVMe | $3.49 |
| 网店，仅比特币（BTCPay 的起步配置） | `opt-save-storage-xs`（25 GB） | 50 GB | Cutter：2 个 vCPU、4 GB、70 GB | $5.49 |
| 比特币和闪电网络 | `opt-save-storage-s`（50 GB） | 75 GB | Schooner：4 个 vCPU、8 GB、160 GB | $12.49 |
| 闪电网络，业务较繁忙的商店 | `opt-save-storage`（100 GB） | 125 GB | Brigantine：6 个 vCPU、16 GB、240 GB | $19.99 |
| 比特币和门罗币 | 比特币同上；门罗币默认启用修剪 | 250 GB 及以上 | Frigate：12 个 vCPU、32 GB、500 GB | $47.99 |
| 未修剪节点 | 无 | 约 771 GB 区块数据，仍在增长 | 独立服务器，2 × 1 TB NVMe 或更高配置 | $97.49 起 |

以上均为未留余量的数值：BTCPay 建议预留余量，而这里的每个套餐都至少还有 10 GB 富余。Sloop 低于 4 GB、2 核的起步配置，不过 BTCPay 的 [部署常见问题](https://docs.btcpayserver.org/FAQ/Deployment/) 仍将 2 GB 列为最低要求；Dinghy（1 GB、25 GB）则低于所有文档记载的最低要求。在合理使用前提下不限流量，首次下载整条区块链也包括在内。

### 何时需要未修剪节点

交易索引（`opt-txindex`）、ElectrumX 和内置的 Mempool 浏览器需要完整的区块链：根据 [blockchain.com 的图表](https://www.blockchain.com/explorer/charts/blocks-size)，截至 2026年9月25日，区块数据约为 771 GB，这还不包括撤销文件和索引（Bitcoin Core 的 [下载页面](https://bitcoincore.org/en/download/) 仍写着约 600 GB，另加每月 5 至 10 GB）。没有任何 VPS 套餐能容纳这些数据，即便是 Flagship 的 640 GB 也不够。在配备 2 × 1 TB NVMe 的 [独立服务器](https://offshoreserv.com/zh/offshore-dedicated-servers) 上，例如 Ryzen 7 7700（$97.49），RAID 1 可提供 1 TB，但几乎没有增长空间；RAID 0 可提供 2 TB，但没有冗余。Ryzen 9 7950X（$175.99）和 EPYC 7402P（$211.99）配备 2 × 1.92 TB，足以组建 RAID 1。

### BTCPay 闪电网络：Core Lightning、LND 还是 Phoenixd

[闪电网络为可选项](https://docs.btcpayserver.org/Docker/lightning/)：`BTCPAYGEN_LIGHTNING` 用于选择 `clightning`（Core Lightning）、`lnd` 或 `phoenixd`。Core Lightning 和 LND 会为对等节点开放 TCP 9735 端口；Phoenixd 不开放任何端口。BTCPay 没有给出各实现的内存需求，但闪电网络会增加一个需要始终在线的服务，还需要管理流动性，备份要求也更严格。使用闪电网络时请避免 5 GB 预设；BTCPay 的常见问题要求 80 GB 存储空间。ThunderHub 等应用需要 LND。如需稍后添加，请导出该变量并再次 source 安装脚本，如第 3 步所示。收款还需要入站流动性：即由他人或付费服务商向您的节点开设的通道。

## 为什么要在 VPS 上自托管 BTCPay Server

BTCPay Server 的托管有三种形式：由第三方托管商用一个实例服务众多商家、在家中的机器上运行，或使用您自己的服务器。BTCPay 的 [第三方托管页面](https://docs.btcpayserver.org/Deployment/ThirdPartyHosting/) 解释了第一种方式的风险：托管商的节点可以监听您的交易，恶意托管商可能运行经过篡改的 BTCPay，把您的 xpub 换成它自己的，而且您应当假定，它可能掌握您使用情况的全部细节。家用服务器则会暴露您家中的 IP 地址。在 VPS 上运行 BTCPay Server 可以同时避免这两种问题：由您选择版本、掌握存有账单的数据库，款项也会直接进入您的钱包。

## 离岸、无需 KYC 的主机服务商能改变什么，不能改变什么

能改变的是：我们的账户只需邮箱地址和密码，别无其他；您可以从自己的钱包用比特币、以太坊、门罗币、泰达币（USDT）或 Solana 付款，无需银行卡或证件。[无需 KYC 的 VPS](https://offshoreserv.com/zh/no-kyc-vps) 意味着您的收款服务器背后不留任何身份证件：可以像购买 [比特币 VPS](https://offshoreserv.com/zh/bitcoin-vps) 那样用 BTC 付款，也可以通过 [门罗币 VPS](https://offshoreserv.com/zh/monero-vps) 用 XMR 私密付款。您还可以自行选择适用七个国家中哪一国的法律。不能改变的是：

- **您的 IP 地址和主机名是公开的：** 每位打开账单的顾客都会连接到它们。
- **比特币是公开的：** 每张账单都会使用一个新地址，但金额和时间都会留在区块链上。
- 您的结账页面收集的 **买家信息** 保存在您的数据库中，受适用于您业务的隐私法律约束。
- **法律依然适用：** 包括您经营所在地的税收、消费者保护和支付规则，以及服务器所在国的法律，在我们的欧盟地区还包括欧盟《数字服务法》。
- **我们的 [可接受使用政策](https://offshoreserv.com/zh/acceptable-use-policy) 同样适用：** 针对真实个人的欺诈（例如虚假网店和盗刷银行卡）属于零容忍事项。
- **Tor 不等于匿名：** 该部署会添加一个洋葱地址，但 BTCPay 的常见问题指出，这“完全不会让您匿名”。

## 如何自托管 BTCPay Server：分步指南

### 1. 将域名指向服务器

在您的 DNS 服务商处，为 `btcpay.example.com` 这样的主机名创建一条 A 记录，指向您服务器的 IPv4 地址。内置的 Nginx 会为其申请 Let's Encrypt 证书，完成验证需要 [80 端口可以从外部访问](https://docs.btcpayserver.org/Docker/networking/)。检查该名称是否解析为 `SERVER_IP`：

```
getent ahostsv4 btcpay.example.com
```

### 2. 在防火墙中开放端口

先放行 SSH（如果修改过端口，则放行您自己的端口），然后放行 HTTP、HTTPS；如使用 Core Lightning 或 LND，还需放行 9735：

```
apt update
apt install -y ufw git
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 9735/tcp
ufw enable
```

Docker 对外发布的端口会通过 Docker 自己的 NAT 规则 [绕过 UFW](https://docs.docker.com/engine/network/packet-filtering-firewalls/)，因此 UFW 无法隐藏 BTCPay，但可以保护其他所有服务。不要改用带有 `flush ruleset` 的 nftables 文件：正如我们的 [加固指南](https://offshoreserv.com/zh/docs/security/hardening) 所警告的，它会删除 Docker 的规则。

### 3. 克隆代码仓库并设置变量

与 README 的做法一样，请在 root 登录 shell 中操作：直接以 root 身份登录，或在您的 sudo 用户下运行 `sudo su -`。然后使用您的主机名运行 README 中的命令：

```
mkdir BTCPayServer
cd BTCPayServer
git clone https://github.com/btcpayserver/btcpayserver-docker
cd btcpayserver-docker
export BTCPAY_HOST="btcpay.example.com"
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_LIGHTNING="none"
export BTCPAYGEN_REVERSEPROXY="nginx"
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage-xs"
. ./btcpay-setup.sh -i
```

- **BTCPAY_HOST（主机名）**: 您的主机名；安装脚本会拒绝任何不是有效域名的值。
- **NBITCOIN_NETWORK（网络类型）**: `mainnet`；如需试验，可改用 `testnet`。
- **BTCPAYGEN_CRYPTO1**: `btc`；添加 `BTCPAYGEN_CRYPTO2="xmr"` 可支持门罗币。
- **BTCPAYGEN_LIGHTNING（闪电网络实现）**: `none`、`clightning`、`lnd` 或 `phoenixd`。
- **BTCPAYGEN_REVERSEPROXY（反向代理）**: `nginx`，负责申请并续期 HTTPS 证书。
- **BTCPAYGEN_ADDITIONAL_FRAGMENTS（附加配置片段）**: 各项以分号分隔，其中包含一个修剪预设；安装脚本不接受 `opt-txindex` 与修剪预设同时出现。以后修改该列表时，请再次包含该预设，否则修剪将被关闭，节点会停止运行并报错“Block files have previously been pruned”。
- **BTCPAY_ENABLE_SSH（启用 SSH）**: 见于旧版指南；当前脚本会忽略此变量。

### 4. 运行安装脚本

请保留开头的点号：该脚本必须以 source 方式运行，不带 `-i` 时它只会输出选项说明。带上 `-i` 后，它会在缺少时安装 Docker 和固定版本的 Docker Compose，生成服务栈，将您的设置保存到 `/etc/profile.d/btcpay-env.sh`，添加一个开机启动的 `btcpayserver` systemd 服务并将其启动；脚本提示这一过程可能需要 5 至 10 分钟。

### 5. 立即注册管理员账户

打开 `https://btcpay.example.com` 并立即注册：第一个账户将成为 [服务器管理员](https://docs.btcpayserver.org/RegisterAccount/)，而且 Let's Encrypt 会公开 [记录每一张证书](https://letsencrypt.org/docs/ct-logs/)，因此您的主机名并非秘密。随后 BTCPay 默认会关闭公开注册：请在 **Server Settings > Policies** 下确认 **Enable public user registration** 处于关闭状态。如果您只看到 **Login** ，而自己从未注册过，说明已有他人注册，BTCPay 的常见问题建议重新部署。没有 SMTP 就无法通过邮件重置密码，因此请将密码保存在密码管理器中。

### 6. 等待节点同步

网站在首次同步完成前就能打开；根据 BTCPay 的 [同步常见问题](https://docs.btcpayserver.org/FAQ/Synchronization/)，首次同步需要一到五天。可用以下命令查看进度：

```
bitcoin-cli.sh getblockchaininfo
```

当 `blocks` 等于 `headers` 且 `initialblockdownload` 为 `false` 时，节点即同步完成。在此之前，BTCPay 无法可靠地检测付款，因此请不要接受任何付款。

### 7. 创建商店并连接钱包

注册后会进入商店创建流程：填写名称、默认货币和汇率来源。然后按照 BTCPay [钱包指南](https://github.com/btcpayserver/btcpayserver-doc/blob/master/docs/ConnectWallet.md) 中的顺序连接商店的钱包：

- 通过 BTCPay Server Vault 应用连接[硬件钱包](https://docs.btcpayserver.org/HardwareWalletIntegration/)，或导入 Electrum 或 Wasabi 的钱包文件。
- xpub，可手动输入，也可扫描二维码。
- 切勿使用助记词：“绝不应在任何联网设备上输入钱包助记词。”

BTCPay 为每张账单使用一个新地址，而大多数钱包只会监视约 20 个未使用的地址，即 [地址间隔上限（gap limit）](https://docs.btcpayserver.org/FAQ/Wallet/)：在出现一连串未支付的账单后，请调高该上限（Electrum、Sparrow 和 Bitcoin Core 均支持），否则付款看起来会像是丢失了。

## 保持稳定运行：更新、备份与硬盘空间

### 更新

在 root 登录 shell 中执行更新，或使用 **Server Settings > Maintenance** 下的 **Update** ：

```
btcpay-update.sh
```

[更新](https://docs.btcpayserver.org/Docker/updating/) 会拉取代码仓库、重新生成服务栈、重建容器，然后删除主机上所有未使用的 Docker 镜像，无论其是否属于 BTCPay，除非将 `BTCPAY_UPDATE_CLEAN` 设为 false。进行重大升级前，请先备份并阅读发布说明。

### 备份

```
cd "$BTCPAY_BASE_DIRECTORY/btcpayserver-docker"
./btcpay-backup.sh
```

[备份脚本](https://docs.btcpayserver.org/Docker/backup-restore/) 会导出数据库、停止服务栈、将 Docker 卷、机密文件和导出文件打包归档，然后重新启动。它会跳过区块链数据、缓存、日志和 LND 的通道数据库，但会保留 LND 的钱包和 `channel.backup`。归档文件 `/var/lib/docker/volumes/backup_datadir/_data/backup.tar.gz` 每次运行都会被覆盖，且保存在服务器上：请设置 `BTCPAY_BACKUP_PASSPHRASE` 对其加密，并按照我们的 [快照与备份指南](https://offshoreserv.com/zh/docs/vps/snapshots)，用 restic 或 Borg 将其复制到服务器之外。备份期间服务栈处于停止状态，因此请选择业务清闲的时段，如 BTCPay 的 crontab 示例所示：

```
SHELL=/bin/bash
PATH=/bin:/usr/sbin:/usr/bin:/usr/local/bin
15 4 * * * /root/BTCPayServer/btcpayserver-docker/btcpay-backup.sh
```

在以相同方式部署的服务器上用 `./btcpay-restore.sh` 恢复，并实际演练一次。

闪电网络需要更多措施：BTCPay 警告，“广播已撤销的状态可能导致您损失该通道中的全部资金。”使用 LND 时，请保存 **Server Settings > Services > LND Seed Backup** 中的助记词，并在异地保存一份 `channel.backup` 副本，每当有通道开启或关闭时都要更新该副本；使用 Core Lightning 时，请遵循其自身的指引。切勿为闪电网络节点恢复早于其最近几笔付款的 VPS 快照。不使用闪电网络时，快照是快速回退的手段：先运行 `btcpay-down.sh`，再申请快照，待快照显示为已完成后运行 `btcpay-up.sh`。

### 硬盘空间与同步状态

硬盘写满会导致 Bitcoin Core 停止运行，BTCPay 随后会一直显示节点正在启动。可用以下命令检查：

```
df -h /var/lib/docker
docker system df
bitcoin-cli.sh getblockchaininfo
```

启用修剪后，`size_on_disk` 会保持在预设目标值附近，而数据库和镜像会持续增长。请让 BTCPay 始终保持运行，使节点保持同步，并将这些检查加入您自己的监控：我们从不给您发送邮件。

## 保护 BTCPay Server 和您的钱包

- **注册功能** 保持关闭；如需添加其他用户，请从 **Server Settings** 发出邀请。
- **双重验证：** 在账户设置中开启（身份验证器应用或 U2F 密钥）。根据[服务器设置常见问题](https://docs.btcpayserver.org/FAQ/ServerSettings/)，如果设备丢失，root 可以在代码仓库目录中运行 `./btcpay-admin.sh disable-multifactor YOUR_ACCOUNT_EMAIL` 将其移除。
- **SSH：** 按照加固指南使用密钥登录。安装脚本会为 **Maintenance** 中的操作添加一个受限的 root 密钥，并且[可能会修改](https://docs.btcpayserver.org/Docker/configuration/) `/etc/ssh/sshd_config`，将其中的 `PermitRootLogin no` 改为 `prohibit-password`。在我们的测试中，加固指南添加的配置文件会被优先读取，root 登录因此仍被拒绝，BTCPay 便隐藏了这些操作。您可以在 shell 中进行更新，或在该文件中设置 `PermitRootLogin forced-commands-only`（这样 root [只能通过强制命令](https://man.openbsd.org/sshd_config#PermitRootLogin)登录），并将 `root` 添加到 `AllowUsers` 中。
- **服务器上不存放助记词。** 在 KVM 宿主机上，服务商在技术上能够读取 VPS 的硬盘和内存。使用硬件钱包或 xpub 时，入侵者或服务商可以看到您的收款，但无法动用这些资金。BTCPay 热钱包和内部闪电网络节点持有私钥：其中只应存放日常周转所需的余额。

## 邮件通知与 25 端口

BTCPay 可以通过 SMTP 发送密码重置、邀请以及商店事件（例如账单已结清）的邮件，SMTP 可在 **Server Settings > Email server** 或商店设置中配置。据其 [通知指南](https://docs.btcpayserver.org/Notifications/) 所说，没有 SMTP 就“没有简便的方法”重置密码。我们的网络默认关闭出站 25 端口。这会阻止直接向其他邮件服务器投递，但不影响经身份验证后向中继服务器提交邮件：填写您邮件服务商的 SMTP 主机、587 端口和登录凭据，然后发送测试邮件。邮件服务商能看到您发送的内容，如果您介意这一点，请不要配置 SMTP。

## 常见问题

### 自托管 BTCPay Server 需要多少费用？

该软件 [免费](https://docs.btcpayserver.org/FAQ/General/)，没有订阅费或交易手续费；您只需为服务器和域名付费。BTCPay 的起步配置（2 个 vCPU、4 GB 内存、50 GB SSD）对应我们每月 $5.49 的 Cutter；如需闪电网络，则对应每月 $12.49 的 Schooner。按最低充值额 $100 充值，赠送 10%：大约够用 20 个月的 Cutter。

### 可以在 2 GB 内存的 VPS 上运行 BTCPay Server 吗？

仅适合测试。BTCPay 的部署常见问题将 2 GB 内存列为最低要求，但其较新的选型指南以 4 GB 内存和 2 核为起点。我们的 2 GB Sloop（1 个 vCPU、40 GB NVMe）可以在 `opt-save-storage-xxs` 预设下运行不带闪电网络的比特币，但首次同步较慢。正式运营的网店请使用 Cutter。

### BTCPay Server 需要比特币全节点吗？

您需要的是一个会验证区块的节点，而不是把整条链都存在硬盘上。该部署中的 Bitcoin Core 会校验每一个区块，而修剪预设会保留最近 5 至 100 GB 的区块。只有交易索引、ElectrumX 和内置的 Mempool 浏览器才需要未修剪节点，目前这意味着需要一台独立服务器。如需运行不带 BTCPay 的节点，请参阅我们的 [比特币和门罗币节点指南](https://offshoreserv.com/zh/docs/vps/bitcoin-monero-node)。

### 可以在无需 KYC 的情况下托管 BTCPay Server 吗？

可以。BTCPay 是由您自己运行的软件，无需开设任何账户；我们的主机服务也只需要邮箱地址和密码，支持用比特币、以太坊、门罗币、泰达币或 Solana 付款。您的域名注册商和邮件服务商有各自的规定，税收、消费者保护法和我们的可接受使用政策也依然适用。

### BTCPay Server 支持门罗币吗？

支持，通过社区维护的门罗币插件实现。设置 `BTCPAYGEN_CRYPTO2="xmr"` 并再次运行安装脚本，即可部署修剪模式的门罗币节点和钱包服务；然后在 **Server Settings > Manage Plugins** 下安装该插件，并为商店配置一个只读钱包：提供主地址、查看私钥和恢复高度，绝不提供助记词。请按照 BTCPay 的 [门罗币配置步骤](https://docs.btcpayserver.org/Docker/cryptocurrencies/) 操作，并按其选型指南的建议，规划至少 250 GB 的 SSD 空间。

**某个步骤遇到困难？**

独立服务器和 GPU 服务器客户可在 [客户中心](https://offshoreserv.com/zh/account/support) 提交工单，注明服务器的 IP 地址以及已尝试过的操作。首次回复目标：12 小时内。其他服务器请使用其页面上的服务器操作、[指南](https://offshoreserv.com/zh/docs) 和 [网络状态](https://offshoreserv.com/zh/status) 页面。

---

OffshoreServ 是一家离岸主机服务商，在七个司法管辖区（冰岛、瑞士、摩尔多瓦、罗马尼亚、荷兰、保加利亚和马来西亚）提供 VPS、独立服务器、Windows RDP 和 GPU 服务器，仅接受加密货币付款（比特币、以太坊、门罗币、泰达币（USDT）和 Solana），无需身份验证（无需 KYC）。

Prices and plans: https://offshoreserv.com/zh/pricing · Answers: https://offshoreserv.com/zh/faq · Every page: https://offshoreserv.com/llms.txt
