チャネルバックアップファイルを自動でコピーしてみる
自分はDiamond Handsをきっかけに、最近umbrelの運用を始めたのですが(みなさんのumbrelの記事めちゃくちゃ参考になりました)、同じ理由でLNノードの運用を始めた方も少なからずいらっしゃるんじゃないでしょうか?
DHのノードへのチャネル開設には最低100万satoshi, 現在のBTC価格で約3万円が必要になります。
貴重なbitcoinをGOXしないためにも、バックアップは常日頃から心掛けたいところです。
最近知って焦ったんですが、オンチェーンのBTCはセットアップ時に表示される24単語のシードで復元可能ですが、LNのチャネルにあるBTCはシードでは復元できません。
何らかの理由でノードにアクセスできなくなった場合は、バックアップファイルが必要になります。バックアップファイルを使って相手ノードにチャネルを閉じてもらうことで、オンチェーンにBTCを戻すことができるみたいです。
umbrelではバックアップファイルを暗号化した上で、定期的にtor経由でアップロードしていて、シードが入力されたタイミングでサーバーからバックアップファイルが送られ、復号化される仕組みみたいです(たぶん)。
またダッシュボードから手動でダウンロードも可能です。
なのでumbrelだとシードだけで大丈夫っちゃ大丈夫な感じはしますが、チャネル開設のたびに手動で取るのも手間がかかるし、umbrelのサーバーにアクセスできなくなる可能性もゼロではないので、念には念を入れて、今回は自分でバックアップのコピーを取りたいと思います。
1. SSHでumbrelにログイン
まずはターミナルからsshでumbrelにログインします。
ssh umbrel@umbrel.local
2. inotify-toolsのインストール
umbrelにログインしたら、下記コマンドでinotify-toolsをインストールします。
sudo apt-get install inotify-tools
inotify-toolsは監視対象のファイルのイベント(変更,保存,削除など)を検知できるツールです。今回はchannel.backup(lndのバックアップファイル)を監視対象にします。チャネルが新しく開設されるとchannel.backupも更新されるので、そのタイミングで任意の場所にコピーをとりたいと思います。
3. サービスの作成
inotify-toolsのインストールが完了したので、次はコピーを行うサービスを作成します。
cd /usr/local/bin
スクリプトを作成し、編集します。
sudo nano copy-channel-backup.sh
nanoエディタが開くので以下のコードを貼り付けて保存します。COPY
をコピーを置きたいパスに変更してください。Ctrl+Oで保存し、Ctrl+Xで終了できます。
#!/bin/bash
FILE_DIR='/home/umbrel/umbrel/lnd/data/chain/bitcoin/mainnet/channel.backup'
BACKUP_DIR='コピーしたいパス/channel.backup'
while true; do
inotifywait $FILE_DIR
cp $FILE_DIR $BACKUP_DIR
done
保存ができたら実行権限を与えます。
sudo chmod +x copy-channel-backup.sh
4. サービス設定ファイルの作成
スクリプトが作成できたので、次にサービスの設定ファイルを作成します。
cd /etc/systemd/system/
設定ファイルを作成し、編集します。
sudo nano copy-channel-backup.service
以下を貼り付け保存します。
[Service]
ExecStart=/usr/local/bin/copy-channel-backup.sh
Restart=always
RestartSec=1
User=root
Group=root
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=copy-channel-backup
[Install]
WantedBy=multi-user.target
5. サービスの有効化,動作確認
準備が整ったのでサービスを起動します。
sudo systemctl start copy-channel-backup
次にログを確認します。
journalctl -fu copy-channel-backup
ログにWatches established
と出力されていれば正常に起動しています。(Ctrl+Cで終了)
次にサービスを有効化します。
sudo systemctl enable copy-channel-backup
最後に動作確認をしてみたいと思います。下記コマンドを実行します。
touch ~/umbrel/lnd/data/chain/bitcoin/mainnet/channel.backup
3. で指定したパスにchannel.backupがコピーされていたら成功です!
6. 最後に
これでバックアップのコピーを自動で取ることができました。これで一安心、、、と言いたいとこですが、コピーをとっただけでは少し心もとないので、次回はバックアップを自動でクラウドにアップロードしてみたいと思います。