如何在 Ubuntu 22.04 上安装 Statping
在此页
- 先决条件
- 第 1 步 - 配置防火墙
- 第 2 步 - 安装 Docker
- 第 3 步 - 安装 Nginx
- 第 4 步 - 安装 SSL
- 第 5 步 - 配置 Docker 组合文件
- 第 6 步 - 配置 NGinx
- 第 7 步 - 运行统计
- 第 8 步 - 配置统计
- 第 9 步 - 更新统计
- 结论
Statping 是一种开源正常运行时间监视器,可跟踪跨多个服务器托管的网站和应用程序。它可以通过从各种来源获取实时数据来生成漂亮的状态页面。它可以与多种数据库系统一起工作,包括 SQLite、MySQL 和 Postgres。对于我们的教程,我们将使用 Statping 的分支,称为 Statping-ng,因为不再开发原始应用程序。
在本教程中,您将学习如何使用 Docker 和 Nginx 服务器作为代理在 Ubuntu 22.04 服务器上安装 Statping。
先决条件
-
A server running Ubuntu 22.04.
-
A non-root user with sudo privileges.
-
The uncomplicated Firewall(UFW) is enabled and running.
-
A Fully Qualified domain name (FQDN) pointing to the server like,
status.example.com
. -
Everything is updated.
$ 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
添加 Dockers 官方 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
更新系统以包含 Dockers 存储库。
$ sudo apt update
安装 Docker 和 Docker 组合插件。
$ 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
我们需要安装 Certbot 来生成 SSL 证书。您可以使用 Ubuntu 存储库安装 Certbot,也可以使用 Snapd 工具获取最新版本。我们将使用 Snapd 版本。
Ubuntu 22.04 默认安装了 Snapd。运行以下命令以确保您的 Snapd 版本是最新的。
$ sudo snap install core
安装 Certbot。
$ sudo snap install --classic certbot
使用以下命令确保可以通过创建指向 /usr/bin
目录的符号链接来运行 Certbot 命令。
$ 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 -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 证书。它运行其 Web 服务器来创建证书,这意味着 Nginx 应该在续订期间关闭。 pre_hook 和 post_hook 命令在续费前后运行,自动关闭和重启 Nginx 服务器,无需人工干预。
要检查 SSL 续订是否正常工作,请试运行该过程。
$ sudo certbot renew --dry-run
如果您没有看到任何错误,则一切就绪。您的证书将自动更新。
第 5 步 - 配置 Docker 组合文件
为 Docker 组合文件创建一个目录。
$ 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 变量设置为 false 以禁用 Statping 在安装期间配置的默认监视器。
- ALLOW_REPORTS 变量设置为 false 以禁用 Statping 发送的匿名错误报告。
- 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
目录。
$ 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 步 - 配置统计
现在您的容器正在运行,在您的浏览器中启动 URL https://status.example.com
,您将看到一个空白的状态页面。如果您在 docker compose 文件中省略变量 SAMPLE_DATA
,您将看到一个包含不同预定义服务的完整页面。

单击底部的仪表板链接以访问登录屏幕。

填写 admin
作为默认用户名和密码。确保您也输入了用户名,即使它看起来像是预先填写的。单击登录按钮访问 Statping 仪表板。

要添加新服务,请单击“创建”按钮并填写所需的值。

单击底部的创建服务按钮以完成。要配置电子邮件和其他通知,请访问设置页面。您还可以为您的统计信息页面起一个新名称。

第 9 步 - 更新统计
升级 Statping 是一个简单的步骤。切换到 Statpings Docker 组合目录。
$ cd ~/statping
接下来,停止并移除现有容器。不过,您的数据将被保留。
$ docker compose down --remove-orphans
拉取最新版本的 Statping 泊坞窗图像。
$ docker compose pull
再次启动容器。
$ docker compose up -d
您的 Statping 安装已更新并重新启动。
结论
本教程到此结束,您在其中学习了如何在 Ubuntu 22.04 服务器上安装 Statping。如果您有任何问题,请在下面的评论中发表。