
チャネルバックアップファイルを自動でコピーしてみる
はじめまして!
自分はDiamond Handsに参加しようと思って最近umbrelの運用を始めたのですが(みなさんのumbrelの記事めちゃくちゃ参考になりました)、同じ理由で始めた方も少なからずいらっしゃるんじゃないでしょうか?
DHのノードへのチャネル開設には最低100万satoshi, 現在のBTC価格で約3万円が必要になります。
もちろんそれ以上のキャパシティでチャネルを開設している方もたくさんいらっしゃると思います。
貴重なBTCをGOXしないためにもバックアップは常日頃から心掛けたいところです!
最近知って焦ったんですが、オンチェーンのBTCはセットアップ時に表示される24単語のシードで復元可能ですが、LNのチャネルにあるBTCはシードでは復元できません!
何らかの理由でノードにアクセスできなくなった場合は、バックアップファイルが必要になります。バックアップファイルを使って相手ノードにチャネルを閉じてもらうことで、オンチェーンにBTCを戻すことができるみたいです。(今度実際にやってみて記事にしたいと思います)
umbrelではバックアップファイルを暗号化した上で、定期的にtor経由でアップロードしていて、シードが入力されたタイミングでサーバーからバックアップファイルが送られ、復号化される仕組みみたいです(たぶん笑)。
またダッシュボードから手動でダウンロードも可能です。+open channelの右側にある・・・ボタンからダウンロードできます。
なので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='/home/umbrel/umbrel/lnd/data/chain/bitcoin/mainnet/channel.backup'
COPY='コピーしたいパス/channel.backup'
while true; do
inotifywait $FILE
cp $FILE $COPY
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. 最後に
お疲れ様でした!
これでバックアップのコピーを自動で取ることができました!これで一安心、、、ではないですね笑
これでも結局umbrelにアクセスできなくなった場合に困ってしまいます。コピーをとっただけでは少し心もとないですね。
なので次回は、バックアップを自動でクラウドにアップロードしてみたいと思います!