SPO JAPAN GUILD
ステークプール構築

SPO BlockNotify設定

概要

最終更新日:2025/3/6 v2.5.0

  • ブロックログで表示されるブロック生成結果を任意のソーシャルアプリへ通知します。

  • ブロック生成スケジュールを自動取得し、取得スケジュール一覧を通知します。

  • 通知先対応アプリ : LINE/Slack/Discord/Telegram

  • 多言語ファイルを用意することで様々な言語に対応しました!

  • ブロックログと連動しておりますので、まだ設定されてない場合はブロックログ設定を先に導入してください。

  • 以下の作業はguild-dbが存在するBPサーバーのみで実施し、ブロック生成スケジュールがないタイミングで実施してください。

  • 設定は任意です。(設定しなくてもブロック生成に影響はありません)

  • 各サービスのAPIを利用するため送信データが各サービスのサーバーに流れます。その点を十分に理解しご活用ください。
  • エポックのスケジュール通知はオン/オフ設定可能です

1. 依存プログラムのインストール

Python環境のセットアップ

パッケージの更新

sudo apt update && sudo apt upgrade -y

pythonバージョンの確認

python3 -V
期待される表示例:
Python 3.12.3

Python 3.10以上がインストールされていること

依存関係のインストール

sudo apt install -y python3-pip python3-venv python3-full
python3 -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.gz

2. 通知アプリの設定

通知させたいアプリのタブをクリックし設定を確認してください。

お知らせ

2025年3月末をもってLINE Notifyサービス終了に伴い、LINE Messaging APIに対応しました。 無料版においては、月の送信上限が200通までとなっております。
(複数人で運用する場合は「送信数×人数」でカウントされますのでご注意ください)


新しいAPIはLINE公式アカウントを通じて配信されるため、設定を間違えるとセキュリティ漏洩のリスクがあります。複数人で運用する場合はご注意ください
  1. LINEビジネスIDの作成 LINE Business ID https://manager.line.biz/ にアクセスし、お持ちのLINEアカウントでログインするか新規でBusinessIDを作成してください

  2. LINE公式アカウントの作成

アカウントタブから作成を選択します。

アカウント作成情報

アカウント名:任意の名前
運用目的:その他
主な使い方:メッセージ配信用

LINEヤフー for Businessを友だち追加のチェックを外します。

LINE Official Account Managerへをクリック

  1. Messaging APIの設定

右上の「設定」をクリック

プロフィール画像を編集するとプールアイコンを設定できます

左メニューの「Messaging API」をクリックし、「Messaging APIを利用する」をクリック

「プロバイダーを作成」欄に「notify」と入力し、「同意する」をクリック

空欄のまま「OK」をクリック

  1. LINE Developers設定

コンソールにログイン

プロバイダーから先ほど作成した「notify」をクリック

2で作成したLINE公式アカウントをクリック

「Messaging API」タブをクリック

ページ下部の「チャンネルアクセストークン(長期)」で「実行」をクリック

発行されたトークンを控えます
(発行されたトークンはいつでも確認することができます)
line_notify_tokenの値として使用します

上部に戻り「チャンネル基本設定」をクリック

