charge-lnd の自動実行結果をtelegramに投稿する
Umbrel で charge-lnd を cron で自動化できると、次は設定値の変化を確認したくなる。ThunderHubのChannelsで確認したり、sshでログインしてログを確認したり、それって結局手動実行してるのと同じだけ手間かけてるじゃん。
というわけで、cron が実行されると、結果をtelegramに投稿することで簡単に履歴が見られるようにしてみた。
使ったのは、
・telegram bot
・curl コマンドでtelegramに書き込み
参考にしたのはこの辺り。https://yuis-programming.com/?p=1241
詳しいやり方を書いてきます。
Telegram bot の設定
まずは、Telegram bot の設定をしましょう。
https://telegram.me/BotFather からBotFatherを開きます。
/newbot コマンドで新しいボットを作成します。
ボットの名前を聞かれるので、適当にcharge-lndとしました。
ボットのusername を聞かれるので、katana_charge_botにしました。katana_charge-lnd_botだと、invalidって怒られたので。
この名前は他のbotと重複できないので、ちょっと長めに付けたほうが通りやすくなります。
t.me から始まる URL(①) は Telegram 上でのそのbotでのチャットのアドレス。アクセスして開いて、Messageに「/start」を入力し、ボットを開始します。
ブラウザからもhttps://api.telegram.org/bot<TOKEN>/getUpdatesでアクセス。<TOKEN>は上の②で得られたトークンに置き換えてください。
得られたレスポンスの中の③の部分、「"id":1********5,」の1********5がchatIDです。
シェルスクリプトの準備
ここまで出来たら、次はシェルスクリプトを準備していきます。
charge-lnd をセットアップした際には、cronで docker run ......charge-lnd:latest のコマンドを実行するようにしていると思います。ここに書き足す形でも悪くはないのですが、わかりにくいので、今回はシェルスクリプトを別途用意します。
ターミナルソフトから、ssh -t umbrel@umbrel.local でumbrelにログイン。
nano ~/charge-lnd.sh でシェルスクリプトを新規作成。
シェルスクリプトの中身は以下の通り。
#!/bin/sh
#VAR にcharge-lndの実行結果を格納。
VAR=`docker run --rm --network=umbrel_main_network -e GRPC_LOCATION=[YOUR.LND.IP.ADDRESS]:10009 -e LND_DIR=/data/.lnd -e CONFIG_LOCATION=/app/charge.config -v /home/umbrel/umbrel/lnd:/data/.lnd -v /mnt/data/upgrades/charge-lnd/charge.config:/app/charge.config accumulator/charge-lnd:latest`
#Telegram にポスト
curl -s -X POST https://api.telegram.org/bot[TOKEN]/sendMessage -d chat_id=[chatID] -d text="$VAR"
VAR=`docker run ......charge-lnd:latest`の``で囲った中身が、もともとcronに記述していたものです。
[YOUR.LND.IP.ADDRESS]、[TOKEN]、[chatID]は、それぞれ適切なものに置き換えてください。
同じやり方で、Telegramに投稿する代わりに、LINEなどに送ることもできます。LINEに送る場合は、以下の[Line notify token]をLINE Notifyで得られたパーソナルアクセストークンに置き換えます。(詳細は省略)
#LINE にポスト
curl -X POST -H 'Authorization: Bearer [Line notify token]' -F 'message='"$VAR" https://notify-api.line.me/api/notify
シェルスクリプトを保存したら、コマンドラインから実行属性を追加します。
chmod a+x ~/charge-lnd.sh
ここまで出来たら、コマンドラインから~/charge-lnd.sh を実行して、Telegramに書き込まれることを確認しましょう。ただし、連続で実行してもcharge-lndの設定値に変化が発生しないので、何度も試す場合は、feeを手動で変更するなどして、設定値が変化するようにしておく必要があります。
cronの設定
無事にシェルスクリプトの動作が確認出来たら、最後はcronの設定です。
例えば、12時間に1回、ホームディレクトリに置いてるcharge-lnd.shを実行する場合、crontab -e から以下を記載します。
0 */12 * * * ~/charge-lnd.sh
あとは時間が来て、Telegramにcharge-lndの設定値が書き込まれているのを見届ければ完成です。
umbrelの時間(UST)は日本時間(JST)と9時間ずれているので注意。今回の例では日本時間9時と21時に実行されます。