1761256089
2025-10-23 21:00:00
まとめ
-
ntfy.sh は、無料のクロスプラットフォーム通知サービスです。
-
サーバー、ホーム オートメーション、Raspberry Pi プロジェクトからの通知を受信するのに最適です。
-
ntfy.sh API への POST HTTP リクエストを実行できるスクリプト、コード、または Webhook を使用します。
ntfy.sh を使用すると、独自のスクリプト、ホーム ラボ、または自動化プロジェクトからデバイスに通知を送信できます。これは無料で、複数のプラットフォームに通知を配信するすべての作業を実行します。必要なのは、それを呼び出す方法を知っていることだけです。
ntfy.shとは何ですか?
ntfy.sh は、Apple および Android モバイル デバイスで動作するだけでなく、デスクトップ Web ブラウザにも通知を配信する無料の通知アプリです。主な使用例は、IT 管理者や技術愛好家がインフラストラクチャのライブ ステータス更新を取得することですが、これを使用して、ほぼすべてのスクリプトやコード、あるいは Webhook をサポートするサービスからアラートを受信することもできます。
通常、この種のプッシュ通知を受け取るには、アプリ全体を開発してアプリ ストアの承認プロセスを通過するか、Web プッシュを使用して Web アプリを設定する必要があるため、すべての処理がすでに行われているものがあれば、手間が大幅に節約されます。
ntfy.sh は何に使用するのですか?
ntfy.sh を使用している目的には、役に立つものとあまり役に立たないものがあります。バックアップが成功した場合と失敗した場合、Web サイトの 1 つが応答を停止した場合、またはサーバーの再起動が必要な場合に通知を受け取ります。私の NAS は、ディスクやメモリが不足し始めると報告してくれます。また、温度センサーも取り付けられているので、サーバー キャビネット内が異常に暑くなっているかどうかを知ることができます。あまり役に立たない面としては、新しいユーザーが私のアプリのいずれかにサインアップすると、スマイリーフェイスの通知が表示されます。
このツールの限界はサーバー監視だけではありません。これをホーム オートメーションやスクリプトに統合して、通知を送信させることができます。必要なのは、関連する ntfy.sh コマンドを Bash または Python スクリプトに追加することだけです。
洗濯機のセンサーと統合して、洗濯が完了したときに通知を受け取ったり、ガレージのドアが数分以上開いたままになった場合にアラートを受け取ったりすることもできます。多数のセンサーを Raspberry Pi に接続し、それを使用して家の周りのあらゆる種類の情報を受け取ることができます。
ntfy.sh はどのように使用しますか?
ntfy.sh は、API への POST HTTP リクエストを実行できる任意のスクリプト、コード、または Webhook から呼び出すことができます。
これは次のように機能します。ntfy.sh サーバー上にトピックを作成し、ntfy.sh アプリでトピックをサブスクライブします (ntfy.sh Web サイトでアプリ ストアのリンクを見つけるか、ブラウザベースのバージョンを使用するには[アプリ]をクリックします)。トピックの名前を知っている人なら誰でも通知を読むことができるため、トピックの名前は一意かつ秘密である必要があります (したがって、以下の例では、必ず置き換えてください)。
次に、スクリプトからそのトピックに通知を送信するだけで、サブスクライブされているデバイスが通知を受信します。パブリック ntfy.sh サーバーを無料で使用することも、スクリプト内の URL を独自の自己ホスト型インスタンスに置き換えることもできます。使用方法の詳細については、ntfy.sh ドキュメントを参照してください。
重要なルールが 1 つあります。機密情報を公開しないでください。アラートのみを送信し、認証情報や識別情報を通知に含めないでください。これらの情報は他人に読み取られ、傍受される可能性があります。認証は利用できますが、一般にトピック名がパスワードとして機能するため、重要な情報に対するセキュリティが十分ではありません。
ここでは、私が独自のスクリプトで使用しているスニペットに基づいた例をいくつか示します。
ntfy.sh を使用して Bash スクリプトの失敗を通知する
以下は、スクリプトが何らかの時点で失敗した場合に ntfy.sh 通知を送信するために Bash スクリプトに貼り付けるコマンドです。これは、curl を使用して HTTP リクエストを作成します。
#!/bin/bash
set -Eeuo pipefail
NTFY_URL="https://ntfy.sh/my_super_secret_topic"
TITLE_OK="Job COMPLETED"
MESSAGE_OK="Finished successfully on $(hostname)"
TITLE_FAIL="Job FAILED"
MESSAGE_FAIL="Script interrupted on $(hostname)"
notify() {
local title="$1"
local message="$2"
curl -fsS -H "Title: ${title}" -d "${message}" "${NTFY_URL}" || true
}
# Notify on any error and exit with the same status
trap 'rc=$?; notify "$TITLE_FAIL" "Script failed on $(hostname) (exit ${rc})"; exit "${rc}"' ERR
# Notify if user hits Ctrl+C and exit with 130 (SIGINT)
trap 'notify "$TITLE_FAIL" "$MESSAGE_FAIL"; exit 130' INT
# -----------------------------
# Your script goes here
# Any non-zero exit triggers the ERR trap above
# -----------------------------
# Notify on success
notify "$TITLE_OK" "$MESSAGE_OK"
トラップ コマンドはエラーをキャッチし、notify() 関数を呼び出します。この関数は NTFY_URL にリクエストを送信し、デバイスに表示するために TITLE_OK 値と TITLE_FAIL 値を渡します。
PowerShell および Windows タスク スケジューラでの ntfy.sh の使用
Windows タスク スケジューラはタイマーで動作するだけでなく、特定のイベントが発生したときにアクションを実行することもできます。 PC のディスク容量が不足している、または更新後に再起動が必要であるなどのイベントを使用して、PowerShell スクリプトをトリガーできます。
以下の PowerShell スクリプトは、独自のファイル (例: my_ntfy_script.ps1) に保存する必要があります。タイトル、メッセージ、ntfy.sh サーバーの URL を受け取り、指定された通知を送信します。
param(
[string]$Title = "Windows Event",
[string]$Message = "Triggered",
[string]$Url = "https://ntfy.sh/my_super_secret_topic"
)
try {
# Make HTTP Request to ntfy.sh API
Invoke-RestMethod -Method Post -Uri $Url -Headers @{ Title = $Title } -Body $Message -ErrorAction Stop
} catch {
# Write to the Application log on failure
Write-EventLog -LogName Application -Source "Windows PowerShell" `
-EventId 3001 -EntryType Warning `
-Message "ntfy.sh notify failed: $($_.Exception.Message)"
}
その後、Windows タスク スケジューラでイベント トリガーのタスクを作成できます。この例では、ユーザーがログインを試みて失敗したときに通知を送信し、セキュリティ ログに ID 4625 のイベントを作成します。
このスケジュールされたタスクを作成するには、Windows の[スタート]メニューでタスク スケジューラを検索して開き、ツールバーから[アクション]>[基本タスクの作成]を選択します。[タスクの作成]ダイアログで、タスクの名前とオプションの説明を入力します (例: ntfy.sh ログイン失敗通知)、[次へ]をクリックし、トリガーを[特定のイベントが記録されたとき]に設定し、もう一度[次へ]をクリックします。
PC の再起動時に通知をトリガーするには、ログ値を次のように設定します。 安全、イベント ID を次のように設定します。 4625をクリックし、もう一度「次へ」を押します。
次に、プログラムを開始するアクションを選択し、もう一度「次へ」ボタンを押します。以下のコマンドを「プログラム/スクリプト」フィールドにコピーし、スクリプトへのパスとトピック名を置き換えます。
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:Scriptsmy_ntfy_script.ps1" -Title "Login failed" -Message "Someone tried to access your PC" -Url "https://ntfy.sh/my_super_secret_topic"
もう一度「次へ」をクリックします。[プログラム]テキスト ボックスに指定された引数に関する警告が表示される場合がありますが、これは問題ありません。保存時に引数に変換されます。完了したら、次の画面で「完了」をクリックします。
完了すると、上に示したように、新しいタスクがタスク スケジュール ライブラリのリストに表示されます。テストするには、タスクを右クリックして「実行」を選択します。
これらの通知には、IP アドレスやユーザー名などの暴露情報は含まれないことに注意してください。通知の意味はわかっていますが、他の誰かが何らかの方法で ntfy.sh トピック名を推測した場合、その情報を使って何もすることはできません。
ntfy.sh と macOS Automator
macOS に付属の Automator ツールは見落とされがちで、おそらく無視されていますが、実際には多くのことができます。最小限のコーディングで一般的なタスクを自動化でき、自分自身の動作を記録してそれを繰り返すこともできます。 Bash スクリプトを組み込むこともできるので、上記のスニペットをここでも使用できます。
ntfy.sh アプリからの購読
モバイル デバイスの ntfy.sh アプリから (またはブラウザから Web アプリを使用して)、[サブスクリプションの追加]をタップし、トピック名 (カスタム サーバー アドレスを使用している場合はカスタム サーバー アドレス) を入力します。
購読したトピックがリストに表示されます…
…そして、スクリプトが実行されると、通知が届きます。
とてもシンプルです!そして間違いなく役に立ちます。
家から離れた場所で聞いておきたいDIYプロジェクト
まだ通知を送信するものが何もない場合は、ホームラボを開始してみてはいかがでしょうか (ホームラボは非常に便利で、ntfy.sh を含む多数のアプリを自己ホストできます)。
または、通知用の ntfy.sh をサポートするホーム アシスタントを使用して、Raspberry Pi からスマート ホームを実行します。いじくり回したい場合は、週末に行われる Raspberry Pi プロジェクト (そしてここやここでさらにいくつかのプロジェクト) を試してみて、まだ行われていない ntfy.sh を追加できるものがないかどうかを確認してください。
#サーバーからのプッシュ通知が必要ですかこのツールは #Discord #よりも優れています