セルフホスト · ntfy · 認証設計

セルフホストntfyでmacOSの通知を受け取る方法(Bearerトークン・Basic認証対応)

パブリックな ntfy.sh の代わりに、自宅サーバーやVPS、Tailscale上の独自ntfyインスタンスへMacの通知を送りたい開発者向けに、iOSのAPNs即時配信設定(upstream-base-url)、ACLアクセス制限、Bearerトークン認証の手順をまとめます。

brew install --cask n2ctech/tap/notiferry

最終更新: · macOS 15.0 以降対応 · 7日間無料トライアル

要点まとめ

  • iPhoneのntfyアプリをバックグラウンドで即座に起こす(APNs)ために、server.yml に upstream-base-url: "https://ntfy.sh" を設定します。
  • auth-default-access: "deny-all" で第三者のアクセスを遮断し、ntfy token add でMac用のBearerトークン(tk_...)を発行します。
  • NotiFerryはカスタムHTTPSサーバーURLと、macOSキーチェーンに保存されるBearerトークン/Basic認証に対応しています。

なぜntfyをセルフホストするのか?

公式の https://ntfy.sh は手軽で優秀ですが、以下のようなケースではセルフホスト(Dockerや単一バイナリ)が選ばれます。

  • 通知データを外部の共有サーバーに残したくない: ntfyは配信遅延や再接続に備えてメッセージを約12時間キャッシュします。セルフホストならキャッシュ先を自分のVPSや自宅サーバーに限定できます。
  • トークン認証(ACL)でトピックを厳密に保護したい: 推測されにくいトピック名だけに頼らず、deny-all とBearerトークンで認証を強制できます。
  • レート制限を自分で管理したい: CIログやビルド通知を大量に流す場合でも、パブリックサーバーのIP制限を気にする必要がありません。

server.ymlの設定とiOS APNs即時配信の仕組み

セルフホストntfyで最もつまずきやすいのが、「ブラウザでは届くのにiPhoneの画面を閉じると通知が来ない」という問題です。iOSではApp Storeで配布されている公式ntfyアプリだけがAppleのAPNsプッシュ権限を持っているため、セルフホストサーバーから https://ntfy.sh へ「新着通知がある」というハッシュシグナルだけを転送する設定(upstream-base-url)が必要です。

# /etc/ntfy/server.yml
base-url: "https://ntfy.example.com"
listen-http: ":2586"
cache-file: "/var/cache/ntfy/cache.db"
cache-duration: "12h"

# アクセス制御(デフォルトで非公開にし、トークンまたはユーザー認証を必須化)
auth-file: "/var/lib/ntfy/user.db"
auth-default-access: "deny-all"

# iPhone (iOS) でバックグラウンド即時プッシュ通知(APNs)を有効にするために必須
upstream-base-url: "https://ntfy.sh"

この設定により、iPhoneのntfyアプリはAPNsで即座にウェイクアップし、実際のメッセージ本文はあなたの https://ntfy.example.com から直接取得します。

ACLアクセス制御とBearerトークン(tk_...)の発行

サーバー上でユーザーを作成し、トピックへのアクセス権を付与したうえで、Mac用のBearerトークンを発行します。

# 1. 管理者または配信用ユーザーを作成し、トピックへの読み書き権限を付与
ntfy user add --role=user macbook
ntfy access macbook "mac-alerts-*" rw

# 2. Mac用のアクセストークン(tk_...)を発行
ntfy token add --label="MacBook Pro NotiFerry" macbook

発行された tk_... トークンを使って、Macのターミナルから疎通テストを行えます。

curl -s \
  -H "Authorization: Bearer tk_your_secret_token" \
  -H "Title: ビルド完了" \
  -d "すべてのテストが通過しました" \
  https://ntfy.example.com/mac-alerts-prod

NotiFerryをセルフホストntfyサーバーに接続する

