SPO BlockNotify設定
概要
最終更新日:2025/3/6 v2.5.0
-
ブロックログで表示されるブロック生成結果を任意のソーシャルアプリへ通知します。
-
ブロック生成スケジュールを自動取得し、取得スケジュール一覧を通知します。
-
通知先対応アプリ :
LINE/Slack/Discord/Telegram -
多言語ファイルを用意することで様々な言語に対応しました!
-
ブロックログと連動しておりますので、まだ設定されてない場合はブロックログ設定を先に導入してください。
-
以下の作業はguild-dbが存在するBPサーバーのみで実施し、ブロック生成スケジュールがないタイミングで実施してください。
-
設定は任意です。(設定しなくてもブロック生成に影響はありません)
- 各サービスのAPIを利用するため送信データが各サービスのサーバーに流れます。その点を十分に理解しご活用ください。
-
エポックのスケジュール通知はオン/オフ設定可能です
1. 依存プログラムのインストール
Python環境のセットアップ
パッケージの更新
sudo apt update && sudo apt upgrade -ypythonバージョンの確認
python3 -VPython 3.12.3Python
3.10以上がインストールされていること
依存関係のインストール
sudo apt install -y python3-pip python3-venv python3-fullpython3 -m venv ~/notify-venv
~/notify-venv/bin/pip install -U pip
~/notify-venv/bin/pip install watchdog pytz python-dateutil requests discordwebhook slackweb i18nice[YAML] python-dotenv確認
~/notify-venv/bin/python -c "import watchdog, pytz, dateutil, requests, discordwebhook, slackweb, i18n, dotenv; print('OK')"OK実行スクリプトと設定ファイルのダウンロード
bn_release="$(curl -s https://api.github.com/repos/btbf/block-notify/releases/latest | jq -r '.tag_name')"
wget https://github.com/btbf/block-notify/archive/refs/tags/${bn_release}.tar.gz -P $NODE_HOME/scripts
cd $NODE_HOME/scripts
tar zxvf ${bn_release}.tar.gz block-notify-${bn_release}/block_notify.py block-notify-${bn_release}/config.ini block-notify-${bn_release}/i18n/
mv block-notify-${bn_release} block-notify
rm ${bn_release}.tar.gz2. 通知アプリの設定
通知させたいアプリのタブをクリックし設定を確認してください。
お知らせ
2025年3月末をもってLINE Notifyサービス終了に伴い、LINE Messaging APIに対応しました。
無料版においては、月の送信上限が200通までとなっております。
(複数人で運用する場合は「送信数×人数」でカウントされますのでご注意ください)
新しいAPIはLINE公式アカウントを通じて配信されるため、設定を間違えるとセキュリティ漏洩のリスクがあります。複数人で運用する場合はご注意ください
-
LINEビジネスIDの作成 LINE Business ID https://manager.line.biz/ にアクセスし、お持ちのLINEアカウントでログインするか新規でBusinessIDを作成してください
-
LINE公式アカウントの作成
アカウントタブから作成を選択します。
アカウント作成情報
アカウント名:任意の名前
運用目的:その他
主な使い方:メッセージ配信用
LINEヤフー for Businessを友だち追加のチェックを外します。
LINE Official Account Managerへをクリック
- Messaging APIの設定
右上の「設定」をクリック
プロフィール画像を編集するとプールアイコンを設定できます
左メニューの「Messaging API」をクリックし、「Messaging APIを利用する」をクリック
「プロバイダーを作成」欄に「notify」と入力し、「同意する」をクリック
空欄のまま「OK」をクリック
- LINE Developers設定
コンソールにログイン
プロバイダーから先ほど作成した「notify」をクリック
2で作成したLINE公式アカウントをクリック
「Messaging API」タブをクリック
ページ下部の「チャンネルアクセストークン(長期)」で「実行」をクリック
発行されたトークンを控えます
(発行されたトークンはいつでも確認することができます)
line_notify_tokenの値として使用します
上部に戻り「チャンネル基本設定」をクリック
「あなたのユーザーID」を控えます
line_user_idの値として使用します
-
サーバーを追加
-
「オリジナルの作成」を選択
-
「自分と友達のため」を選択
-
任意のサーバー名を入力して「新規作成」をクリック
-
通知したいチャンネルの歯車マークをクリック
-
「連携サービス」をクリックし、「ウェブフックを作成」をクリック
-
「ウェブフックURLをコピー」をクリックし、一旦メモ帳などに貼り付けます
-
Telegramの検索欄で「@botFather」を検索して認証マーク付きのアカウントをクリック
-
STARTをクリック
-
/newbotコマンドを入力
-
任意のbot名を入力する 例)「btbf_bot」最後は必ず
_botで終わるようにします
-
緑で隠した部分のAPIトークンをメモ帳に控えます
-
赤枠で囲ったbotチャンネルに参加
-
検索欄で「@RawDataBot」を検索してクリック
-
STARTをクリック
-
Chat idをメモ帳に控えます
-
Slackを起動し、通知用のワークスペースとチャンネルの設定
-
Incoming Webhookの設定ページへアクセス
-
通知したいワークスペースとチャンネルを選択
-
Webhook URLをメモ帳に控えます
-
ページ下部の
設定を保存するをクリック
3. 通知プログラムの設定
設定ファイルをSJG用にします
cd $NODE_HOME/scripts/block-notify
sed -i config.ini \
-e 's!/opt/cardano/cnode!'${NODE_HOME}'!' \
-e 's!files/!'${NODE_CONFIG}-'!' \
-e 's!notify_language = en!notify_language = ja!' \
-e 's!Etc/UTC!Asia/Tokyo!'設定ファイルの編集
以下の設定ファイル内容詳細を参照し、ご自身の環境に合わせた値を設定してください。
cd $NODE_HOME/scripts/block-notify
nano config.ini設定ファイル内容詳細
| 項目 | 値 | 使用用途 |
|---|---|---|
pool_ticker | ex.) SJG | プールティッカー名を入力 |
notify_language | 英語:en日本語: ja | 通知言語を入力 |
notify_timezone | Asia/Tokyo タイムゾーン一覧 | お住いのタイムゾーンを指定 |
notify_platform | LineDiscordSlackTelegram | 通知先プラットフォームを指定 (複数指定は無効) |
notify_level | 全て:AllConfirm以外: ExceptConfirmMissのみ: OnlyMissed | 通知基準を設定 |
nextepoch_leader_date | 概要のみ:SummaryOnly概要と日付: SummaryDate | 次エポックスケジュール日時の通知有無 次エポックスケジュール日付一覧を通知に流したくない場合は SummaryOnlyを記載してください |
line_notify_token | LINE設定で発行したチャンネルアクセストークン | Line通知用のトークンを入力 |
line_user_id | LINE設定で発行したユーザーID | Line通知用のユーザーIDを入力 |
discord_webhook_url | Discord設定の(7)で発行したウェブフックURL | DiscordウェブフックURLを入力 |
slack_webhook_url | Slack設定の(4)で発行したWebhook URL | SlackウェブフックURLを入力 |
telegram_token | Telegram設定の(5)で発行したAPIトークン | Telegram APIトークンを入力 |
telegram_id | Telegram設定の(9)で表示されたChat id | Telegram ChatIDを入力 |
node_home | ex.)/home/usr/cnode | node_homeディレクトリパスを入力 |
guild_db_dir | ex.)%(node_home)s/guild-db/blocklog/ | guild-dbのパスを入力%(node_home)sは変数のため変更しないでください |
shelley_genesis | ex.)%(node_home)s/files/shelley-genesis.json | shelley_genesisのファイルパスを入力%(node_home)sは変数のため変更しないでください |
byron_genesis | ex.)%(node_home)s/files/byron-genesis.json | byron_genesisのファイルパスを入力%(node_home)sは変数のため変更しないでください |
サービスファイルの設定
cat > $NODE_HOME/service/cnode-blocknotify.service << EOF
# file: /etc/systemd/system/cnode-blocknotify.service
[Unit]
Description=Cardano Node - SPO Blocknotify
BindsTo=cnode-cncli-sync.service
After=cnode-cncli-sync.service
[Service]
Type=simple
User=$(whoami)
WorkingDirectory=${NODE_HOME}/scripts/block-notify
ExecStart=/home/${USER}/notify-venv/bin/python -u ${NODE_HOME}/scripts/block-notify/block_notify.py
Restart=on-failure
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cnode-blocknotify
[Install]
WantedBy=cnode-cncli-sync.service
EOFsudo cp $NODE_HOME/service/cnode-blocknotify.service /etc/systemd/system/cnode-blocknotify.servicesudo chmod 644 /etc/systemd/system/cnode-blocknotify.servicesudo systemctl daemon-reloadsudo systemctl enable --now cnode-blocknotify.service環境変数にログ確認用エイリアスを追加
echo alias blocknotify='"journalctl --no-hostname -u cnode-blocknotify -f"' >> $HOME/.bashrc環境変数再読み込み
source $HOME/.bashrc起動確認
blocknotify----------------------------------------------
SPO Block Notify - Version:2.5.0
----------------------------------------------
~~~
[***] SPO Block Notify(v2.*.*)を起動しました新規セットアップは以上です。
4. アップデート手順
SPO BlockNotifyの停止
sudo systemctl stop cnode-blocknotify.serviceアップデートファイルのダウンロード
bn_release="$(curl -s https://api.github.com/repos/btbf/block-notify/releases/latest | jq -r '.tag_name')"
wget https://github.com/btbf/block-notify/archive/refs/tags/${bn_release}.tar.gz -P $NODE_HOME/scripts
cd $NODE_HOME/scripts
tar zxvf ${bn_release}.tar.gz block-notify-${bn_release}/block_notify.py block-notify-${bn_release}/i18n
cp block-notify-${bn_release}/block_notify.py block-notify/block_notify.py
cp -r block-notify-${bn_release}/i18n block-notify/
rm -rf block-notify-${bn_release} ${bn_release}.tar.gzv2.4.1以下からv2.5.0へアップデートの場合は以下も実施
cd $NODE_HOME/scripts/block-notify/
sed -i '13a line_user_id = ' config.iniLINE通知を使用している方へ
2025年3月末をもってLINE Notifyサービス終了に伴い、LINE Messaging APIに対応しました。
無料版においては、月の送信上限が200通までとなっております。
(複数人で運用する場合は「送信数×人数」でカウントされますのでご注意ください)
上記の点を踏まえ、他の通知システム(Discord/Telegram/Slack)へ移行するか新しいLINE通知の設定を実施してください。
LINE公式アカウント発行後、config.iniのline_notify_tokenとline_user_idを発行した値に書き換えてください。
SPO BlockNotifyの起動
sudo systemctl start cnode-blocknotify.serviceバージョンの確認
$HOME/notify-venv/bin/python $NODE_HOME/scripts/block-notify/block_notify.py versionv2.5.05. アンインストール手順
sudo systemctl stop cnode-blocknotify.servicesudo systemctl disable cnode-blocknotify.servicesudo systemctl daemon-reloadsudo rm /etc/systemd/system/cnode-blocknotify.servicesudo rm -rf $NODE_HOME/scripts/block-notifysudo rm -rf $HOME/notify-venvLast updated on