VPSでUptime Kumaを導入する方法:Webサイトとサーバー監視の構築

読了時間 6分
Tropic
VPSでUptime Kumaを導入する方法:Webサイトとサーバー監視の構築

Uptime Kuma:VPSに自分専用のWebサイト監視環境を構築する

Webサイトは壊れていても 200 OK を返し続けることがあります。バックアップも、目立ったエラーを出さずに停止することがあります。Uptime Kumaはこの両方を検出できます。Webサイト、API、ポート、バックグラウンド処理を確認し、問題が発生すると通知を送信します。

この記事では、監視環境をどこに置くべきか、どの程度のVPSが必要か、Uptime Kuma 2のインストール、HTTPS、Telegram、ステータスページの設定方法を説明します。

7ステップで導入するUptime Kuma

  1. 監視対象のプロジェクトとは別に、小規模なVPSを用意する。
  2. monitor.example.com などのサブドメインをVPSへ向ける。
  3. Dockerをインストールし、Uptime Kuma 2を起動する。
  4. 内部ポート 3001 を外部から閉じ、HTTPSを設定する。
  5. HTTP、DNS、TCP、Pushの各モニターを作成する。
  6. Telegramを設定し、必要に応じてステータスページを作成する。
  7. 更新手順と、データディレクトリの外部バックアップを用意する。

Uptime Kumaとは

Uptime Kumaは、無料で利用できるオープンソースの自己ホスト型ツールです。ダッシュボードとチェック履歴は、自分のサーバーに保存されます。

HTTP(S)、TCPポート、ping、DNS、WebSocket、レスポンス内のテキストやJSON、Pushシグナル、Dockerコンテナを監視できます。最短のチェック間隔は20秒です。さらに、多数の通知先、2FA、応答遅延グラフ、TLS証明書の監視、複数のステータスページにも対応しています。

200 OK の裏に隠れた障害を見つける方法

通常のHTTPチェックで確認できるのは、レスポンスコードだけです。しかし、Webサーバーが空白ページやアプリケーションのエラー画面を表示しながら、成功ステータスを返すことがあります。

より正確に監視するには、次の機能を使います。

  • Keyword — サイト名や「アカウント画面」など、表示されるはずの文字列を探す;
  • JSON Query — APIレスポンス内の値を確認する。たとえば status: healthy

これにより、ポートへ接続できるだけでなく、アプリケーションが正常に動作している最低限の条件も確認できます。

バックアップとcron用のPushモニター

Pushモニターはサービスを定期的に問い合わせるのではなく、サービス側から送られてくる定期シグナルを待ちます。バックアップスクリプトやcronジョブは、正常終了した後に固有のURLへアクセスします。シグナルが予定どおり届かなければ、Uptime Kumaが障害として通知します。

この仕組みにより、「サイトは動いているが、毎日のバックアップが数日間作成されていない」といった静かな問題を発見できます。

Uptime Kumaでは代替できないもの

Uptime Kumaが主に監視するのは、可用性と応答時間です。CPU、RAM、ディスク、ログ、コンテナメトリクスについては、Prometheus、Netdata、Zabbixなどの監視システムを併用します。Kumaは外部から問題を検出し、メトリクスは原因の特定に役立ちます。

監視環境を別のVPSに置くべき理由

Uptime KumaをWebサイトと同じ場所にインストールすると、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アドレスを指すDNSの A レコードを作成します。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 version

3. 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 volumeに配置する必要があります。NFSや、適切なファイルロックに対応していないストレージでは、データベースが破損する可能性があります。

ポート 3001127.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 caddy

DNSがVPSを指していれば、CaddyはTLS証明書を自動的に取得し、WebSocketもプロキシします。ダッシュボードはドメインまたはサブドメインのルートに配置してください。example.com/kuma のようなURLはサポートされていません。

5. 管理者アカウントを作成する

https://monitor.example.com を開き、長くて一意なパスワードでアカウントを作成し、二要素認証を有効にします。

最初のモニターを追加する方法

Add New Monitor をクリックし、HTTP(s) を選択します。

  1. 名前と完全なURLを入力する。
  2. たとえば60秒のチェック間隔を設定する。
  3. 一時的なネットワーク障害による誤検知を避けるため、再試行を2回設定する。
  4. 通知先を選択する。
  5. モニターを保存し、成功したチェックが表示されることを確認する。

メインサイトには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 でBotを作成し、そのBotへメッセージを送信します。次に Settings → Notifications → Telegram を開きます。Bot TokenとChat IDを入力し、Test をクリックして、通知先をモニターへ割り当てます。重要なサービスでは、メールなど2つ目の通知先も追加します。

ステータスページを作成する方法

Status Pages では、モニターをグループ化し、現在の状態と稼働履歴を表示し、ドメインを割り当て、Maintenanceを使って計画メンテナンスを告知できます。内部IPや技術的なURLは公開しないでください。利用者には「Webサイト」「API」「アカウント画面」「決済」などの項目だけで十分です。

更新とバックアップ

大きな更新の前には、コンテナを停止してデータディレクトリを保存します。

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で十分です。性能よりも独立性が重要です。メインプロジェクトが停止している間も、監視環境は動作し続ける必要があります。

監視対象のサービスが別のプラットフォームまたは独立したノード上にある場合、Uptime Kumaを tropic.host のVPSに配置できます。Ubuntu、Docker、固定IPによってダッシュボードをすばやく起動でき、チェック数が増えたときにはリソースを拡張できます。

本番環境がすでに同じインフラ上にある場合は、別のノードを選ぶか、外部の予備モニターを追加します。障害点を分離することは、CPUコアを1つ増やすことよりも有効です。

よくあるミス

ミス問題になる理由推奨される方法
監視環境をプロジェクトと同じ場所に置く共通障害でサービスと通知の両方が停止する別の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つの通知先を設定します。さらに、データディレクトリを外部へバックアップし、Uptime Kuma自体も独立した方法で監視します。

FAQ

Uptime Kumaは無料ですか?

はい。MITライセンスで公開されているオープンソースプロジェクトです。費用がかかるのは、インフラ、ドメイン、外部バックアップだけです。

Uptime KumaにはどのくらいのRAMが必要ですか?

小規模な環境では、1 GB RAMから始めるのが現実的です。数百件のチェック、長期間の履歴、Browser Engineを利用する場合は、2 GB以上を割り当てます。

Dockerを使わずにUptime Kumaをインストールできますか?

はい。Node.jsとPM2を使ってインストールできます。ただしVPSでは、通常Docker Composeのほうが更新、移行、復元を簡単に行えます。

ドメインなしでUptime Kumaを使えますか?

技術的には、IPアドレスまたはSSHトンネル経由で利用できます。インターネットから継続的にアクセスする場合は、サブドメインとHTTPSを使うほうが安全です。

Uptime KumaでCPU、RAM、ディスク使用量を確認できますか?

本格的なサーバーメトリクスシステムとしては使えません。サーバーリソースの監視には、Prometheus、Netdata、Zabbixなどの専用ツールを併用してください。