AI

オープンソース通知・アラートプラットフォーム比較:ntfy vs Alertmanager vs Gotify でプッシュ通知をセルフホストする

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

オープンソース通知・アラートプラットフォーム比較:ntfy vs Alertmanager vs Gotify でプッシュ通知をセルフホストする

アプリやサーバーの重要なイベントをリアルタイムで受け取るプッシュ通知をSaaSに依存したくない場合、オープンソースのセルフホスト型通知プラットフォームが選択肢になります。ntfy・Alertmanager・Gotifyを比較し、サーバーアラート・アプリ通知・インシデント管理の実装方法を紹介します。

通知システムの設計パターン

  • プッシュ通知: スマホアプリへのリアルタイム通知(ntfy・Gotify)
  • アラートルーティング: Prometheusアラートの振り分け・エスカレーション(Alertmanager)
  • メール通知: サーバーサイドメール送信(Postfix・Mattermost)
  • ウェブフック: SlackやDiscordへのHTTPポスト

主要ツールの概要

ntfy

シンプルなHTTP経由のプッシュ通知サービスです。curlコマンド1行でスマホに通知を送れます。公式のntfy.shサービスか自前サーバーを使えます。

# ntfyサーバーをDockerで起動
docker run -p 80:80 -v /var/cache/ntfy:/var/cache/ntfy -v /etc/ntfy:/etc/ntfy binwiederhier/ntfy serve

# curlで通知を送信(自分のtopicに購読している全デバイスに届く)
curl -d "サーバーのディスクが90%になりました" ntfy.sh/my-server-alerts

# カスタムサーバーへ
curl   -H "Title: 本番サーバー障害"   -H "Priority: urgent"   -H "Tags: warning,server"   -d "DB接続エラーが発生しました"   https://ntfy.example.com/prod-alerts

# Pythonからの送信
import requests
requests.post(
    "https://ntfy.example.com/my-topic",
    data="デプロイが完了しました".encode("utf-8"),
    headers={
        "Title": "デプロイ完了",
        "Priority": "default",
        "Tags": "white_check_mark",
    }
)
# ntfy設定ファイル(/etc/ntfy/server.yml)
base-url: https://ntfy.example.com
listen-http: ":80"
cache-file: /var/cache/ntfy/cache.db
cache-duration: 12h
auth-file: /var/lib/ntfy/user.db
auth-default-access: "deny-all"

Alertmanager

PrometheusエコシステムのアラートルーティングツールNです。Prometheusが生成したアラートを受け取り、ルールに基づいてSlack・PagerDuty・メール・ウェブフックへルーティング・グルーピング・サイレンス・エスカレーションを行います。

# alertmanager.yml
global:
  slack_api_url: "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
  smtp_smarthost: "smtp.gmail.com:587"
  smtp_from: "alerts@example.com"

route:
  receiver: "slack-notifications"
  group_by: ["alertname", "cluster", "service"]
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  routes:
    - match:
        severity: critical
      receiver: "pagerduty"
      continue: true
    - match:
        severity: warning
      receiver: "slack-notifications"

receivers:
  - name: "slack-notifications"
    slack_configs:
      - channel: "#alerts"
        title: "{{ .GroupLabels.alertname }}"
        text: '{{ range .Alerts }}{{ .Annotations.summary }}{{ end }}'
        icon_emoji: ":bell:"

  - name: "pagerduty"
    pagerduty_configs:
      - routing_key: "your-pagerduty-key"

inhibit_rules:
  - source_match:
      severity: "critical"
    target_match:
      severity: "warning"
    equal: ["alertname", "cluster"]
# Prometheusのアラートルール
groups:
  - name: server-alerts
    rules:
      - alert: HighCPUUsage
        expr: 100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "CPU使用率が高い: {{ $value | printf `%.0f` }}%"

      - alert: DiskSpaceLow
        expr: (node_filesystem_free_bytes / node_filesystem_size_bytes) * 100 < 15
        for: 10m
        labels:
          severity: critical
        annotations:
          summary: "ディスク残量が15%を下回りました"

