VPSのLNDと自宅のBitcoin Coreを接続してみる

VPSのLNDと自宅のBitcoin Coreを接続してみる

2台目ノードとして使っていたラズパイが壊れてしまったので、新しくノードを建てる環境として、初めてVPSサービスを利用してみました。

Bitcoin Coreも一緒に動かそうと思ったのですが、自宅に1台目のノードがあるので、せっかくなのでそちらからブロックデータ等を取得したいと思います。

この構成にどういった需要があるか謎ですが、ラズパイの供給が安定するまでの一時的な措置としてはアリかもしれません。
※海外のVPSにbitcoinを置くことになるので、少額での利用をおすすめします。

環境

  • Bitcoin Core version 23.0.0
  • LND version 0.14.3-beta
  • Tailscale version 1.24.2

1. Time4VPSの契約

今回はTime4VPSを利用してみました。理由は単純で、ダントツで安かったからです。
一番安いプラン(メモリ2GB・ストレージ20GB・帯域幅2TB)でも、現在は1.99ユーロ/月で契約できます。国内のVPS業者と比較すると破格の値段です。

LNDを動かすだけならC2かC4プランで十分かと思いますが、リバランスツール等を入れてガシガシ動かしたいという方はC8プランがいいと思います。

bitcoin払いにも対応してたので、bitcoinで支払いました(Lightningは未対応)。トランザクションが承認されるタイミングではなく、ブロードキャストされたタイミングで支払済になります。

契約できたら、「Install OS」から、OSをインストールします(今回はUbuntu 20.04)。
Login Details」からrootのパスワードが確認できるので、SSHでログインし、諸々の設定(一般ユーザーの追加、公開鍵認証、ファイアウォール等
)を行います。

2. Tailscaleのインストール
今回はBitcoin CoreとLNDを接続するために、Tailscaleを使ってみました。UmbrelのApp Storeからもインストール可能で、ポートやファイアフォールを意識せずに、簡単にVPN環境を構築できるのでめちゃくちゃ便利でした。

まずは、こちらを参考に、VPSとBitcoin Coreを動かしてる環境に
Tailscaleをインストールします。

tailscale upの後に出力されるURLにアクセスし、アカウント認証すれば簡単にTailscaleネットワークに参加できます。

3. Bitcoin Coreの構成

リモートのLNDと接続できるように、Bitcoin CoreのRPCとZeroMQを外部からアクセスできるようにします。

rpcbind=0.0.0.0
rpcallowip=0.0.0.0/0
zmqpubrawtx=tcp://0.0.0.0:28332
zmqpubrawtx=tcp://0.0.0.0:28333

設定を変えた後、Bitcoin Coreを再起動します。

Umbrelの場合、Bitcoin CoreはDockerで動いているので、コンテナのポートをいくつか公開する必要があります。

$ nano ~/umbrel/docker-compose.yml

以下の部分を追加します。

        bitcoin:
        ...
                ports:
                    - "$BITCOIN_P2P_PORT:$BITCOIN_P2P_PORT"
                    - "$BITCOIN_RPC_PORT:$BITCOIN_RPC_PORT" # 追加
                    - "$BITCOIN_ZMQ_RAWBLOCK_PORT:$BITCOIN_ZMQ_RAWBLOCK_PORT" # 追加
                    - "$BITCOIN_ZMQ_RAWTX_PORT:$BITCOIN_ZMQ_RAWTX_PORT" # 追加

コンテナを再起動します。

$ sudo ~/umbrel/scripts/stop
$ sudo ~/umbrel/scripts/start

4. LNDの構成

LNDをダウンロードし、VPSにインストールします。

$ wget https://github.com/lightningnetwork/lnd/releases/download/v0.14.3-beta/lnd-linux-amd64-v0.14.3-beta.tar.gz
$ wget https://github.com/lightningnetwork/lnd/releases/download/v0.14.3-beta/manifest-roasbeef-v0.14.3-beta.sig
$ wget https://github.com/lightningnetwork/lnd/releases/download/v0.14.3-beta/manifest-v0.14.3-beta.txt
$ gpg --verify manifest-roasbeef-v0.14.3-beta.sig manifest-v0.14.3-beta.txt
gpg: Signature made Tue 19 Apr 2022 05:26:47 AM JST
gpg:                using RSA key 60A1FA7DA5BFF08BDCBBE7903BBD59E99B280306
gpg: Good signature from "Olaoluwa Osuntokun <laolu32@gmail.com>" [unknown]
...
$ grep lnd-linux-amd64-v0.14.3-beta.tar.gz manifest-v0.14.3-beta.txt | sha256sum -c -
lnd-linux-amd64-v0.14.3-beta.tar.gz: OK
$ tar -xvf lnd-linux-amd64-v0.14.3-beta.tar.gz
lnd-linux-arm64-v0.14.3-beta/lnd
lnd-linux-arm64-v0.14.3-beta/lncli
lnd-linux-arm64-v0.14.3-beta/
$ sudo install -m 0755 -o root -g root -t /usr/local/bin lnd-linux-amd64-v0.14.3-beta/*

次にbitcoinノードでTailscale IPアドレスを確認します。

$ tailscale ip -4
100.x.y.z

確認出来たらLNDに設定してきます。~/.lnd/lnd.confを作成し、以下のようにします。

[Bitcoin]
bitcoin.active=1
bitcoin.mainnet=1
bitcoin.node=bitcoind

[Bitcoind]
bitcoind.rpcuser=xxx
bitcoind.rpcpass=xxx
bitcoind.rpchost=100.x.y.z
bitcoind.zmqpubrawblock=tcp://100.x.y.z:28332
bitcoind.zmqpubrawtx=tcp://100.x.y.z:28333

100.x.y.zは確認したTailscaleのIPアドレスにします。bitcoind.rpcuserbitcoind.rpcpassは適宜変更してください。

Umbrelの場合、bitcoind.rpcuserbitcoind.rpcpassは~/umbrel/lnd/lnd.conf、もしくは~/umbrel/.envで確認できます。

あとはLNDを起動し、問題なく動けば完了です。

$ lnd

なかなかgraphの同期が終わらなかったので、大丈夫かな~と思ってたのですが、だいたい1日半ほどで終わりました。

Remaining : 0 characters / 0 images
100

Sign up / Continue after login

Related stories

Writer

Share

Popular stories

自前ノードを使って簡単なライトニングアプリを作ってみる

291

チャネルバックアップファイルを自動でクラウドに保存してみる

116

チャネルバックアップファイルを自動でコピーしてみる

106