CLIだけでなく、macOS通知センターに届くデスクトップアプリ全体の通知をセルフホストntfyへ流したい場合は、NotiFerryのセットアップ画面または設定画面で以下のように指定します。

  • Server URL: あなたのHTTPSサーバーURL(例:https://ntfy.example.com)を入力します。
  • Topic: ACLで許可したトピック名(例:mac-alerts-prod)を入力します。
  • Authentication: Bearer token(tk_...)または Basic auth(ユーザー名とパスワード)を選択します。シークレットはmacOSキーチェーンに保存され、診断ログには一切出力されません。
macOSメニューバー常駐

MacとiPhoneでの動作イメージ

macOSの通知センターフォルダに読み取り専用アクセスを許可し(フルディスクアクセス不要)、iPhoneの無料アプリ「ntfy」で専用トピックを購読します。テスト通知の受信を確認すると、7日間の無料トライアルが開始されます。

7日間無料トライアルをダウンロード
brew install --cask n2ctech/tap/notiferry
iPhoneに届く通知の例(ntfyアプリ内)
ntfyたった今

Claude Code — Permission required

Allow Bash tool in notiferry? · 全文表示 または タイトルのみ

ntfy · バースト集約2分前

Xcode — Build Succeeded (+4 earlier alerts)

macOS上のNotiFerryダッシュボード画面。通知転送が有効で、セッション中に9件の通知が転送され、プライバシーモードとiPhoneへのテスト送信ボタンが表示されている様子
macOS版NotiFerry:転送ステータス、プライバシーモード選択、iPhoneでのテスト受信確認。

よくある質問

セルフホストしたntfyサーバーでも、iPhoneでリアルタイムにプッシュ通知を受け取れますか?

はい。ただし、AppleのAPNs証明書は公式のntfy iOSアプリに紐づいているため、セルフホストサーバーの server.yml に upstream-base-url: "https://ntfy.sh" を設定する必要があります。これにより、メッセージ本文を自分のサーバーに置いたまま、ntfy.sh経由でiPhoneへウェイクアップ用のAPNsシグナルを送ることができます。

NotiFerryはBearerトークン(tk_...)やBasic認証に対応していますか?

はい。NotiFerryはカスタムHTTPSサーバーURL、Bearerトークン(tk_...)、およびユーザー名+パスワードによるBasic認証に対応しています。入力された認証情報は平文の設定ファイルではなく、macOSキーチェーンに安全に保存されます。

Tailscaleやローカルネットワーク内のHTTPサーバーは使えますか?

NotiFerryは転送経路の保護のため、HTTPSエンドポイント(有効なTLS証明書を持つURL)を前提としています。TailscaleのHTTPS証明書機能(tailscale cert)やCloudflare Tunnel、Caddy / NginxのLet's Encrypt証明書をご利用ください。

セルフホストntfyを使えばエンドツーエンド暗号化(E2EE)になりますか?

いいえ。公開のntfy.shの代わりに自分が管理するサーバーだけが通知本文を受け取るようになりますが、プロトコル自体はHTTPS通信であり、サーバー上のキャッシュには平文で一時保持されます。機密性の高いアプリについては、NotiFerry側で「アプリ名とタイトルのみ」または「汎用通知」モードを併用することを推奨します。

ファウンディングリリース

独自のntfyサーバーとmacOS通知センターを安全に接続。

7日間の無料トライアルは、テスト通知が実際にiPhoneへ届いたことを確認してから開始されます。その後は買い切りライセンス(€9.99・最大2台のMacで利用可能、サブスクリプションなし)で継続利用できます。購入後30日以内の全額返金保証付き(強行法規に基づく消費者の権利は影響を受けません)。

7日間無料トライアルをダウンロードまたは今すぐライセンスを購入 · €9.99
brew install --cask n2ctech/tap/notiferry
買い切り(サブスクなし) · 最大2台のMac · 定期的なオンラインライセンス認証