「あなたのユーザーID」を控えます
line_user_idの値として使用します

  1. サーバーを追加

  2. 「オリジナルの作成」を選択

  3. 「自分と友達のため」を選択

  4. 任意のサーバー名を入力して「新規作成」をクリック

  5. 通知したいチャンネルの歯車マークをクリック

  6. 「連携サービス」をクリックし、「ウェブフックを作成」をクリック

  7. 「ウェブフックURLをコピー」をクリックし、一旦メモ帳などに貼り付けます

  1. Telegramの検索欄で「@botFather」を検索して認証マーク付きのアカウントをクリック

  2. STARTをクリック

  3. /newbotコマンドを入力

  4. 任意のbot名を入力する 例)「btbf_bot」最後は必ず_botで終わるようにします

  5. 緑で隠した部分のAPIトークンをメモ帳に控えます

  6. 赤枠で囲ったbotチャンネルに参加

  7. 検索欄で「@RawDataBot」を検索してクリック

  8. STARTをクリック

  9. Chat idをメモ帳に控えます

  1. Slackを起動し、通知用のワークスペースとチャンネルの設定

  2. Incoming Webhookの設定ページへアクセス

  3. 通知したいワークスペースとチャンネルを選択

  4. Webhook URLをメモ帳に控えます

  5. ページ下部の設定を保存するをクリック

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_tickerex.) SJGプールティッカー名を入力
notify_language英語:en
日本語:ja
通知言語を入力
notify_timezoneAsia/Tokyo
タイムゾーン一覧
お住いのタイムゾーンを指定
notify_platformLine
Discord
Slack
Telegram
通知先プラットフォームを指定
(複数指定は無効)
notify_level全て:All
Confirm以外:ExceptConfirm
Missのみ:OnlyMissed
通知基準を設定
nextepoch_leader_date概要のみ:SummaryOnly
概要と日付:SummaryDate
次エポックスケジュール日時の通知有無
次エポックスケジュール日付一覧を通知に流したくない場合はSummaryOnlyを記載してください
line_notify_tokenLINE設定で発行したチャンネルアクセストークンLine通知用のトークンを入力
line_user_idLINE設定で発行したユーザーIDLine通知用のユーザーIDを入力
discord_webhook_urlDiscord設定の(7)で発行したウェブフックURLDiscordウェブフックURLを入力
slack_webhook_urlSlack設定の(4)で発行したWebhook URLSlackウェブフックURLを入力
telegram_tokenTelegram設定の(5)で発行したAPIトークンTelegram APIトークンを入力
telegram_idTelegram設定の(9)で表示されたChat idTelegram ChatIDを入力
node_homeex.)/home/usr/cnodenode_homeディレクトリパスを入力
guild_db_direx.)%(node_home)s/guild-db/blocklog/guild-dbのパスを入力
%(node_home)sは変数のため変更しないでください
shelley_genesisex.)%(node_home)s/files/shelley-genesis.jsonshelley_genesisのファイルパスを入力
%(node_home)sは変数のため変更しないでください
byron_genesisex.)%(node_home)s/files/byron-genesis.jsonbyron_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
EOF
sudo cp $NODE_HOME/service/cnode-blocknotify.service /etc/systemd/system/cnode-blocknotify.service
sudo chmod 644 /etc/systemd/system/cnode-blocknotify.service
sudo systemctl daemon-reload
sudo 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.gz

v2.4.1以下からv2.5.0へアップデートの場合は以下も実施

cd $NODE_HOME/scripts/block-notify/
sed -i '13a line_user_id = ' config.ini

LINE通知を使用している方へ

2025年3月末をもってLINE Notifyサービス終了に伴い、LINE Messaging APIに対応しました。 無料版においては、月の送信上限が200通までとなっております。
(複数人で運用する場合は「送信数×人数」でカウントされますのでご注意ください)

新しいAPIはLINE公式アカウントを通じて配信されるため、設定を間違えるとセキュリティ漏洩のリスクがあります。複数人で運用する場合はご注意ください

上記の点を踏まえ、他の通知システム(Discord/Telegram/Slack)へ移行するか新しいLINE通知の設定を実施してください。
LINE公式アカウント発行後、config.iniline_notify_tokenline_user_idを発行した値に書き換えてください。

SPO BlockNotifyの起動

sudo systemctl start cnode-blocknotify.service

バージョンの確認

$HOME/notify-venv/bin/python $NODE_HOME/scripts/block-notify/block_notify.py version
期待される表示例:
v2.5.0

5. アンインストール手順

sudo systemctl stop cnode-blocknotify.service
sudo systemctl disable cnode-blocknotify.service
sudo systemctl daemon-reload
sudo rm /etc/systemd/system/cnode-blocknotify.service
sudo rm -rf $NODE_HOME/scripts/block-notify
sudo rm -rf $HOME/notify-venv

Last updated on

Cookieの使用について

当サイトでは、ドキュメントの効果測定と利用状況の把握のため、Google Analytics を使用しています。

同意すると、分析用 Cookie が有効になります。