始めに
オライリーのライトニングネットワークを読み、自宅にあったラズパイでノード運用をはじめました。ラビット忍者というノードです。
知らない方のために説明いたしますと、ライトニングネットワークはBitcoinを少額決済で利用できるようにするLayer2の技術です。
ライトニングネットワークではノード(ネットワークを構成するサーバー)を立てた後、他のノードとチャネルを開いて運用します。
チャネルとは自ノードと他ノードをつなぐ送信用の通信トンネルであり、複数のノードとチャネルを開くことで効率的な送金が可能になります。
チャネルを開くに当たって、ある日ノードがぶっ壊れたときに復旧ができるようにどのノードとどのチャネルを開いていたかを事前にバックアップしておくと安心です。今回の記事はそのような人のために役立つ内容となっています。
昨年10月にLNの開発者によって重大な欠陥が報告された(置き換えサイクリング攻撃)ばかりなのですが、一応の対策方法も出ているため気にせず行きます。
対象読者
- Umbrlを使ったライトニングネットワークのノード運用を始めたばかりの初心者
- チャネルバックアップを昔に設定していたがこの機会に最新版へアップデートしたい人
チャネルバックアップを自動化する
基本的な手順
基本的な設定方法はtoshihrさんが書かれているこちらの記事を参照します。
DropboxのAPI仕様が変わったため、現在は上記記事のままでは動きませんでした。
そのため、今回私はDropboxの代わりにStorjを使用しました。
Storjは分散型のクラウドストレージサービスで、Amazon S3やGoogle Cloud Storageとの互換性を提供しています。IPFSとBlockchain技術を使用しており、高セキュリティかつ高い可用性、そして非常に安価に利用できます。
同様のサービスにFilecoinがあり、こちらもおすすめです。
以後は上記記事を参考にshスクリプトのダウンロードやインストール設定が済んでいる状態とします。
Storjのアカウントを用意する
Storjの公式ページに行き、アカウント登録を行います。25GBまで無料で利用可能です。
アップロード用のAccess Grant Keyを作成する
作成したいプロジェクトのAccessタブから、新しいAccess Keyを作成できます。
UmbrelにStorj CLIを導入する
ラズパイなのでARM64をインストールしました。
$ curl -L https://github.com/storj/storj/releases/latest/download/uplink_linux_arm64.zip -o uplink_linux_arm64.zip
$ unzip -o uplink_linux_arm64.zip
$ sudo install uplink /usr/local/bin/uplink
Access Grantの設定ファイルを読み込む。
$ uplink access import main accessgrant.txt
Bucketを作成する
StorjではBucketと呼ばれるファイルよりも大きな単位で仮想的なグループを作成できます。
$ uplink mb sj://UmbrelLNBackUP
shファイルのファイルアップロード処理を修正する
バックアップファイルのDropboxへのアップロード処理をStorjへのアップロード処理に修正します。
# UPLOAD
# --------------
upload_to_storj () {
uplink cp $1 sj://UmbrelLNBackUP
if [ $? -eq 0 ]; then
echo "Successfully uploaded!"
else
echo "Unknown error when uploading..."
fi
}
run_storj_backup () {
upload_to_storj $1
}
script実行処理をrun_storj_backup
に置き換えます。
run_backup_on_change () {
~~~snip~~~
run_storj_backup $BACKUPFILE_TIMESTAMPED
~~~snip~~~
run_storj_backup $BACKUPFILE_TIMESTAMPED.md5
~~~snip~~~
}
ファイルアップロードのトリガー条件を修正する
従来のままでは監視ファイルの全てのイベントに反応してしまうため、inotifywaitのトリガー条件を修正して書き込み終了時のみを検知するようにします。
- inotifywait $SOURCEFILE
+ inotifywait -e close_write $SOURCEFILE
テストアップロードを試す
systemdサービスを実行します。
$ sudo systemctl start lnd-channel-remote-backup
完了!
無事にテストが成功すれば、常駐としてデーモン化します。
$ sudo systemctl enable lnd-channel-remote-backup
これで無事にチャネルバックアップができるようになりました。
よきノード運用を!
参考