在 Debian 12 上安装 Cachet 状态页系统。
本文内容
- 准备工作
- 安装 Docker 引擎
- 使用 Docker 和 PostgreSQL 数据库运行 Cachet
- 配置 Nginx 作为反向代理
- 配置 UFW(简易防火墙)
- 使用 HTTPS 保护 Cachet
- 安装 Cachet
- 总结
Cachet 是一个使用 PHP 编写的开源状态页系统。它允许你监控基础设施的停机时间和系统故障。Cachet 提供 JSON API、事件报告、指标、多种通知方式以及双因素认证(Two-Factor Authentication)。
在本教程中,我们将向你展示如何在 Debian 12 服务器上安装 Cachet 状态页。你将使用 Docker 容器运行 Cachet,并配合 PostgreSQL 数据库和 Nginx Web 服务器。
准备工作
在开始之前,请确保你具备以下条件:
- 一台 Debian 12 服务器。
- 一个具有 sudo 权限的非 root 用户。
- 已安装并配置好的 UFW 防火墙。
- 一个已指向服务器 IP 地址的域名。
安装 Docker 引擎
在本示例中,你将通过 Docker 以容器方式安装 Cachet。因此你需要在 Debian 系统上安装 Docker 引擎。本示例将使用官方的 Docker 引擎软件包。
首先,运行以下命令安装 curl 和 ca-certificates 软件包。
sudo apt install ca-certificates curl -y
现在,通过执行以下命令添加 Docker 软件仓库的 GPG 密钥。
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
接下来,使用以下命令为 Debian 系统添加 Docker 引擎软件仓库。
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
添加 Docker 软件仓库后,使用以下命令更新并刷新你的软件包索引。
sudo apt update

现在,使用以下命令将 Docker 引擎安装到系统中。输入 Y 确认安装。
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装完成后,Docker 服务应该会自动运行。使用以下命令检查 Docker 服务状态。
sudo systemctl status docker
你将看到类似如下的运行输出:

为确保你的用户可以执行并运行容器,你必须使用以下命令将其加入 docker 用户组。
sudo usermod -aG sudo alice
最后,以你的用户身份登录,并执行以下 docker 命令运行一个 hello-world 容器。
su - alice
docker run hello-world
如果配置成功,你应该会看到类似如下的 'Hello Docker' 输出:

使用 Docker 和 PostgreSQL 数据库运行 Cachet
安装 Docker 后,你需要下载 Cachet 项目并配置安装。本示例中,你将使用 Docker 容器以非 root 用户身份安装并运行 Cachet。
将 Cachet 项目下载到 cachet-docker 目录并进入该目录。
git clone https://github.com/cachethq/Docker.git cachet-docker
cd cachet-docker
使用以下 nano 编辑器命令打开 docker-compose.yml 文件。
nano docker-compose.yml
将默认主机端口修改为 8000,如下所示。你也可以根据自己的信息自定义数据库详情,并暂时保留 Cachet 默认版本为 2.4。
ports: - 8000:8000
保存文件并退出。
现在运行以下 docker 命令,构建你的 Cachet 镜像并运行 Cachet 和 PostgreSQL 的容器。
docker compose build
docker compose up
下方是构建 Cachet 的 Docker 镜像时的截图。

下方是运行 Cachet 和 PostgreSQL 容器/服务时的截图。

在 Cachet 容器的详细日志中,你会看到关于 APP_KEY 配置的错误。复制生成的 APP_KEY,然后按 Ctrl+C 终止容器。

接下来,使用 nano 编辑器重新打开 docker-compose.yml 文件。
nano docker-compose.yml
如下所示修改默认的 APP_KEY 参数。请确保包含 base64 字符串。
APP_KEY=base64:WfKUhY0wAOyr5hkxoctZUSWPGdXbBUWFvNLCoI7kTU8=
保存文件并退出。
现在运行以下 docker 命令终止 Cachet 和 PostgreSQL 容器,然后重新启动。
docker compose down
docker compose up -d
容器启动后,使用以下命令验证正在运行的容器列表。
docker compose ps
如下图所示,Cachet 和 PostgreSQL 两个容器都在运行。Cachet 容器运行在 8000 端口。

