umbrel の引っ越し、チャネルは開いたままで。
実験ノードの umbrel を別PC(TrueNAS SCALE に作った仮想環境)に移動したので、その忘備録。もちろん開いているチャネルはそのまま引っ越しです。
引っ越しの手順は、
1.新ノードにumbrelをインストール
2.新ノードにBitcoin Nodeをインストール
3.旧ノードから新ノードへブロックとチェーンステートをコピー
4.新ノードに Lightning Node (LND) をインストール
5.旧ノードから新ノードへ Lightning Node (LND) のデータをコピー
以下のサイトを参考にさせていただきました。というか、ほぼ以下の内容そのままです。
1.新ノードにumbrelをインストール
umbrelをインストールするまでの手順はあちこちにあるので省略します。
- ubuntu-22.04.3-live-server-amd64.iso 辺りをダウンロードしてUSBメモリに書き込む
- USBメモリから起動してubuntu server をインストール
- sshでログインして curl -L https://umbrel.sh | bash
カブトコインさんのインストール編がいちばんまとまってるかな。
2.新ノードにBitcoin Nodeをインストール
umbrel の App Store から Bitcoin Node アプリをインストールします。
3.旧ノードから新ノードへブロックとチェーンステートをコピー
Bitcoin Node アプリで同期が始まり、同期割合が0.01%を超えたら、一旦新ノードのumbrelをストップします。
新ノード:
sudo /path/to/umbrel/scripts/stop
この後で詳しく書きますが、新ノードのログイン名がhugaの場合、
sudo /home/huga/umbrel/scripts/stop
です。
旧ノードから新ノードへデータをコピーします。rsyncを使用します。
以下のコマンドを旧ノードで実行し、blocks と chainstate のフォルダをコピーします。
旧ノード:
rsync -rav --progress /path/to/oldnode/umbrel/app-data/bitcoin/data/bitcoin/chainstate /path/to/oldnode/umbrel/app-data/bitcoin/data/bitcoin/blocks user@newnodeip:/path/to/umbrel/app-data/bitcoin/data/bitcoin
この時、/path/to/oldnode や user@newnodeip:/path/to/ は適切に書き換えてください。
例えば、旧ノードのログイン名がhoge、新ノードのログイン名がhuga、新ノードのIPアドレスが192.168.1.2の場合、
/path/to/oldnode → /home/hoge
user@newnodeip:/path/to/ → huga@192.168.1.2:/home/huga
私の場合、だいたい半日でコピーが完了しました。
コピー完了後、新ノードのumbrelを起動します。
新ノード:
sudo /path/to/umbrel/scripts/start
先ほどの例で言えば、sudo /home/huga/umbrel/scripts/start
新ノードでBitcoin Node アプリを開くと、ブロックデータのインデックス作成が開始され、しばらくすると同期が完了します。
上記で参考にしたサイトにはBitcoin Node アプリのAdvanced SettingsからCache Size (MB)を一時的に増やすとインデックスの作成が高速化されるとも書いてます。今回は私はやってません。
変更する場合は、同期完了後に元に戻してください。
4.新ノードに Lightning Node (LND) をインストール
umbrel の App Store から Lightning Node アプリをインストールします。
新旧両方のノードを停止します。
ここまでは旧ノードを普段どおり動作させていましたが、ついにここで動作を停止させることになります。また、これ以降旧ノードの umbrel を再開させることはありません。
新ノード:
sudo /path/to/umbrel/scripts/stop
先ほどの例で言えば、sudo /home/huga/umbrel/scripts/stop
旧ノード:
sudo /path/to/oldnode/umbrel/scripts/stop
先ほどの例で言えば、sudo /home/hoge/umbrel/scripts/stop
5.旧ノードから新ノードへ Lightning Node (LND) のデータをコピー
以下のコマンドを旧ノードで実行し、lightning node のフォルダをコピーします。
旧ノード:
rsync -rav --progress /path/to/oldnode/umbrel/app-data/lightning user@newnodeip:/path/to/umbrel/app-data
先ほど同様に適切に書き換えてください。
/path/to/oldnode → /home/hoge
user@newnodeip:/path/to/ → huga@192.168.1.2:/home/huga
コピーが完了したら、新ノードのみを再開させます。
新ノード:
sudo /path/to/umbrel/scripts/start
先ほどの例で言えば、sudo /home/huga/umbrel/scripts/start
新ノードの Lightning Node アプリを開いて、引っ越しが完了していることを確認します。
5.その他
Bitcoin Node アプリで、Prune Old Blocks を有効にしている場合、今回のやり方ではうまくBitcoin Node アプリの移行が出来ませんでした。(移行作業後、アプリ起動時にエラーで止まる。)
その場合、rsync コマンドに --delete オプションを付けることでうまくいきました。
旧ノード:
rsync -rav --progress --delete /path/to/oldnode/umbrel/app-data/bitcoin/data/bitcoin/chainstate /path/to/oldnode/umbrel/app-data/bitcoin/data/bitcoin/blocks user@newnodeip:/path/to/umbrel/app-data/bitcoin/data/bitcoin
コピー先にのみ存在し、コピー元にないファイルは削除するオプションです。これによりディレクトリの中身が新旧完全に同じになります。