Lightningノードを使うと、支払いチャネルを通じてBitcoinの支払いを送受信できますが、オンラインを維持してこそ価値があります。そのため、VPSは自然な設置先です。このガイドでは、同じサーバー上のBitcoin Coreノードをバックエンドとして、UbuntuまたはDebianにLND(Lightning Network Daemon)をセットアップします。
まずBitcoinバックエンドを選ぶ
LNDは単独ではBitcoinを検証しません。次の3つのバックエンドのいずれかが必要です。
- 同じVPS上のBitcoin Core。最もプライベートで信頼性の高い選択です。LNDにはプルーニングノードで十分なので、ディスクを小さく抑えられます。インストール方法はBitcoinノードガイドで説明しています。
- Neutrino。ほとんどディスクを必要としないライトクライアントモードですが、ブロックフィルターを他のピアに頼るため、堅牢性は劣ります。
- 信頼できるリモートノード。すでに別の場所で運用しているなら問題ありません。実際の資金を扱うノードでは、自分で管理していないノードにLNDを向けないでください。
ほとんどの人にとって、同じサーバー上のプルーニングしたBitcoin CoreとLNDの組み合わせが、最もシンプルで堅実な構成です。2〜4 vCPU、4〜8 GBのRAMのプランなら、両方のプログラムを並べて動かせます。サイズの目安はLightningノードホスティングのページをご覧ください。
ステップ 1:サーバーを準備する
新しいUbuntuまたはDebianのVPSから始め、新しいVPSを守る方法に従ってください。ノード用に通常のユーザーを作成し、LNDをrootで実行しないでください。
sudo adduser --disabled-password --gecos "" lnd
sudo usermod -aG bitcoin lnd # lets LND read the bitcoind cookie file
ステップ2:Bitcoin CoreをLNDと連携させる
LNDは、ZeroMQを通じてBitcoin Coreからブロックとトランザクションを読み取ります。次の行をbitcoin.confに追加し、bitcoindを再起動してください。
server=1
prune=20000
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
続行する前に、Bitcoinノードの初回同期が完了するまで待ってください。まだ追いついている最中のノードに対して、LNDは動作しません。
ステップ3:LNDをダウンロードする
GitHubの公式lightningnetwork/lndリリースページから、お使いのCPU向けのリリースを入手してください。リリースノートの説明どおり、何かを実行する前に署名とチェックサムファイルを検証してください。
cd /tmp
wget https://github.com/lightningnetwork/lnd/releases/download/vVERSION/lnd-linux-amd64-vVERSION.tar.gz
tar xzf lnd-linux-amd64-vVERSION.tar.gz
sudo install -m 0755 lnd-linux-amd64-vVERSION/lnd lnd-linux-amd64-vVERSION/lncli /usr/local/bin/
VERSIONを、検証したリリースに置き換えてください。
ステップ4:LNDを設定する
/home/lnd/.lnd/lnd.confを作成します。
[Application Options]
alias=my-node
listen=0.0.0.0:9735
rpclisten=127.0.0.1:10009
restlisten=127.0.0.1:8080
maxpendingchannels=5
[Bitcoin]
bitcoin.active=1
bitcoin.mainnet=1
bitcoin.node=bitcoind
[Bitcoind]
bitcoind.rpchost=127.0.0.1:8332
bitcoind.rpccookie=/home/bitcoin/.bitcoin/.cookie
bitcoind.zmqpubrawblock=tcp://127.0.0.1:28332
bitcoind.zmqpubrawtx=tcp://127.0.0.1:28333
cookieのパスは、Bitcoinユーザーが保管している場所に合わせて調整してください。gRPCとRESTのポートは、意図的にlocalhostにバインドされています。
ステップ 5:サービスとして実行する
[Unit]
Description=LND
After=bitcoind.service
Requires=bitcoind.service
[Service]
User=lnd
ExecStart=/usr/local/bin/lnd
Restart=on-failure
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
これを/etc/systemd/system/lnd.serviceとして保存し、sudo systemctl enable --now lndを実行します。ウォレットはlncli createで一度だけ作成します。
ステップ6:シードとチャネルバックアップを守る
lncli createは24語のシードフレーズを表示します。紙に書き写して、オフラインで保管してください。シードで復元できるのはオンチェーン資金のみです。チャネルの状態は別物なので、channel.backup(~/.lnd/data/chain/bitcoin/mainnet/にあります)のコピーもサーバー外に保管し、チャネルを変更するたびに更新してください。データベース全体の古いコピーを復元しないでください。ペナルティが発生する可能性があります。
ファイアウォール
他のノードから接続してほしい場合のみ、ポート9735を開けてください。10009と8080はインターネットに対して閉じたままにします。基本的な対策の残りは、セキュリティ強化ガイドをお読みください。