インストールガイド · 4 min read · Oct 26, 2025
Ubuntu 22.04にStatpingをインストールする方法

Statpingは、複数のサーバーにホストされているウェブサイトやアプリケーションを監視するオープンソースの稼働監視ツールです。さまざまなソースからリアルタイムデータを取得することで、美しいステータスページを生成できます。SQLite、MySQL、Postgresなど、複数のデータベースシステムと連携できます。このチュートリアルでは、StatpingのフォークであるStatping-ngを使用します。元のアプリケーションはもはや開発されていないためです。
このチュートリアルでは、DockerとNginxサーバーをプロキシとして使用して、Ubuntu 22.04サーバーにStatpingをインストールする方法を学びます。
前提条件
- Ubuntu 22.04を実行しているサーバー。
- sudo権限を持つ非rootユーザー。
- 簡単なファイアウォール(UFW)が有効で実行中であること。
- サーバーを指す完全修飾ドメイン名(FQDN)、例:
status.example.com。 - すべてが更新されていること。
$ sudo apt update && sudo apt upgrade
ステップ1 - ファイアウォールの設定
パッケージをインストールする前に、最初のステップはHTTPおよびHTTPS接続を許可するためにファイアウォールを設定することです。
ファイアウォールの状態を確認します。
$ sudo ufw status
次のような出力が表示されるはずです。
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
HTTPおよびHTTPSポートを許可します。
$ sudo ufw allow http
$ sudo ufw allow https
再度状態を確認して確認します。
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
ステップ2 - Dockerのインストール
Dockerの公式GPGキーを追加します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
次のコマンドを実行してDockerリポジトリを追加します。
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
システムを更新してDockerのリポジトリを含めます。
$ sudo apt update
DockerとDocker Composeプラグインをインストールします。
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
このチュートリアルでは、古いレガシーバイナリの代わりにDocker Compose v2プラグインを使用します。したがって、実行コマンドはdocker-composeからdocker composeに変更されており、ここに反映されています。
Dockerは特権で実行されるため、コマンドを実行するには頻繁にsudoを使用する必要があります。より良いオプションは、Linuxユーザーアカウントをdockerユーザーグループに追加することです。
$ sudo usermod -aG docker ${USER}
${USER}変数は、現在ログインしているシステムアカウントを取得します。特権を与えたいユーザーでログインしていない場合は、${USER}をユーザー名に置き換えてください。
新しいグループメンバーシップを適用するには、サーバーからログアウトして再度ログインするか、次のコマンドを使用します。ユーザーのパスワードが求められます。
$ su - ${USER}
ステップ3 - Nginxのインストール
Ubuntu 22.04には古いバージョンのNginxが付属しています。最新バージョンをインストールするには、公式のNginxリポジトリをダウンロードする必要があります。
Nginxの署名キーをインポートします。
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Nginxの安定版リポジトリを追加します。
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
システムリポジトリを更新します。
$ sudo apt update
Nginxをインストールします。
$ sudo apt install nginx
インストールを確認します。
$ nginx -v
nginx version: nginx/1.22.0
ステップ4 - SSLのインストール
SSL証明書を生成するためにCertbotをインストールする必要があります。Ubuntuのリポジトリを使用してCertbotをインストールするか、Snapdツールを使用して最新バージョンを取得できます。Snapdバージョンを使用します。
Ubuntu 22.04にはデフォルトでSnapdがインストールされています。次のコマンドを実行して、Snapdのバージョンが最新であることを確認します。
$ sudo snap install core
Certbotをインストールします。
$ sudo snap install --classic certbot
次のコマンドを使用して、Certbotコマンドが/usr/binディレクトリへのシンボリックリンクを作成することで実行できることを確認します。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
次のコマンドを実行してSSL証明書を生成します。
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d status.example.com
上記のコマンドは、サーバーの/etc/letsencrypt/live/status.example.comディレクトリに証明書をダウンロードします。
Diffie-Hellmanグループ証明書を生成します。
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
/etc/letsencrypt/renewal/status.example.com.confファイルを編集のために開きます。
$ sudo nano /etc/letsencrypt/renewal/status.example.com.conf
次のコードを下部に貼り付けます。
pre_hook = systemctl stop nginx
post_hook = systemctl start nginx
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
私たちはCertbotのスタンドアロンオプションを使用してSSL証明書を生成しました。証明書を作成するために自分のウェブサーバーを実行するため、更新中はNginxを停止する必要があります。pre_hookとpost_hookコマンドは、更新の前後に実行され、Nginxサーバーを自動的に停止および再起動するため、手動での介入は不要です。
SSL更新が正常に機能しているかどうかを確認するために、プロセスのドライランを行います。
$ sudo certbot renew --dry-run
エラーが表示されなければ、すべて準備完了です。証明書は自動的に更新されます。
ステップ5 - Docker Composeファイルの設定
Docker Composeファイル用のディレクトリを作成します。
$ mkdir ~/statping
そのディレクトリに移動します。
$ cd ~/statping
Docker Composeファイルを作成して編集のために開きます。
$ nano docker-compose.yml
次のコードを貼り付けます。
services:
statping:
container_name: statping
image: adamboutcher/statping-ng
restart: always
ports:
- 8080:8080
volumes:
- ./statping_data:/app
links:
- postgres
depends_on:
- postgres
environment:
DB_CONN: postgres
DB_HOST: postgres
DB_PORT: 5432
DB_DATABASE: statping
DB_USER: root
DB_PASS: password123
NAME: 'Howtoforge Statping page'
DESCRIPTION: 'Statping Demo page'
USE_ASSETS: 'true'
SAMPLE_DATA: 'false'
ALLOW_REPORTS: 'false'
ADMIN_USER: navjot
ADMIN_PASSWORD: yourpassword
postgres:
container_name: postgres
image: postgres:14-alpine
ports:
- 5432:5432
volumes:
- ./pg_data:/var/lib/postgresql/data/pg_data
environment:
POSTGRES_PASSWORD: password123
POSTGRES_DB: statping
POSTGRES_USER: root
POSTGRES_PORT: 5432
PGDATA: /var/lib/postgresql/data/pg_data
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
StatpingとPostgresのDockerイメージを設定しています。Dockerファイルのほとんどは簡単に従うことができます。アプリデータとPostgresデータベースを保存するためにローカルディスクバックアップを使用しています。また、アプリケーションとデータベースを設定するためにいくつかの環境変数を構成しました。それらを見てみましょう。定義できる環境変数の完全なリストを取得するには、StatpingのGitHubリポジトリから公式リストを確認してください。
- USE_ASSETS変数は、アプリが
assetsフォルダからアセットを使用できるようにします。 - SAMPLE_DATA変数は、Statpingがインストール中に構成するデフォルトのモニターを無効にするためにfalseに設定されています。
- ALLOW_REPORTS変数は、Statpingが送信する匿名エラーレポートを無効にするためにfalseに設定されています。
- ADMIN_USERとADMIN_PASSWORD変数は、デフォルトユーザーのログイン情報を設定するために使用されます。
- DB_変数は、Postgresコンテナに定義された変数と一致するデータベースの資格情報を設定するために使用されます。
ステップ6 - Nginxの設定
/etc/nginx/nginx.confファイルを編集のために開きます。
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;の前に次の行を追加します。
server_names_hash_bucket_size 64;
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
/etc/nginx/conf.d/statusping.confファイルを編集のために作成して開きます。
$ sudo nano /etc/nginx/conf.d/statusping.conf
次のコードを貼り付けます。status.example.comをあなたのドメイン名に置き換えてください。
upstream backend {
server 127.0.0.1:8080;
keepalive 32;
}
server {
listen 80 default_server;
server_name status.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name status.example.com;
http2_push_preload on; # Enable HTTP/2 Server Push
ssl_certificate /etc/letsencrypt/live/status.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/status.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/status.example.com/chain.pem;
ssl_session_timeout 1d;
# Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
ssl_protocols TLSv1.2 TLSv1.3;
# Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
# prevent replay attacks.
#
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
ssl_early_data on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
# OCSP Stapling --- fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
add_header X-Early-Data $tls1_3_early_data;
access_log /var/log/nginx/statusping.access.log main;
error_log /var/log/nginx/statusping.error.log;
location / {
client_max_body_size 50M;
proxy_set_header Connection "";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_set_header X-Client-Verify SUCCESS;
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-SSL-Subject $ssl_client_s_dn;
proxy_set_header X-SSL-Issuer $ssl_client_i_dn;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 1800s;
proxy_connect_timeout 1800s;
proxy_http_version 1.1;
proxy_pass http://backend;
}
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
"~." $ssl_early_data;
default "";
}
Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
Nginxの設定を確認します。
$ sudo nginx -t
Nginxサーバーを再起動します。
$ sudo systemctl restart nginx
ステップ7 - Statpingを実行
Statpingディレクトリに移動します。
$ cd ~/statping
Dockerコンテナを作成して起動します。
$ docker compose up -d
コンテナの状態を確認します。
$ docker compose ps
次のような出力が表示されます。
NAME COMMAND SERVICE STATUS PORTS
postgres "docker-entrypoint.s…" postgres running 0.0.0.0:5432->5432/tcp
statping "/bin/sh -c 'statpin…" statping running (healthy) 0.0.0.0:8080->8080/tcp
より詳細な状態を取得するには、docker psコマンドを使用できます。コンテナのログを確認するには、docker logs コマンドを使用します。
ステップ8 - Statpingを設定
コンテナが実行中になったので、ブラウザでhttps://status.example.comのURLを開くと、空白のステータスページが表示されます。Docker ComposeファイルでSAMPLE_DATA変数を省略すると、異なるサービスが事前に定義されたフルページが表示されます。

下部のダッシュボードリンクをクリックしてログイン画面にアクセスします。

デフォルトのユーザー名とパスワードの両方にadminを入力します。事前に入力されているように見えても、ユーザー名を入力することを確認してください。サインインボタンをクリックしてStatpingダッシュボードにアクセスします。

新しいサービスを追加するには、作成ボタンをクリックし、必要な値を入力します。

下部のサービスを作成ボタンをクリックして完了します。メールやその他の通知を設定するには、設定ページに移動します。統計ページに新しい名前を付けることもできます。

ステップ9 - Statpingの更新
Statpingのアップグレードは簡単なステップです。StatpingのDocker Composeディレクトリに切り替えます。
$ cd ~/statping
次に、既存のコンテナを停止して削除します。ただし、データは保持されます。
$ docker compose down --remove-orphans
StatpingのDockerイメージの最新バージョンをプルします。
$ docker compose pull
コンテナを再起動します。
$ docker compose up -d
Statpingのインストールが更新され、再起動されました。
結論
これで、Ubuntu 22.04サーバーにStatpingをインストールする方法を学んだチュートリアルが終了しました。質問がある場合は、下のコメントに投稿してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。