AI

通知基盤比較:Novu vs Ntfy vs Apprise で通知を一元管理する

オープンソースラボ編集部2026年6月13日

通知基盤比較:Novu vs Ntfy vs Apprise で通知を一元管理する

メール・プッシュ通知・Slack・SMS・Webhookなど複数チャネルの通知を一元管理するオープンソース通知基盤は、プロダクト開発の重要なインフラです。Novu(デベロッパーファースト・マルチチャネル通知プラットフォーム)・Ntfy(HTTP PUBSUBシンプル通知)・Apprise(Python通知ライブラリ・100+チャネル対応)の3つが2026年のOSS通知ツールの主要選択肢です。

通知基盤を自前で持つ理由

  • コスト削減: Twilio($0.0075/SMS)・SendGrid($14.95/月〜)→セルフホストで大幅削減
  • 通知チャネル統合: メール・Slack・Discord・LINE・プッシュを1つのAPIで管理
  • 監査ログ: 誰に何の通知がいつ届いたかを完全追跡
  • レート制限・抑制: 通知の重複配信・過剰通知をコード不要でコントロール

主要ツールの概要

Novu

2022年公開、TypeScript製のOSSです。GitHubスター36k+。メール・SMS・プッシュ通知・Slack・Discord・Webhook等20+チャネルを統合管理するオープンソース通知インフラプラットフォームで、ノーコードワークフロービルダー・通知履歴・サブスクリプション管理・テンプレートエンジンを提供します。

# docker-compose.yml: Novu(Community)
version: "3.8"
services:
  novu-api:
    image: ghcr.io/novuhq/novu/api:latest
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
      API_ROOT_URL: https://novu-api.example.com
      FRONT_BASE_URL: https://novu.example.com
      MONGO_URL: mongodb://novu:${MONGO_PASS}@mongo:27017/novu
      REDIS_HOST: redis
      REDIS_PORT: 6379
      JWT_SECRET: ${JWT_SECRET}
      STORE_ENCRYPTION_KEY: ${ENCRYPTION_KEY}
      NEW_RELIC_ENABLED: "false"
    depends_on: [mongo, redis]

  novu-worker:
    image: ghcr.io/novuhq/novu/worker:latest
    environment:
      NODE_ENV: production
      MONGO_URL: mongodb://novu:${MONGO_PASS}@mongo:27017/novu
      REDIS_HOST: redis
      REDIS_PORT: 6379
      JWT_SECRET: ${JWT_SECRET}
      STORE_ENCRYPTION_KEY: ${ENCRYPTION_KEY}

  novu-web:
    image: ghcr.io/novuhq/novu/web:latest
    ports:
      - "4200:4200"
    environment:
      REACT_APP_API_URL: https://novu-api.example.com

  mongo:
    image: mongo:6
    environment:
      MONGO_INITDB_ROOT_USERNAME: novu
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASS}
    volumes:
      - mongo_data:/data/db

  redis:
    image: redis:7-alpine

volumes:
  mongo_data:
# Python: Novu SDK でマルチチャネル通知を送信
from novu.api import EventApi
from novu.config import NovuConfig

NovuConfig.configure('https://novu-api.example.com', 'your-api-key')

def send_order_notification(user_id: str, order_id: str, amount: float) -> dict:
    '''注文完了通知をメール+Slackで同時送信(Novuワークフロー経由)'''
    event_api = EventApi()
    result = event_api.trigger(
        name='order-completed',  # Novuダッシュボードで定義したワークフロー名
        recipients=user_id,       # Novu subscriber_id
        payload={
            'order_id': order_id,
            'amount': f'¥{amount:,.0f}',
            'delivery_date': '2026-06-20',
        },
    )
    return result.data

def bulk_notify_users(user_ids: list, message: str, workflow: str) -> list:
    '''複数ユーザーへの一括通知送信'''
    event_api = EventApi()
    results = []
    for uid in user_ids:
        r = event_api.trigger(name=workflow, recipients=uid, payload={'message': message})
        results.append({'user_id': uid, 'status': r.data.get('status')})
    return results

Ntfy

