这是什么
Bitcoin Core (bitcoind) 是比特币协议的参考实现:它会下载并独立验证每一个区块和每一笔交易,将其中继给对等节点,并对外暴露一个可供钱包或应用信任的 JSON-RPC 接口。全节点能为你提供自托管级别的验证、免受公共区块浏览器窥探的隐私,以及可供钱包、闪电网络节点、Electrum 服务器(Fulcrum/electrs)或 BTCPay Server 使用的后端。
为何选择离岸托管
你的节点 IP 地址会暴露给与之连接的每一个对等节点,因此在一台可用加密货币支付、无需身份信息的 VPS 上运行它,能让节点与你的家庭网络和真实姓名彻底脱钩。ChainVPS 免 KYC 且带宽不限量,这一点至关重要,因为初始区块下载(IBD)和持续的对等节点中继会传输数百 GB 的数据,足以突破限量套餐的上限。
部署过程
一套可用的参考配置
将其复制到全新的 ChainVPS 实例中。替换占位符后即可启动。
# docker-compose.yml — Bitcoin Core full node (pruned by default for a small VPS)
# 1) Generate an RPC credential first (do NOT store a plaintext password):
# curl -sSL https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py \
# | python3 - bitcoin
# It prints an rpcauth=... line and a matching password. Paste the rpcauth line below.
# 2) docker compose up -d then follow IBD: docker compose logs -f
services:
bitcoind:
image: bitcoin/bitcoin:28.1
container_name: bitcoind
restart: unless-stopped
stop_grace_period: 2m
user: "1000:1000"
ports:
- "8333:8333" # P2P — public, lets you serve/accept peers
- "127.0.0.1:8332:8332" # RPC — bound to localhost ONLY, never expose
volumes:
- ./bitcoin-data:/home/bitcoin/.bitcoin
command:
- -printtoconsole
- -server=1
- -listen=1
- -prune=10000 # ~10 GB of blocks; set -prune=0 -txindex=1 for a full archival node
- -dbcache=1024 # MB; raise to 2048-4096 on bigger boxes to speed IBD
- -maxmempool=300
- -maxconnections=40
- -rpcbind=0.0.0.0 # binds inside the container; host mapping keeps it on 127.0.0.1
- -rpcallowip=172.16.0.0/12 # docker bridge range, so host-side tools can reach RPC
- -rpcauth=bitcoin:REPLACE_WITH_GENERATED_HASH # <-- paste rpcauth output here
- -disablewallet=1 # node-only; drop this line if you want the built-in wallet
# First run needs ./bitcoin-data owned by uid 1000: mkdir -p bitcoin-data && sudo chown 1000:1000 bitcoin-data
防火墙
需开放的端口
| 端口 | 协议 | 用途 |
|---|---|---|
| 8333 | TCP | 比特币 P2P 网络 — 接受并服务对等节点;唯一应该公开可访问的端口 |
| 8332 | TCP | JSON-RPC 控制接口 — 仅绑定到 127.0.0.1,通过 SSH 隧道或私有网络访问 |
| 28332/28333 | TCP | 可选的 ZMQ 区块/交易通知,供闪电网络节点或 Electrum 服务器使用;仅限本地访问 |
| 9050 | TCP | 可选的本地 Tor SOCKS 代理,用于通过 Tor 运行 bitcoind 以获得对等节点层面的隐私保护 |
按需调配规格
您需要哪种套餐
VPS Small (2 vCPU / 4 GB RAM / 60-80 GB NVMe)
prune=10000 会保留约 10 GB 的区块数据以及约 10 GB 的 chainstate;仍会验证整条链,非常适合作为不需要历史区块数据的钱包/闪电网络后端。
VPS Pro 或 Storage VPS(4 vCPU / 8 GB RAM / 1 TB 磁盘)
prune=0 会存储每一个区块(截至 2026 年约 650 GB,且仍在增长);Storage 套餐提供了低成本的大容量磁盘空间,不限量带宽则足以覆盖完整的 IBD 和对等节点中继流量。
Dedicated 或大容量 Storage VPS(8+ vCPU / 16-32 GB RAM / 1.5-2 TB NVMe)
txindex=1 加上 Fulcrum/electrs 会建立一个庞大的地址索引,可为大量钱包客户端提供服务;需要高速 NVMe 和充足内存来支撑 dbcache 与索引重建。
最佳地区: 15 个地点中的任何一个都适用,因为 ChainVPS 的带宽不限量,这正是节点数百 GB 的 IBD 和持续中继流量真正需要的。若追求无身份关联的运行方式,可选择隐私优先地点 —— 冰岛、瑞士、摩尔多瓦、荷兰、罗马尼亚或卢森堡 —— 在这些地方节点与你的姓名不存在任何关联;如果你计划通过 Tor 运行节点,并希望为长期运行的节点找一个稳定、注重隐私的落脚点,冰岛和瑞士这类司法辖区同样是不错的选择。
全面加固安全
安全加固清单
- 切勿将 8332 端口暴露到公网。按上文所示将 RPC 映射保持在 127.0.0.1,并通过 `ssh -L 8332:127.0.0.1:8332 user@server` 访问它;可被外部访问且凭据薄弱/易猜的 RPC,是节点资金被盗或被劫持的经典原因。
- 使用 -rpcauth(加盐哈希)而不是 -rpcuser/-rpcpassword,这样 compose 文件或进程列表中就不会出现明文密码;如果这台机器曾被共享或做过快照,请务必轮换该凭据。
- 通过 Tor 运行以获得对等节点层面的隐私保护:在主机上安装 tor,并添加 -proxy=127.0.0.1:9050 -listen=1 -bind=127.0.0.1 以及一个 onion 服务,这样对等节点看到的将是一个 .onion 地址,而不是你的 VPS IP。如果完全不想要明网对等节点,可再搭配 -onlynet=onion。
- 用 ufw 锁定防火墙:仅允许 22(SSH,最好只用密钥登录并更换默认端口)和 8333 的入站流量,拒绝其余一切。无论如何,bitcoind 都会自行发起出站的对等节点连接。
- 留意磁盘用量。精简节点会稳定在约 20 GB,但非精简节点会持续增长 —— 请设置磁盘用量告警并预留足够空间,因为磁盘写满会导致验证中断,一旦发生硬崩溃甚至可能损坏 chainstate。
- 设置好 stop_grace_period(上文为 2m),并使用 `docker compose stop`,切勿强制杀死进程 —— bitcoind 需要时间干净地刷新其 LevelDB chainstate,否则下次启动时可能面临缓慢的重建索引。
问题
主机服务 Bitcoin Core (bitcoind) — 常见问题
我到底需要多少磁盘空间?
精简节点(配置中 prune=10000)会稳定在约 15-20 GB,同时仍然验证整条链。完整归档节点会存储每一个区块,截至 2026 年约为 650 GB,且每年还会增长约 50-70 GB,因此建议预留 1 TB 以上空间。若再加上 txindex=1 或 Electrum 服务器,则需要 1.5-2 TB 的高速 NVMe。
初始区块下载(IBD)需要多长时间?
在一台带宽不限量、dbcache=2048 以上的现代 VPS 上,从创世区块完整同步并验证通常需要几个小时到大约一天,具体取决于 CPU 和磁盘速度。在初始同步阶段调高 -dbcache 是提速效果最明显的单一手段。这只是一次性成本;之后节点只需下载新产生的区块。
我可以基于它运行闪电网络节点或 Electrum 服务器吗?
可以。启用 ZMQ(在 28332/28333 端口上添加 -zmqpubrawblock 和 -zmqpubrawtx),然后让 LND、Core Lightning、Fulcrum 或 electrs 通过本地 Docker 网络指向 RPC 和 ZMQ 端点即可。需要注意的是,Fulcrum/electrs 需要 txindex=1,因此无法与精简节点搭配使用。
精简节点的安全性或隐私性会更差吗?
不会。精简节点对每一个区块和每一笔交易执行的完整验证,与归档节点完全相同 —— 它只是在验证完成后丢弃旧的区块数据。你钱包的安全性和隐私性没有任何差别。唯一失去的是向其他对等节点提供历史区块,或重新扫描任意旧交易的能力。
我的节点 IP 会被别人看到吗?
会 —— 按照设计,你连接的每一个对等节点都能看到你节点的 IP。这正是在免 KYC 的离岸 VPS 上运行它有意义的原因:该 IP 属于一台与你的身份或家庭网络毫无关联的服务器。若想获得完整的对等节点层面隐私,可按照加固建议中所述通过 Tor 运行 bitcoind,让对等节点只能看到一个 .onion 地址。