Language: ja
Uptime Kuma:VPSで自分専用のWebサイト監視を構築する
Webサイトは 200 OK を返し続けていても、実際には壊れていることがあります。バックアップも、分かりやすいエラーを出さずに停止する場合があります。Uptime Kumaはこの両方を検知します。Webサイト、API、ポート、バックグラウンドジョブをチェックし、問題が発生すると通知を送ります。
このガイドでは、監視システムをどこに置くべきか、どのようなVPSが必要か、そしてUptime Kuma 2のインストール、HTTPSの有効化、Telegramの接続、ステータスページの作成方法を説明します。
Uptime Kumaを7つの手順で構築する
- 監視対象のプロジェクトとは別に、小規模なVPSを用意します。
monitor.example.comのようなサブドメインをVPSに向けます。- DockerをインストールしてUptime Kuma 2を起動します。
- 内部ポート
3001を閉じ、HTTPSを有効にします。 - HTTP、DNS、TCP、またはPush監視を作成します。
- Telegramを設定し、必要に応じてステータスページを作成します。
- 更新とdataディレクトリの外部バックアップを設定します。
サービスを開始するためにAIキーは必要ありません。キーがなくても、ページの保存、リスト、メモ、OCR、全文検索は動作します。自動タグと要約は生成されません。
Uptime Kumaとは
Uptime Kumaは、無料でオープンソースのセルフホスト型監視ツールです。ダッシュボードとチェック履歴は自分のサーバーに保存されます。
HTTP(S)、TCPポート、ping、DNS、WebSocket、レスポンス内のテキストとJSON、Pushシグナル、Dockerコンテナを監視できます。最小チェック間隔は20秒です。さらに、数十種類の通知チャンネル、2FA、レイテンシーグラフ、TLS証明書監視、複数のステータスページにも対応しています。
200 OK の裏に隠れた障害を検知する方法
基本的なHTTPチェックが確認するのはレスポンスコードだけです。しかし、Webサーバーが空白ページやアプリケーションのエラー画面を表示しながら、成功ステータスを返すことがあります。
より正確に監視するには、次の機能を使います。
- Keyword — サイト名や「Account dashboard」のような、期待するフレーズを探します。
- JSON Query — APIレスポンス内の、たとえば
status: healthyのような値をチェックします。
これにより、ポートに到達できるだけでなく、アプリケーションが正常動作を示す期待されたサインを少なくとも1つ返していることも確認できます。
バックアップとcronジョブ用のPush監視
Push監視はサービスを定期的に問い合わせません。代わりに、サービス自身から定期的なシグナルが届くのを待ちます。バックアップスクリプトやcronジョブは、正常に完了した後で一意のURLを呼び出します。シグナルが時間内に届かなければ、Uptime Kumaが障害として報告します。
これにより「静かな」問題を検知できます。Webサイトは動作しているのに、毎日のバックアップが数日間作成されていない、といったケースです。
Uptime Kumaでは代替できないもの
Uptime Kumaは主に可用性と応答時間を追跡します。CPU、RAM、ディスク、ログ、コンテナのメトリクスを監視するには、Prometheus、Netdata、Zabbixなどの監視システムを組み合わせてください。Kumaは外部から問題に気づき、メトリクスは原因の特定に役立ちます。
監視を別のVPSで動かす理由
Webサイトと同じ場所にUptime Kumaをインストールすると、VPS、ネットワーク、データセンターの障害によって、プロジェクトと監視システムの両方が停止する可能性があります。その場合、通知も送信されません。
ダッシュボードは別のVPSでホストし、重要なプロジェクトでは別の場所または別のプロバイダーを使いましょう。Kuma自体を外部サービスで監視するのも有効です。監視システムもまた、何かに見張られる必要があります。
Uptime Kumaのサーバー要件
プロジェクトはCPUとRAMについて厳格な公式最小要件を定めていません。小規模な導入に適した実用的な開始構成は次のとおりです。
- 1 vCPU
- 1 GB RAM
- 10 GB SSD
- Ubuntu 24.04 LTS
- IPv4
- HTTPS用のドメインまたはサブドメイン
この構成で通常、数十個の単純なチェックに対応できます。数百の監視、長期間の履歴保存、ブラウザーを使ったチェックが必要なら、2 GB以上のRAMを選んでください。
VPSにUptime Kumaをインストールする方法
この例ではUbuntu 24.04と monitor.example.com サブドメインを使います。
1. DNSとファイアウォールを設定する
VPSのIPv4アドレスを指す A DNSレコードを作成します。SSHで接続し、必要なポートを開きます。
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable新しい接続をテストするまで、現在のSSHセッションを閉じないでください。
2. DockerとDocker Composeをインストールする
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version3. Uptime Kuma 2を起動する
mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma
cat > compose.yaml <<'EOF'
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
EOF
docker compose up -d
docker compose ps:2 タグを使ってください。latest は現在も古いv1ブランチを指しています。/app/data ディレクトリはローカルディスクまたは通常のDockerボリュームに保存する必要があります。適切なファイルロック機能を持たないNFSやストレージシステムでは、データベースが破損する可能性があります。
ポート 3001 は 127.0.0.1 からのみアクセスできます。HTTPS付きのリバースプロキシがダッシュボードを外部に公開します。
4. CaddyでHTTPSを有効にする
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
monitor.example.com {
reverse_proxy 127.0.0.1:3001
}
EOF
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddyDNSがVPSを指していれば、CaddyはTLS証明書を自動的に要求し、WebSocket接続をプロキシします。ダッシュボードはドメインまたはサブドメインのルートでホストしてください。example.com/kuma のようなアドレスには対応していません。
5. 管理者アカウントを作成する
https://monitor.example.com を開き、長く一意なパスワードでアカウントを作成し、二要素認証を有効にします。
最初の監視を追加する方法
Add New Monitor をクリックし、HTTP(s) を選択します。
- 名前と完全なURLを入力します。
- 間隔を、たとえば60秒に設定します。
- 一時的なネットワーク障害に対応するため、再試行を2回追加します。
- 通知チャンネルを選択します。
- 監視を保存し、成功したチェックが表示され始めることを確認します。
メインサイトにはHTTPとKeywordのチェックが便利です。APIにはヘルスエンドポイントとJSON Queryを使います。監視だけを理由にデータベースや管理ポートをインターネットへ公開しないでください。信頼できるネットワークまたはVPNを使います。
バックアップ用Push監視の例
Push 監視を作成したら、その一意のURLをスクリプトの最後に追加します。
backup-command && \
curl -fsS "https://monitor.example.com/api/push/SECRET_TOKEN?status=up&msg=backup-ok"このリクエストはバックアップが正常に完了した後でのみ実行されます。Pushトークンはパスワードと同じように扱ってください。URLを知っている人なら誰でも偽のシグナルを送れます。
Telegramを接続する方法
@BotFather からボットを作成してメッセージを送り、Settings → Notifications → Telegram を開きます。Bot TokenとChat IDを入力して Test をクリックし、チャンネルを監視に割り当てます。重要なサービスにはメールなどの2つ目のチャンネルも追加してください。
ステータスページを作成する方法
Status Pages では、監視をグループ化し、現在のステータスと稼働履歴を表示し、ドメインを割り当て、Maintenanceを通じて予定作業を知らせることができます。内部IPアドレスや技術的なURLは公開しないでください。利用者に必要なのは「Website」「API」「Account dashboard」「Payments」のようなコンポーネントだけです。
Uptime Kumaの更新とバックアップ
大きな更新の前に、コンテナを停止してdataディレクトリを保存します。
cd /opt/uptime-kuma
docker compose down
tar -czf /root/uptime-kuma-$(date +%F).tar.gz \
data compose.yaml
docker compose up -dアーカイブを別のデバイスまたは外部ストレージへ移動します。同じVPS上のコピーでは、サーバーの削除やディスク障害から保護できません。
通常の更新では次を実行します。
cd /opt/uptime-kuma
docker compose pull
docker compose up -d --force-recreate起動後に docker compose ps を確認し、ダッシュボードを開いてテスト通知を送ります。
Uptime KumaにはどのVPSを選ぶべきか
小規模な導入なら、1 vCPUと1 GB RAMのLinux VPSで十分です。最大性能よりも独立性が重要です。メインプロジェクトが利用できないときも、監視は動き続けなければなりません。
監視対象のサービスが別のプラットフォームまたは独立したノードで動いているなら、tropic.host のVPSにUptime Kumaを置けます。Ubuntu、Docker、固定IPがあればダッシュボードをすぐに起動でき、チェック数の増加に合わせてリソースを増やせます。
本番環境がすでに同じインフラで動いているなら、別のノードを選ぶか外部監視を追加してください。CPUコアを増やすより、障害ドメインを分離するほうが役に立ちます。
よくある間違い
| 間違い | 問題になる理由 | より良い方法 |
|---|---|---|
| 監視がプロジェクトの隣で動いている | 共通障害でサービスと通知の両方が停止する | 別のVPSまたは場所を使う |
ポート 3001 がインターネットに公開されている | リバースプロキシやHTTPSなしでダッシュボードにアクセスできる | ポートを 127.0.0.1 にバインドする |
200 ステータスコードだけを確認している | アプリケーションエラーが成功に見えることがある | KeywordまたはJSON Queryを追加する |
latest タグを使っている | 古いv1ブランチを指している | louislam/uptime-kuma:2 を使う |
| バックアップを同じVPSに保存している | サーバーと一緒に消えてしまう | data ディレクトリを別の場所へコピーする |
まとめ
Uptime Kumaは小さなVPSを、Webサイト、API、DNS、ポート、証明書、バックグラウンドジョブのための自分専用の監視センターに変えます。Keywordは壊れたページの検知、JSON Queryは不正なAPIレスポンスの検知、Pushは停止したバックアップやcronジョブの検知に役立ちます。
信頼性の高い構成にするには、監視システムを本番環境から分離し、ポート 3001 を閉じ、HTTPSと2FAを有効にして、2つの通知チャンネルを設定します。その後、dataディレクトリの外部バックアップとUptime Kuma自体の独立したチェックを用意します。
FAQ
Uptime Kumaは無料ですか?
はい。プロジェクトはオープンソースで、MITライセンスで配布されています。費用がかかるのはインフラ、ドメイン、外部バックアップだけです。
Uptime KumaにはどのくらいのRAMが必要ですか?
小規模な導入なら1 GB RAMが現実的な開始点です。数百のチェック、長期間の履歴保存、Browser Engineを使う場合は2 GB以上を割り当ててください。
DockerなしでUptime Kumaをインストールできますか?
はい。Node.jsとPM2を使えます。ただし、Docker ComposeのほうがVPS上での更新、移行、復元を通常は簡単に行えます。
ドメインなしでUptime Kumaを使えますか?
技術的には可能で、IPアドレスまたはSSHトンネルを使います。インターネットから恒久的にアクセスするなら、HTTPS付きのサブドメインのほうが安全です。
Uptime KumaはCPU、RAM、ディスクの使用量を表示しますか?
完全なサーバーメトリクスシステムとしては表示しません。リソース監視にはPrometheus、Netdata、Zabbix、または別の専門ツールを組み合わせてください。
