为什么要自己跑比特币全节点?
比特币网络是去中心化的公共账本,而比特币全节点 bitcoin node承担着验证和广播交易的使命。当你把节点跑在自家 NAS 上,既能强化比特币网络安全性,又可享受“无需信任任何第三方”的链上查询体验;同时还能私下向硬件钱包推送交易,避免泄露隐私。本文演示如何用 Synology DS923+ 与 Docker 容器在数分钟内上线一个全节点,并启用 交易索引 txindex,占用约 670 GB 空间。
必要准备
Synology 系统前置环境
- DSM 7.2 及以上版本。
- 套件中心 已安装 Container Manager。
- DSM 控制面板 → 网络 → 防火墙放行
8332、8333端口(面向本地即可)。 - 插入两块容量 ≥ 1 TB 的 HDD 并建立 Btrfs 存储空间,为后期快照留余地。
- 建议在路由器中开启 50 Mbit/s 以上上传速率,提高区块同步效率。
目录规划
在 File Station 建立如下结构(大小写敏感):
/volume1/docker/
├─ bitcoin-data/ # 存放区块链数据
└─ bitcoin-conf/ # 存放配置文件安装与部署
1 制作 bitcoin.conf 配置
进入 bitcoin-conf 文件夹,新建文件 bitcoin.conf,内容按需微调。下方示例开启交易索引并关闭钱包功能以节省资源:
regtest=0
txindex=1
disablewallet=1
printtoconsole=1
rpcuser=bitcoinrpc
rpcpassword=把你的强密码替换这行小技巧:想减少日志刷屏,可在末尾追加 debug=0。2 拉取镜像并创建容器
- 打开 Container Manager,搜索关键字
bitcoind,Pull 镜像kylemanna/bitcoind。 - 新建容器 → 高级设置:
| 标签 | 示范填写 |
|---|---|
| 容器名称 | bitcoind |
| 卷映射 | /volume1/docker/bitcoin-data → /bitcoin/.bitcoin |
/volume1/docker/bitcoin-conf → /bitcoin/.bitcoin | |
| 端口映射 | 本地:8333 → 容器:8333(p2p) |
| 本地:8332 → 容器:8332(rpc) | |
| 环境变量 | BTC_RPCUSER=bitcoinrpc 与 BTC_RPCPASSWORD=你同上 |
| 重启策略 | Always |
- 启动后耐心等待 首次初始同步。以 DS923+(Ryzen R1600,4C8T,8 GB RAM,千兆网)为例:
- 挂盘空跑 首次区块链同步 需 4–5 天;
- 完成后
bitcoin-data文件夹约为 670 GB; - CPU 峰值 45%,NAS 温度稳定在 44 ℃。
3 验证节点健康状态
SSH 进入 DSM,执行:
curl --user bitcoinrpc \
--data-binary '{"jsonrpc":"1.0","id":"curltest","method":"getblockchaininfo","params":[]}' \
-H 'content-type: text/plain;' \
http://localhost:8332/若回显 "initialblockdownload":false 且 "blocks" 与 "headers" 数值一致即表示节点已追上最新高度。
常用 RPC 命令速查
以下指令均在同一局域网 PC 或 NAS 本体上完成。假设 RPC 监听地址为 192.168.1.88:8332。
查询整体信息
getblockchaininfo # 查看链高度、同步进度、磁盘占用按高度查区块哈希
getblockhash 846055返回区块详情
getblock <上面得到的区块哈希>查询交易详情(已启用 txindex 才可)
getrawtransaction <交易ID> true常见问题 FAQ
Q1:家里带宽不高,会影响同步吗?
A:第一次同步时真·千兆对等带宽尤佳,但普通 200 M 下行动亦可完成;下载占大头,上行仅在「将区块分发给相邻节点」时出现 2–5 MB/s 峰值。若担心夜间限速,可在 bitcoin.conf 加入 maxuploadtarget=5000(单位 MB/天)。
Q2:存储不够怎么办?
A:
- 启用裁剪模式:
prune=550(保留最近 550 MB 数据)。此时 txindex 会自动失效,但基础验证仍可运行。 - 挂载 USB 硬盘:DS923+ 背部 USB 3.2 Gen2 接口可外挂 10 TB 移动硬盘,并将其映射为额外卷,重启容器后在 DSM 内即可迁移数据。
Q3:如何让节点只跑私网?
A:在 bitcoin.conf 中加入 listen=0 与 connect=0 并配合 onlynet=onion 的反向代理设置,亦可完全切断对外广播,仅做内部背书节点。
Q4: DS923+ 只有 4 GB 内存够吗?
A:最低 4 GB 能启动,但后续容易 OOM。强烈建议预留 6–8 GB 物理内存,或在 Container Manager 设置容器内存限制为 3 GB 搭配 4 GB Swap,观测半月无异常再放行。
Q5:能不能经济同步,不跑全节点?
A:技术宅福音:你可以选择 Neutrino(BIP-157) 轻钱包客户端,仅下载区块头部 80 MB 即可。但实际挖矿、原子互换、隐私路由还是需要全节点。
数据扩展技巧
- 日备份:DSM Hyper Backup 计划任务每天 02:00 打包
bitcoin-data并上传到 C2 Object Storage,一份全量+增量的月存储成本不足 2 美元。 - 端口转发:若远程查看,推荐 DSM 的 反向代理服务器,前端 443 → 容器 8332,再由 Let's Encrypt 自动证书。
- 监控脚本:Node Exporter + Prometheus + Grafana 可视化模块,将链高度、网络连接数、磁盘 IOPS 同时映射到手机端。
想要亲手搭建却从未做过 Docker?👉 这份零基础 Synology Container Manager 快速上手指南 让你十分钟搞定容器环境!
最后,开源世界贵在分享。亲测 R1600 双核就可在跑 Bitcoin 全节点的同时,继续用 Synology Drive 备份全家照片。共勉之!