2021年公開、Go製のOSSです。GitHubスター19k+。HTTP PUBSUBプロトコルでシンプルなプッシュ通知を実現するOSSツールで、curl -d "デプロイ完了" ntfy.sh/mytopicのようなシンプルなHTTP POSTで任意のデバイス・サービスにプッシュ通知を送信できます。Androidアプリ・iOS・Webブラウザ通知対応。

# docker-compose.yml: Ntfy(セルフホスト)
version: "3.8"
services:
  ntfy:
    image: binwiederhier/ntfy:latest
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ntfy_cache:/var/cache/ntfy
      - ntfy_etc:/etc/ntfy
    command: serve
    environment:
      TZ: Asia/Tokyo
# Python: Ntfy でCI/CD完了通知・サーバー監視アラートを送信
import requests
import subprocess

NTFY_URL = 'https://ntfy.example.com'
TOPIC = 'myserver-alerts'

def notify(message: str, title: str = 'Alert', priority: str = 'default',
           tags: list = None) -> requests.Response:
    '''Ntfyでプッシュ通知を送信(スマホアプリに即時配信)'''
    return requests.post(
        f'{NTFY_URL}/{TOPIC}',
        data=message.encode('utf-8'),
        headers={
            'Title': title,
            'Priority': priority,  # 'min'|'low'|'default'|'high'|'max'
            'Tags': ','.join(tags or []),
            'Actions': 'view, 詳細確認, https://grafana.example.com',
        },
    )

