Uptime Kuma — 高機能で美しいセルフホスト型監視ツール
louislam/uptime-kuma
★ 93,870 ・ JavaScript ・ MIT
概要
Uptime Kuma は、オープンソースで開発されているセルフホスト型の監視ツールです。「Uptime Robot」のような商用監視サービスの代替として、自前のインフラやサーバー上に構築して稼働状況をチェックしたい開発者やインフラ運用者に向けて作られています。
Webサイトの死活監視はもちろん、ポートの導通確認、DNSレコードのチェック、Dockerコンテナの稼働状態の確認など、日常的なシステム監視で必要とされる主要な機能を網羅しています。また、単にチェックを行うだけでなく、直感的に把握できるダッシュボード画面や、一般公開可能なステータスページの作成機能、90種類以上の外部サービスに対応した障害通知機能を備えています。商用サービスにデータを預けることなく、手元で完結する監視基盤を構築したい環境に適しています。
主な特徴
- 幅広い監視プロトコルへの対応: HTTP(s)、TCP、Ping、DNS Record、Websocket に加え、HTTP(s) Keyword(特定文字列の存在確認)、HTTP(s) Json Query、Push 監視、Steam Game Server、Docker コンテナなど、多様な対象を監視できます。
- 高速でリアクティブなユーザーインターフェース: Vue 3 と Bootstrap 5 を採用した単一ページアプリケーション(SPA)として実装されており、リアルタイムにステータスやチャートが更新される軽快な UI/UX を提供します。
- 豊富な通知チャネル: Telegram、Discord、Slack、Gotify、Pushover、Email(SMTP)をはじめ、90種類以上の通知サービスと連携してダウンタイムや復旧の通知を送信できます。
- 短い監視インターバルと証明書情報の取得: 最短20秒間隔での定期チェックに対応しており、Ping チャートによる応答速度の可視化や、SSL/TLS 証明書の有効期限情報の確認も行えます。
- 複数のステータスページと独自ドメインマッピング: 監視対象をグループ化して表示するステータスページを複数作成でき、それぞれを特定のカスタムドメインにマッピングして公開することが可能です。
- 認証とセキュリティ機能: 2段階認証(2FA)によるログイン保護や、プロキシ経由でのリクエスト送信にも標準で対応しています。
使い方
Uptime Kuma のセットアップ方法には、Docker を利用する方法と、ホスト環境に Node.js を直接セットアップする方法が用意されています。
1. Docker Compose を利用する場合
公式で提供されている compose.yaml を取得して起動するのが最も手軽な方法です。
mkdir uptime-kuma
cd uptime-kuma
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
docker compose up -d
起動後、ブラウザから http://localhost:3001(またはサーバーのIPアドレスの 3001 番ポート)にアクセスすることで初期設定画面が表示されます。
2. Docker コマンドで起動する場合
単体の docker run コマンドで永続ボリュームを指定して起動することもできます。
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2
ローカルホストからのみアクセスを許可したい場合は、ポート指定を -p 127.0.0.1:3001:3001 に変更します。
3. Node.js 環境(非 Docker)でセットアップする場合
Docker を使わない場合は、Node.js 20.4 以上、Git、PM2 が必要です。サポートされているOSは、Debian、Ubuntu、Fedora、Arch Linux などの主要な Linux ディストリビューション、および Windows 10 (x64) / Windows Server 2012 R2 (x64) 以上です。
# リポジトリのクローンとセットアップ
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
# 動作確認のみ行う場合
node server/server.js
# 推奨: PM2 を用いてバックグラウンドで常駐実行する場合
npm install pm2 -g && pm2 install pm2-logrotate
pm2 start server/server.js --name uptime-kuma
PM2 を使用している場合、ログの確認には pm2 monit、サーバー再起動時の自動起動設定には pm2 startup && pm2 save を実行します。
技術的なポイント
Uptime Kuma の README に記載された開発背景(Motivation)によると、作者はかつて存在した監視ツール「Statping」の不安定さやメンテナンス停止を受けて、安定したセルフホスト監視ツールの作成を目指しました。その過程で以下の技術的なアプローチや学習目標が設定されています。
- Vue 3 と Vite によるフロントエンド構築: リアクティブかつ高速な画面描画を実現するため、Vue 3 およびビルドツールとして Vite が採用されています。UI デザインには Bootstrap 5 のコンポーネントが活用されています。
- REST API に依存しない WebSocket / SPA 構成: 一般的な Web アプリケーションで用いられる REST API 経由のリクエスト・レスポンス方式ではなく、WebSocket(Socket.IO)と SPA(Single Page Application)の通信をベースに設計されています。これにより、監視結果の即時反映やステータスのリアルタイム同期が実現されています。
- Node.js (>= 20.4) によるバックエンド: サーバー側は Node.js で実装されており、軽量かつ高速なイベント駆動処理によって多数の監視タスクを並行処理します。
- コンテナファーストな配布形態: 開発者が初めて Docker Hub に公開したイメージであることが記されており、Docker コンテナを通じた導入が最優先かつ手軽な選択肢として整備されています。
注意点
- ファイルシステムの制限: データ保存先として NFS(Network File System)はサポートされていません。Docker でボリュームを割り当てる際などは、必ずローカルディレクトリまたはローカルボリュームを使用する必要があります。
- 対応環境の制限: 非 Docker 環境において、FreeBSD、OpenBSD、NetBSD、および Replit や Heroku などのプラットフォームは非対応(❌)と明記されています。
- 非公式サイトへの注意: 検索エンジンで上位に表示されることがある「uptimekuma.co」というドメインは公式ウェブサイトではなく、プロジェクト側が管理しているものではありません。公式情報や導入手順は GitHub リポジトリ(または uptime.kuma.pet)を参照するよう警告されています。
- サポート窓口: 開発者個人のメールアドレスへの質問やサポート依頼は受け付けていません。トラブルシューティングや質問がある場合は、GitHub Issues や Reddit コミュニティ(r/UptimeKuma)を利用する必要があります。
- ライセンス: 本プロジェクトは MIT ライセンスの下で公開されています。
まとめ
Uptime Kuma は、直感的な UI と豊富な監視プロトコル、多様な通知連携を兼ね備えたセルフホスト型監視ツールです。Docker や PM2 を利用して容易に立ち上げることができ、個人の開発環境から社内インフラの稼働監視まで幅広く活用できます。





