LoginSignup
9
8

Umbrelでチャネルバックアップを自動化する(2024年版)

Last updated at Posted at 2024-02-15

始めに

オライリーのライトニングネットワークを読み、自宅にあったラズパイでノード運用をはじめました。ラビット忍者というノードです。

知らない方のために説明いたしますと、ライトニングネットワークは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を作成する

image.png
作成したいプロジェクトの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

image.png

これで無事にチャネルバックアップができるようになりました。
よきノード運用を!

参考

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8