【ITニュース解説】Self-host Uptime Kuma with Docker in 5 minutes (+ TLS-expiry alerts)
2025年10月01日に「Dev.to」が公開したITニュース「Self-host Uptime Kuma with Docker in 5 minutes (+ TLS-expiry alerts)」について初心者にもわかりやすく解説しています。
ITニュース概要
Uptime Kumaは、Webサイトの稼働状況やTLS証明書の有効期限を監視するツールだ。Dockerを使えば5分で簡単に導入でき、HTTP/HTTPS、ポートなどの状態を監視し、期限切れアラートを様々な方法で通知する。初心者でも手軽にシステム監視を始められる。
ITニュース解説
このニュース記事は、ウェブサイトやオンラインサービスの稼働状況を監視するツール「Uptime Kuma」を、自分で用意したサーバーに「自己ホスト」する方法について解説している。特に、アプリケーションを簡単に導入・実行できる「Docker」という技術を活用することで、初心者でも比較的短時間で監視システムを立ち上げられる点が注目ポイントだ。
まず、なぜこのような監視ツールが必要なのかを理解することが重要だ。もし運営しているウェブサイトやサービスが停止してしまったら、利用者はサービスを使えなくなり、ビジネスに大きな損害を与える可能性がある。しかし、サービスのダウンタイム(停止時間)をユーザーが先に気づくようでは、対応が遅れてしまう。そこでUptime Kumaのような監視ツールが役立つ。これは、まるでウェブサイトの番人のように、常にその状態をチェックし、異常があればすぐに管理者に通知する役割を担う。
Uptime Kumaは、単にウェブサイトが「動いているか、止まっているか」だけでなく、より詳細な監視が可能だ。例えば、特定のURLへのアクセスが正常か(HTTP/HTTPS監視)、データベースなどの特定のポートが開いているか(ポート監視)、サーバーとのネットワーク通信が可能か(Ping監視)といった項目を定期的にチェックする。そして、設定した基準から外れた異常を検知した場合、事前に登録されたメールアドレスや各種メッセージングアプリ(Telegram、Discordなど)を通じてアラート通知を送信する機能を持つ。
記事で紹介されている方法は「自己ホスト」と呼ばれる。これは、Uptime Kumaのようなアプリケーションを、外部のサービスプロバイダーに依存せず、自分自身で用意したサーバーにインストールして運用することを意味する。自己ホストの利点としては、データの管理を自分で行えること、サービスの利用料金がサーバーの費用のみで済むこと、そしてシステムの構成や運用において高い自由度を確保できることなどが挙げられる。
この自己ホストを簡単にするための中心的な技術が「Docker」と「Docker Compose」だ。Dockerは、アプリケーションとその実行に必要なすべての要素(プログラム本体、ライブラリ、設定ファイルなど)を「コンテナ」と呼ばれる独立した、軽量な実行環境にまとめて動かす技術だ。このコンテナは、あたかも小さな仮想マシンであるかのように機能し、開発環境や本番環境など、異なるOSやサーバー上でも一貫した動作を保証する。これにより、「私の環境では動いたのに、他の環境では動かない」といった、システム構築でよく発生する問題を解消し、複雑なインストール作業や環境設定の手間を大幅に削減できる。Uptime KumaをDockerコンテナとして動かすことで、必要な環境を「動かすだけ」という手軽さで提供できるようになるわけだ。
Docker Composeは、複数のDockerコンテナをまとめて定義し、一括で起動、停止、管理するためのツールである。今回のUptime Kumaのケースでは、Uptime Kuma自体が一つのコンテナだが、将来的にもっと複雑なシステムを構築する際には、データベースや別の補助サービスなど、複数のコンテナが必要になる場合がある。その際、Docker Composeを使うと、docker-compose.ymlという一つの設定ファイルにすべてのコンテナの構成を記述し、簡単なコマンド一つでそれらをまとめて管理できるため、非常に効率的だ。
Uptime Kumaを自己ホストするための具体的な手順は、まず「前提条件」として、Linuxベースのサーバー(例えば、インターネット上の「VPS:Virtual Private Server」、つまり仮想専用サーバーなど)と、そのサーバーにDockerおよびDocker Composeがインストールされている必要がある。また、後述するステータスページを公開する場合には、専用のドメインまたはサブドメインを用意すると良いだろう。
次に、Uptime Kumaのコンテナを定義するdocker-compose.ymlファイルを作成する。このファイルは、Uptime Kumaをどのように動かすかをDocker Composeに指示するレシピのようなものだ。ファイルの内容を見ると、image: louislam/uptime-kuma:1という行があるが、これはDocker Hubという公開されているリポジトリから「louislam/uptime-kuma」という名前のUptime Kumaのイメージ(アプリケーションの設計図のようなもの)をダウンロードして使うことを意味する。container_name: uptime-kumaは、このコンテナに「uptime-kuma」という名前を付けることを指定する。volumes: - ./kuma-data:/app/dataは、Uptime Kumaのデータ(監視設定やログなど)を、サーバー上の特定のディレクトリ(./kuma-data)に保存する設定だ。これにより、コンテナを削除しても重要なデータが失われる心配がなく、データの永続性が確保される。ports: - "3001:3001"は、サーバーのポート3001番とコンテナ内のポート3001番を紐付ける設定で、これにより外部のウェブブラウザからUptime Kumaのウェブインターフェースにアクセスできるようになる。最後にrestart: unless-stoppedは、サーバーが再起動したり、Uptime Kumaが何らかの理由で停止した場合に、自動的に再起動するように指示している。
このdocker-compose.ymlファイルが準備できたら、あとはdocker compose up -dというコマンドを実行するだけでUptime Kumaがバックグラウンドで起動する。-dオプションは「デタッチドモード」を意味し、コマンドを実行したターミナルを占有せずに、裏側でコンテナを動かし続ける。起動後、ウェブブラウザでサーバーのIPアドレスとポート3001番(例:http://<server-ip>:3001)にアクセスすれば、Uptime Kumaの管理画面が表示され、管理者ユーザーを設定してサービスの利用を開始できる。
管理画面にアクセスできたら、実際に監視したいウェブサイトやサービスの情報を追加していく。HTTP/HTTPS監視では、ウェブサイトのURLを指定し、正常な応答が返ってくるかをチェックする。ポート監視では、特定のIPアドレスやホスト名とポート番号を指定し、そのポートが開いているかをチェックする。これらを一つずつ手作業で追加することも可能だが、記事ではCSVファイルを使って複数のモニターを一括で追加する方法も紹介されており、多くのサービスを効率的に監視対象に加えることが可能だ。
特に重要な監視項目として、記事では「TLS証明書の期限切れアラート」を挙げている。TLS証明書は、ウェブサイトがHTTPS(安全な通信)を利用するために不可欠な電子証明書で、有効期限が設定されている。この証明書の期限が切れてしまうと、ウェブブラウザはセキュリティ警告を表示したり、最悪の場合、サイトへのアクセスを完全に拒否したりするため、ユーザーがサイトを利用できなくなるという大きな問題に発展する。Uptime Kumaでは、このTLS証明書の有効期限を監視し、例えば「期限まで30日、14日、7日、3日」といった段階でアラートを出すように設定できる。これにより、期限が切れる前に十分な時間をもって対応することができ、サイトのダウンタイムを防ぐことにつながる。アラートの通知先は、前述のメールやメッセージングアプリなど、多様な方法から選択できる。
さらに、Uptime Kumaには「ステータスページ」を作成する機能もある。これは、監視しているウェブサイトやサービスの現在の稼働状況を一般公開するためのウェブページだ。もし何らかのトラブルでサービスが停止してしまった場合でも、このステータスページを見ることで、ユーザーは現在の状況を簡単に把握できる。これにより、個別の問い合わせ対応の手間を減らし、ユーザーへの信頼感も高めることができる。ステータスページは、Caddyのようなウェブサーバーを利用して、status.example.comのような専用のドメインに紐付けて公開することも可能だ。Caddyの設定例も記事には示されており、ウェブサイトのセキュリティを向上させるためのヘッダー設定なども含まれている。
このように、Uptime KumaとDockerを組み合わせることで、ウェブサイトやオンラインサービスの稼働状況を効率的かつ確実に監視し、潜在的な問題を事前に察知して対応できる強固なシステムを、比較的短時間で構築することが可能となる。これは、システムエンジニアを目指す上で、サービスの安定運用がいかに重要かを理解し、それを実現する具体的な手段を学ぶ良い機会となるだろう。