myNodeでcharge-lndを使うには
★2022/7/10(日)再編集しました。
admin.macaroonがLND再起動時の他のタイミングでも権限を消している事が判明。その対策のため主に5.6.を加筆・修正しました。
これのmyNode版を目指しました。
v0.2.57 で検証しました。
docker版charge-lndだと差し替えたりアンインストールするのに便利なのでこちらを使用します。
1.StatusページにあるLinux terminalボタンを押してWebシェルを起動
※端末からSSHでログインしてもおk
2.作業用ディレクトリを作る。
sudo mkdir -p /mnt/hdd/upgrades/charge-lnd
sudo chown -R admin:admin /mnt/hdd/upgrades
3.コンフィグファイルを作る。
cd /mnt/hdd/upgrades/charge-lnd
nano charge.config
charge.configの中身は冒頭のリンク先を参照ください。
4.charge-lnd(docker版)をダウンロードする。
docker pull accumulator/charge-lnd:v0.2.8
なぜか最新版では動かない。v0.2.8なら動いた。
5.admin.macaroonに読み出し権限を付与する。
myNodeはLNDの特権的操作権限を意味するadmin.macaroonにおいてファイル所有者以外読み出し許可を消している。
それをLNDが起動した時以外のタイミングでもやっている。
これはmyNodeの仕様のようです。
なので今回はその仕組みを改変せず、ファイルを自分用にコピーするという回避策で対応します。
sudo cp /mnt/hdd/mynode/lnd/data/chain/bitcoin/mainnet/admin.macaroon /home/admin/charge-lnd
sudo cp /mnt/hdd/mynode/lnd/tls.cert /home/admin/charge-lnd
sudo chown admin:admin admin.macaroon tls.cert
mkdir -p data/chain/bitcoin/mainnet/
mv admin.macaroon data/chain/bitcoin/mainnet/
※charge-lnd v0.2.8ではmacaroonオプションが使えません。
そのため今回作ったcharge-lndディレクトリにLNDそっくりのディレクトリ構造を作り、そこにadmin.macaroonを配置します。
※LNDの設定ファイル(lnd.conf)が編集された場合tls.certが更新される可能性があります。この場合tls.certを再びコピーしてください。
6.cronで実行するためのスクリプトを用意する。
nano charge-lnd.sh
chmod +x charge-lnd.sh
charge-lnd.shの中身はこれ
#!/bin/sh
docker run --rm \
--network="host" --add-host=mynode.local:127.0.0.1 \
-e GRPC_LOCATION=mynode.local:10009 \
-e LND_DIR=/app \
-e CONFIG_LOCATION=/app/charge.config \
-v /mnt/hdd/upgrades/charge-lnd:/app \
accumulator/charge-lnd:v0.2.8
7.cronで自動実行
crontab -e
設定ファイルを開いたら以下を末行に追加する。
0 */12 * * * /mnt/hdd/upgrades/charge-lnd/charge-lnd.sh
charge-lnd.shが0時と12時の12時間おきに実行されます。
<おわり>
【おまけ】
ドライラン機能を活用するには
ドライラン(dry-run)とはコンフィグを適用した場合の結果は表示するが、実際の適用はしない機能。コンフィグをいじくってちゃんと意図したとおりになるのか確認するのに便利。
1.テスト用コンフィグを編集する。
cd /mnt/hdd/upgrades/charge-lnd
nano test.config
2.ドライランする。
docker run --rm \
--network="host" --add-host=mynode.local:127.0.0.1 \
-e GRPC_LOCATION=mynode.local:10009 \
-e LND_DIR=/app \
-e CONFIG_LOCATION=/app/test.config \
-v /mnt/hdd/upgrades/charge-lnd:/app \
accumulator/charge-lnd:v0.2.8 --dry-run
※ コマンドが長いのでスクリプトファイルに仕込むのもまたヨシ。
3.テスト用コンフィグを本番用コンフィグに反映させる。
cp test.config charge.config
<終わり>
【メモ】
もしかしたらこちらのほうがcharge-lndの実行が速くなるかもしれない。
#!/bin/sh
docker run --rm -it \
--network="host" \
-e GRPC_LOCATION=<myNodeに割り当てているIPアドレス>:10009 \
-e LND_DIR=/app \
-e CONFIG_LOCATION=/app/charge.config \
-v /mnt/hdd/upgrades/charge-lnd:/app \
accumulator/charge-lnd:v0.2.8
Umbrelの場合はLNDにdocker内部のIPアドレス(固定IPで将来動かすことがないであろう)が割り当てられている。
myNodeはLNDはdockerコンテナではなくOSに直置きされているので有線・無線LANポートに割り当てされているIPアドレスを使う。この場合DHCPで動的に割り当てされている場合上記のようにIPアドレスを直に書いてしまうと違うIPアドレスとなった時に動かない。
6.ではそれを回避できる設定内容になっている。回避できるけれども名前解決に時間がかかり起動が遅くなるようだ。(自分が動作確認した限りでは)
数日に一度開いて読んでそっと閉じてる...。
もう!!