教程
如何在 VPS 上运行 Bitcoin 全节点
全节点是使用 Bitcoin 时唯一不必向别人打听“真相”的方式。其他所有选项——区块浏览器、连接公共服务器的轻钱包、交易所里的余额——都意味着把你的历史记录托付给第三方,并顺带把隐私也一并交出去。Bitcoin Core 本身十分钟左右就能装好。真正决定你的节点有没有用的,是它底下那台机器:给了多少磁盘、上传是否被计量,以及主机商能看到什么。
全节点能做什么——又不能做什么
全节点会下载每一个区块,自行核验每一笔签名和每一条共识规则,并维护一份属于自己的、当前可花费 UTXO 集合的副本。它是一个验证者,不是矿工,单靠它自己也算不上钱包。
- 它独立验证——没有哪个区块浏览器、交易所或轻钱包服务器能替你决定什么是有效的、你的余额是多少。
- 它让你不必在钱包每次同步时,把自己的地址泄露给陌生人的服务器——这是大多数 Bitcoin 用户最大的隐私漏洞。
- 它会把区块和交易继续转发出去,这部分是在帮助整个网络,而不只是帮你自己。
- 它不产生任何收益,也没有投票权;如果你的密钥本身管理不善,它并不会让你的币变得更安全。
归档、裁剪还是索引:三种截然不同的磁盘占用
这一个决定就决定了你需要哪种套餐,所以要在下单之前先想清楚。这三种模式验证链的方式完全相同——区别只在于验证完成后,磁盘上到底留下多少数据。
- 裁剪(Pruned)——Core 会下载并核验全部数据,然后丢弃旧的区块文件,只保留最近的部分。设置 prune=5000 时,区块数据会维持在约 5 GB;再加上 UTXO 集合和操作系统本身,总共大约需要 25 GB。
- 归档(Archival)——永久保留每一个区块。如今仅区块数据就已超过 750 GB,并以每月约 7 GB 的速度增长,此外还要再加上 UTXO 集合。如果你需要向其他节点提供历史区块,或者以后想在不重新下载整条链的情况下重建索引,就需要它。
- 索引(Indexed)——在归档的基础上加上 txindex=1,可以按交易 ID 查找任意一笔交易,这也是区块浏览器和某些服务端软件所要求的。它会在此基础上再增加几十 GB,并且无法与裁剪模式共存。
为 Bitcoin 节点选择 VPS:磁盘、内存与不限流量的端口
Bitcoin Core 对 CPU 很宽容,对磁盘却很挑剔。针对 UTXO 数据库的随机读写,才是决定同步是顺畅还是煎熬的关键,这也是为什么 NVMe 在这里远比核心数量重要。离岸 VPS系列的每个套餐都标配 RAID-10 的 Gen4 NVMe 和不限流量的带宽,所以真正需要选择的只是容量。
- 裁剪节点:VPS-4,$7.49/mo——2 vCPU EPYC、4 GB DDR5 ECC 和 60 GB NVMe,留给 prune=5000 加日志的空间相当宽裕。如果裁剪得更狠一些,$3.99 的 VPS-2 也够用。
- 想更快同步的裁剪节点:VPS-8,$13.99/mo——4 vCPU 和 8 GB 内存能让你给 Core 分配几个 GB 的 dbcache,这是影响同步时间最大的单一因素。
- 归档节点:VPS-64,$89.99/mo,是唯一一档 800 GB NVMe 勉强能塞下未裁剪链的 VPS 套餐——按目前的体积计算,留出的余量也就一年左右,谈不上宽裕。
如果是归档或索引节点,请老老实实算一笔账,而不是条件反射式地买最大的 VPS:独立服务器起价 $64/mo,配备 64 GB 内存和 2 × 1 TB NVMe,比最大档的 VPS 更便宜,空间也宽裕得多。如果你打算把这条链保留数年,或者想在旁边再跑一个 Electrum 服务器和一个无需 KYC 托管的网站,不如从这里起步,省得日后升级两次。
分步指南:从加密货币充值到节点同步完成
- 01用一次性邮箱注册账户只需邮箱和密码。不需要姓名、电话或证件,我们这边也就没有任何东西能把这个节点和你本人关联起来。
- 02用加密货币为余额充值用比特币、门罗币或另外 8 种币种为预付余额充值。余额永不过期,也不会被冻结。
- 03部署 VPS选择套餐、地区和 Debian 或 Ubuntu 镜像。中位部署时间约一分钟,root 权限随即可用。
- 04安装 Bitcoin Core 并校验下载文件从 Bitcoin Core 项目获取发行版,解压前先核对签名。跳过这一步,就是人们最终运行了别人篡改过的二进制文件的原因。
- 05以独立用户身份、通过 systemd 运行它一个专用的 bitcoin 用户、一个归它所有的数据目录,再加一个 unit 文件,这样重启后节点会自己恢复运行。
- 06编写 bitcoin.conf,启动并查看日志设置好裁剪级别、dbcache 和网络选项,启动服务,然后持续查看日志,直到验证进度达到 1 为止。
真正重要的 bitcoin.conf 配置项
Core 自带的默认设置就相当合理,一份像样的配置文件通常也就六七行。以下这些是值得真正理解、而不是从论坛帖子里照抄的选项。
- dbcache——分配给 UTXO 数据库的内存,默认 450 MB。初次同步时把它调高到几千 MB,是性价比最高的加速手段,之后再调回去即可。
- prune——以 MB 为单位设置区块存储的大小上限,最小为 550。以后想从裁剪模式改成归档模式,就得重新下载整条链,所以要在第一次启动前就决定好。
- txindex=1——建立完整的交易索引。只有当你实际使用的工具确实需要它时才开启;事后再加会强制触发重建索引。
- listen=1 并开放 8333 端口——让你成为一个其他节点可以连接到的监听节点。这就是“使用网络”和“为网络做贡献”的区别。
- maxuploadtarget——对外流量的每日软上限,只要主机商按流量计费,就值得设置它。
- blocksonly=1——停止转发零散交易。它能大幅削减带宽占用,代价是失去一个有用的内存池,也不再帮助交易传播。
初始区块下载:到底是什么在拖慢速度
首次同步是整个过程中唯一真正吃重的部分。Core 会重放整条链;虽然默认情况下它会跳过某个硬编码的最近区块之前的脚本检查,但仍然要从零重建整个 UTXO 集合——所以真正的瓶颈是随机磁盘 I/O 和哈希运算,而不是你的网络连接。在配有充裕 dbcache 的 Gen4 NVMe 上,完整同步通常一天之内就能跑完;换成机械硬盘,同样的工作可能要跑上一周。多给它一些内存,而不是更多核心;也不要因为等得不耐烦就重启——进度会被周期性地写入磁盘,但如果在写入过程中重启,你花时间攒下来的缓存就白费了。
让节点通过 Tor 运行
一个监听节点会向其他节点公布自己的地址。如果用的是明网地址,这个公告就是公开的,并且直接指向你的服务器。Core 对 Tor 有原生级别的支持:给它一个本地 Tor SOCKS 代理,并让它能访问 Tor 的控制端口,它就会发布自己的洋葱服务,并在那里接受入站连接。加上 onlynet=onion,它就完全不再与明网通信。
这和运行 Tor 中继是完全不同的两回事——中继承载的是别人的流量,而且刻意保持公开。这里的 Tor 只是你自己节点连接其他节点的方式,代价也不大:仅走洋葱网络的节点同步会略慢一些,可连接的对等节点池也更小,但对一台一直挂着运行的机器来说,这基本不算问题。
带宽:没有人会提前预算的那笔成本
监听节点的上传量会远大于下载量。每一个正在做初次同步的节点都可能从你这里拉走数百 GB,而一个连接良好的归档节点,只要你不加限制,每月轻松跑出几个 TB 也不奇怪。放在按流量计费的主机上,这就是一张超额账单——这正是“无限流量”套餐条款里特意要排除的那种流量特征。这里全系列套餐标配不限流量的传输,如果你想更积极地为其他人做种整条链,起价 $34.99/mo 的10 Gbps Unmetered线路配有专用端口。如果你更想低调一些,就用 maxuploadtarget 主动设置上限,而不是任其发展。
连接钱包、Electrum 服务器或 BTCPay
光有节点只完成了一半——关键是让你自己的软件去连它,而不是连陌生人的服务器。Sparrow、Specter 这类钱包可以通过隧道直接连接 Core 的 RPC。Electrum 协议的钱包则需要中间再架一层服务器:electrs 或 Fulcrum 会从原始区块文件里构建自己的索引,这也是应该保持不裁剪(unpruned)的具体理由之一。如果你想自己收款,让 BTCPay Server 对接你的节点,就能彻底甩开支付处理商——这和无需 KYC 搭建网站是同一套自托管逻辑。
不管技术栈怎么搭,有一条规矩是不变的:节点负责验证,你的密钥要放在别处。用硬件钱包或离线签名设备,让这台租来的机器只做验证这一件事。一台你不能亲手掌控的机器,不该是存放大额资金的地方。
诚实地说:不属于你自己的节点,隐私上要付出什么代价
VPS 上的节点,和摆在你自己书桌底下的那台并不完全一样,这一点值得说清楚原因。它去掉了那个最大、也最常见的泄露源:向公共区块浏览器和第三方 Electrum 服务器查询时,对方会精确记录下你问过哪些地址。但它去不掉主机商这一环。任何能物理接触到机器的人,原则上都能读取它的磁盘和内存;远程服务器上的全盘加密,防得住的是被偷走的硬盘,防不住正在运行中的那一台。
所以真正有意义的问题不是“主机商能不能看到”,而是“主机商知不知道我是谁”。无 KYC 主机能彻底解决这一点:一个邮箱、一个密码,无需验证,也没有任何资料可供索取或泄露。用加密货币余额付款,则去掉了银行这一环。支付这一侧要做到什么程度,取决于你的威胁模型——比特币是化名制,不是匿名的,追溯到已实名验证的交易所的币,最终还是能牵出线索,而用门罗币充值能在协议层面补上这个漏洞。同样的道理也适用于运行 Monero 节点——这里你要保护的,是钱包与节点之间的关联。
会让节点卡住、闲置或暴露在外的那些错误
- 同步到一半磁盘就写满了,因为裁剪是事后才决定的——要在第一次启动前就设置好,而不是中途再改。
- 8333 端口在防火墙上一直没打开,导致节点只能发起出站连接,一个对等节点都服务不了。
- 以“只是测试一下”为由,把 RPC 绑定到 0.0.0.0,结果在公网 IP 上几小时内就被扫到。
- 在小容量磁盘上条件反射式地开启 txindex,之后才发现想关掉它还得完整重建一次索引。
- 节点以 root 身份、从某个用户主目录里直接跑起来,也没配 systemd unit,结果一次重启就悄无声息地终结了这场实验。
这些都不是什么稀奇古怪的故障,而是当机器只按价格挑选、细节都留到以后再说时,自然会发生的事情。按你真正想要的模式选好磁盘,让对等端口开着、RPC 端口关着,Bitcoin 节点就会是少数几件你可以一放好几年都不用太操心的事情之一。