btc: Bitcoin RPC を LAN内で使いたい
2025/03/09
家の中に Raspberry Pi4 で bitcoind を立ち上げている。
使うときだけ立ち上げても良いのだが、同期に時間がかかるので常時起動している。
軽い家庭内サーバと思っている。
いつも SSH でログインしてアクセスしているのだが、 そういえばウォレットアプリで自分の bitcoind を使うようにしておくとそれっぽいな、と思った。
bitcoin.conf の設定を localhost でしか使わない(デフォルトのまま)にしていたので変更が必要。
うちの LAN は 192.168.0.xxx だったのでこんな感じ。
rpcbind=0.0.0.0
rpcallowip=192.168.0.0/24
最初は rpcbind
だけ設定したり rpcallowip
だけ設定したりで全然ダメダメだった。
ちゃんとアクセスできると IP アドレスを localhost から自分に変更して JSON-RPC でアクセスできるようになる。
$ curl --user ほにゃ:ほげ --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getblockcount", "params": []}' -H 'content-type: text/plain;' http://192.168.0.xxx:8332/
家の中で動いている PC は少ないから IP アドレスも範囲じゃなくて決めてしまえばよいのだけどね。
デスクトップ PC はまだしもノート PC は別の場所で使うことがあるので DHCP じゃないと面倒なのだ。
こうやって、手間とセキュリティを秤に掛けてしまうのだ。。。
追記(2025/03/14)
rpcallowip
で LANの指定しかしていなかったため localhost で RPC が呼べなくなっていたような感じがする。
rpcbind=0.0.0.0
rpcallowip=127.0.0.1
rpcallowip=192.168.0.0/24
ただこれでもアクセスができない。
どうも node-fetch で “localhost:8332” としていたのだが、IPv6 でアクセスしているのに rpcallowip
は 127.0.0.1 だからダメだったようだ。
reason: connect ECONNREFUSED ::1:8332
bitcoind を再起動するのも時間がかかるので node-fetch で呼び出すときに “127.0.0.1:8332” にした。
やれやれ。