def monitor_disk_usage(threshold_pct: float = 90.0) -> None:
    '''ディスク使用率が閾値を超えたらNtfyでアラート送信'''
    result = subprocess.run(['df', '-h', '/'], capture_output=True, text=True)
    for line in result.stdout.split('
')[1:]:
        parts = line.split()
        if parts and parts[4].endswith('%'):
            usage = float(parts[4].rstrip('%'))
            if usage >= threshold_pct:
                notify(
                    f'ディスク使用率: {usage}% ({parts[3]}空き)',
                    title='ディスク容量警告',
                    priority='high',
                    tags=['warning', 'hard_drive'],
                )

Apprise

2017年公開、Python製のOSSです。GitHubスター12k+。100+の通知サービス(Slack・Discord・LINE・Telegram・メール・SMS・プッシュ等)を統一APIで呼び出せるPython通知ライブラリで、セルフホストWebサービスとしても動作します。設定はapprise://スキーマのURLで統一管理できます。

# Python: Apprise で複数チャネルに通知(1行で100+サービス対応)
import apprise

def setup_notification_channels() -> apprise.Apprise:
    '''Appriseで複数の通知チャネルを設定'''
    ap = apprise.Apprise()
    # Slack通知
    ap.add('slack://tokenA/tokenB/tokenC/#general')
    # Discord Webhook
    ap.add('discord://webhook-id/webhook-token/')
    # メール(SMTP)
    ap.add('mailtos://user:pass@smtp.gmail.com/?to=admin@example.com&from=noreply@example.com')
    # LINE Notify
    ap.add('line://your-line-notify-token/')
    # Telegram
    ap.add('tgram://bot-token/chat-id/')
    # Ntfy(セルフホスト)
    ap.add('ntfy://ntfy.example.com/myserver-alerts/')
    return ap

def send_deploy_alert(version: str, status: str) -> bool:
    '''デプロイ完了/失敗アラートを全チャネルに一括送信'''
    ap = setup_notification_channels()
    emoji = 'V' if status == 'success' else 'X'
    return ap.notify(
        title=f'[{emoji}] デプロイ: v{version}',
        body=f'ステータス: {status}
バージョン: {version}
時刻: 現在時刻',
    )

# Apprise APIサーバー(セルフホスト)でのWebhook受信
# docker run -p 8000:8000 caronc/apprise:latest
# curl -X POST http://localhost:8000/notify/mykey #      -d '{"title":"Alert","body":"Server down!"}' #      -H 'Content-Type: application/json'

機能比較表

比較項目NovuNtfyApprise
マルチチャネル統合✅ 20+✅ 100+
ダッシュボード✅ Web UI
セットアップ難易度✅ 最易
SaaS代替SendGrid/Twilioプッシュ通知専門汎用ライブラリ
GitHub Stars36k+19k+12k+

通知基盤はDevOpsカテゴリ/categories/devopsのCI/CDパイプライン・監視(Prometheus/Grafana)と統合してデプロイ通知・アラート・インシデント通知を自動化します。その他カテゴリ/categories/miscのプロジェクト管理ツールとWebhookで連携してタスク完了・コメント追加などのイベントをSlackやメールにリアルタイム通知します。

FAQ

Q. Novuで「ユーザーが通知をオフにできる」サブスクリプション管理を実装するには?

A. NovuのSubscriber Preference APIで通知チャネル・ワークフロー別の配信設定をユーザーが管理できるUIを実装します。フロントエンド実装: ①@novu/notification-center(ReactコンポーネントまたはWeb Component)を組み込み②<NovuProvider subscriberId={userId} applicationIdentifier="your-app-id">でラップ③<NotificationCenter>コンポーネントが通知ベル・通知リスト・設定を自動レンダリング。Preference管理: Subscriber Preference APIでPUT /v1/subscribers/{subscriberId}/preferences{channel: {email: false}}でメール通知をオフ→次回トリガー時にNovuが自動的にメールチャネルをスキップ。バックエンド: GET /v1/subscribers/{subscriberId}/preferencesで現在の設定を取得→フロントエンドのトグルUIと同期。

Q. NtfyでCI/CDパイプラインのデプロイ完了通知を設定するには?

A. GitHub Actions・GitLab CI・JenkinsのパイプラインにNtfy通知ステップを追加して、デプロイ成功/失敗をスマホにプッシュ通知します。GitHub Actions設定: .github/workflows/deploy.ymlnotifyジョブを追加→if: always()で成功/失敗どちらでも実行→curl -d "デプロイ${{ job.status }}: ${{ github.ref }}" -H "Title: ${{ github.repository }}" -H "Priority: high" https://ntfy.example.com/ci-alerts。セルフホストNtfyのアクセストークン設定: /etc/ntfy/server.ymlauth-file: /etc/ntfy/user.dbntfy user add myuserntfy token add myuser→ActionsのSecretsNTFY_TOKENを登録→-H "Authorization: Bearer ${{ secrets.NTFY_TOKEN }}"でセキュアな認証。

Q. Appriseで設定ファイルを使って複数プロジェクトの通知を管理するには?

A. Appriseの設定ファイル(YAML/TEXT形式)で通知先チャネルをプロジェクト別に管理してコードから分離します。設定ファイル(~/.apprise/apprise.yml): version: 1urls:以下にURLスキーマを一覧。読み込み: ap = apprise.AppriseConfig()ap.add('~/.apprise/apprise.yml')a = apprise.Apprise()a.add(ap)。タグ管理: URLにtag: productiontag: devを付与→a.notify("メッセージ", tag="production")で本番環境の通知チャネルのみに送信。Apprise APIサーバー: docker run -p 8000:8000 -v ~/apprise:/config caronc/apprise:latestcurl -X POST http://localhost:8000/notify/config-key -d '{"title":"Deploy Done","body":"v1.2.3"}'でWebhookから複数チャネルに同時通知。

Q. NovuとAppriseをどのように使い分けるべきですか?

A. プロダクトのユーザー向け通知基盤にはNovuインフラ・運用・開発ツールの通知自動化にはAppriseシンプルなプッシュ通知・モバイル連携にはNtfyが適しています。Novu優位: ①ユーザーへの通知(注文確認・アカウント変更・マーケティング)を一元管理②Webダッシュボードで通知テンプレートを非エンジニアが編集③通知履歴・開封率・エラーをダッシュボードで可視化④購読管理(ユーザー自身が通知をオフにできる)。Apprise優位: ①cronやスクリプトから1行で100+サービスに通知→コード量最小②CI/CD通知・サーバー監視アラート・バッチ処理完了通知→開発・運用用途に最適③設定ファイルでチャネルを一元管理→セキュリティキーをコードに書かない。Ntfy優位: ①自前のプッシュ通知サーバーを最短構築→スマホアプリで受信②LINE/Slackなど外部サービス依存なし→完全自己完結した通知基盤③HTTP POSTのみで通知→シェルスクリプトからも簡単利用。

まとめ

ユースケース推奨ツール
プロダクトのユーザー通知基盤Novu
シンプルなプッシュ通知・インフラ監視Ntfy
100+チャネル統合・Python自動化Apprise

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。