配置 Nginx 作为反向代理
现在 Cachet 已作为容器运行在 8000 端口,你将安装并配置 Nginx 作为 Cachet 的反向代理。
使用以下命令将 Nginx 安装到你的 Debian 服务器。
sudo apt install nginx -y

安装完成后,使用以下 nano 编辑器命令创建新的 Nginx 服务器块配置文件 /etc/nginx/sites-available/cachet。
sudo nano /etc/nginx/sites-available/cachet
插入以下配置,并确保将 server_name 参数修改为你自己的域名。
server {
listen 80;
server_name status.howtoforge.local;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $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;
}
}
保存文件并退出编辑器。
接下来,运行以下 Nginx 命令以启用 Cachet 服务器块并检查 Nginx 语法。如果语法正确,你应该会看到 'syntax is ok' 的输出。
sudo ln -s /etc/nginx/sites-available/cachet /etc/nginx/sites-enabled/
sudo nginx -t

最后,重启 Nginx Web 服务器以应用 Cachet 服务器块配置,并验证 Nginx 服务确保其在运行。
sudo systemctl restart nginx
sudo systemctl status nginx
如果 Nginx 正在运行,你应该会看到 active(running) 的输出。

配置 UFW(简易防火墙)
在访问 Cachet 之前,你必须确保 HTTP 和 HTTPS 端口都已放行。在 Ubuntu 上,你可以通过 UFW(简易防火墙)允许 HTTP 和 HTTPS 的流量。
确保 UFW 已启用,现在运行以下命令在 UFW 上启用 'Nginx Full' 配置文件。这将允许 HTTP 和 HTTPS 协议流量访问你的 Nginx Web 服务器。
sudo ufw allow 'Nginx Full'
现在使用以下命令验证 UFW 中已启用的规则列表。
sudo ufw status
你将看到 'Nginx Full' 配置文件已在 UFW 上启用。

使用 HTTPS 保护 Cachet
此时,你的 Cachet 应该可以通过 Nginx 访问。为了保护你的安装,你将通过 Let's Encrypt 的 SSL 为 Cachet 启用 HTTPS。
运行以下命令安装 Certbot 和 Certbot Nginx 插件。输入 Y 确认安装。
sudo apt install certbot python3-nginx-certbot
安装完成后,执行以下 certbot 命令为你的 Cachet 安装生成 SSL/TLS 证书。请确保将域名和邮箱地址替换为你自己的信息。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email
[email protected]
-d status.howtoforge.local
一切完成后,你的 SSL/TLS 证书应存储在 /etc/letsencrypt/live/status.howtoforge.local 目录。同时,你的 Cachet 应该已通过 HTTPS 得到保护。
安装 Cachet
打开你常用的 Web 浏览器并访问你的 Cachet 安装地址 https://status.howtoforge.local/ 。如果安装成功,你应该会看到如下页面。
将默认的 Cache Driver、Queue Driver 和 Session Driver 都选择为 Database(数据库)。然后,填写你的邮件服务器信息。
点击 Next 继续。

现在设置状态页名称、默认时区和默认语言。然后再次点击 Next。

现在通过输入用户名、邮箱和密码为 Cachet 创建一个新的管理员用户。然后,点击 Complete Setup 确认。

完成后,你将看到如下界面 —— 点击 Go to the dashboard 。

使用你的用户名和密码登录 Cachet,然后点击 Login 。

如果安装成功,你应该会看到类似如下的 Cachet 仪表盘:

总结
恭喜!你已成功在 Debian 12 服务器上通过 Docker 安装了 Cachet 状态页。你的 Cachet 安装正运行在 PostgreSQL 数据库和 Nginx Web 服务器之上。现在你可以使用 Cachet 监控你的站点了。