Gotify

Android・Web向けのセルフホストプッシュ通知サーバーです。REST APIとWebSocketでリアルタイム通知を配信します。

# Dockerで起動
docker run -p 8080:80 -v /var/gotify/data:/app/data gotify/server

# アプリトークンで通知を送信
curl -X POST "http://localhost:8080/message"   -H "Content-Type: application/json"   -d '{"message": "バックアップが完了しました", "title": "Backup", "priority": 5}'   -H "X-Gotify-Key: YOUR_APP_TOKEN"

機能比較表

比較項目ntfyAlertmanagerGotify
プッシュ通知(モバイル)✅ iOS/Android✅ Android
curlで即送信
Prometheus統合✅ ネイティブ
アラートルーティング✅ 高機能
グルーピング/サイレンス
PagerDuty/Opsgenie
メール送信
REST API
認証機能
iOS対応
セルフホスト容易さ★★★★★★★★☆☆★★★★☆
ライセンスApache 2.0Apache 2.0MIT
GitHub Stars19k+7k+11k+

Grafana Alertingとの連携

# Grafana → Alertmanager連携設定
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - alertmanager:9093

# Grafanaアラートルール(UIで設定するか設定ファイル形式)
groups:
  - name: grafana-managed-alerts
    rules:
      - uid: my-alert-uid
        title: レイテンシ上昇
        condition: C
        data:
          - refId: A
            queryType: range
            relativeTimeRange:
              from: 600
              to: 0

DevOps・監視ツールはDevOpsカテゴリ(/categories/devops)で一覧でき、セキュリティ関連のアラートツールはセキュリティカテゴリ(/categories/security)でも探せます。

FAQ

Q. ntfyとPushoverの違いは何ですか?

A. Pushoverはマネージドサービス(月額課金、自前サーバー不可)で、iOS・Androidに高品質なプッシュ通知を送れます。ntfyはオープンソースでセルフホスト可能で、iOSのAPNs通知も公式サポートするようになりました(iOS向けはntfy.shを経由するかセルフホストサーバーを使います)。データを自社インフラに保持したい・無制限の通知を無料で使いたい場合はntfyが優れています。

Q. AlertmanagerなしでPrometheusのアラートをSlackに送れますか?

A. Prometheusには--alertmanager.urlでAlertmanagerを指定する設計になっており、アラートのルーティングはAlertmanagerが担います。Alertmanagerなしで直接Slackに送る簡易的な方法としてはPrometheus Webhook Receiverや外部スクリプトを使えますが、グルーピング・サイレンス・エスカレーションが使えなくなります。本番環境ではAlertmanagerの使用を推奨します。

Q. ntfyで既読管理や通知履歴を確認できますか?

A. ntfyサーバーはキャッシュ期間内(デフォルト12時間)のメッセージを保持しており、WebUIとAPIで履歴を確認できます。ただしPushoverやFCMのような詳細な既読管理はありません。長期的な通知ログが必要な場合は通知をデータベースに保存する外部仕組みを用意するか、サーバーの cache-duration を延長します。

Q. オンコール(On-Call)管理もオープンソースでできますか?

A. はい。Grafana OnCall(旧Amixr)はオープンソースのオンコール管理プラットフォームで、アラートのエスカレーション・オンコールスケジュール・電話/SMS通知・PagerDuty代替として使えます。Alertmanagerと統合してPrometheusアラートをオンコールチームに自動エスカレーションする構成が人気です。

まとめ

ユースケース推奨ツール
スマホへのプッシュ通知(セルフホスト)ntfy
PrometheusアラートのルーティングAlertmanager
AndroidへのシンプルなプッシュAPIGotify
オンコール管理・エスカレーションGrafana OnCall

関連外部リソース

他の記事も読む

Let's Build Together

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

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