feat: 部署 Komari Lite 服务器监控(status.lzwlab.cn)
This commit is contained in:
@@ -495,6 +495,115 @@ sudo docker exec -u git gitea gitea admin user list # 用户列表
|
||||
- Gitea 子路径部署必须同时满足两点:`ROOT_URL` 带 `/git/` 后缀,且 nginx 使用官方 rewrite 方案剥离前缀(直接 `proxy_pass http://127.0.0.1:3000/;` 会破坏前缀与 `%2F` 转义)。
|
||||
- 镜像使用官方新仓库 `docker.gitea.com/gitea:1.27.2`(腾讯云可直连,无需镜像加速);若改用 Docker Hub 的 `gitea/gitea` 则会走 daocloud 加速。
|
||||
|
||||
|
||||
## 11. 部署 Komari Lite 服务器监控(https://status.lzwlab.cn/)
|
||||
|
||||
### 11.1 方案与要点
|
||||
|
||||
- 组件:**Komari Lite**(GitHub [nuomiiiii/komari](https://github.com/nuomiiiii/komari) 分支)。⚠️ 它与上游 **Komari**(komari-monitor/komari)是两个不同的工具:镜像、文档站点与 Agent 下载源都不同,不能混用。Lite 镜像为 `ghcr.io/nuomiiiii/komari:latest`,文档站 https://lite.komari.wiki/ ,配套 Agent 为 nuomiiiii/komari-agent。本次部署版本:服务端 2.2.3(构建码 0huo552)。
|
||||
- 部署方式:Docker Compose(服务器已有 Docker 29.1.3 + compose-v2),容器名 `komari`,数据卷 `/opt/komari/data`,Web 端口只绑定 `127.0.0.1:25774`。
|
||||
- 入口:`https://status.lzwlab.cn/`(首页欢迎页“📊 服务器状态”按钮),nginx 反代到 25774 并保留 WebSocket;证书由 certbot 签发。
|
||||
- 参考文档:https://lite.komari.wiki/guide/start 、https://lite.komari.wiki/install/docker 、https://lite.komari.wiki/security/reverse-proxy 。
|
||||
|
||||
### 11.2 踩坑:Komari 与 Komari Lite 不是同一个工具
|
||||
|
||||
- 先前准备工作误用了上游镜像 `ghcr.io/komari-monitor/komari`(文档站 komari.wiki)。Komari Lite 是独立分支:镜像 `ghcr.io/nuomiiiii/komari`、文档站 lite.komari.wiki、Agent 下载源 nuomiiiii/komari-agent,数据库迁移与后台功能均以 Lite 分支为准。
|
||||
- 腾讯云直连 ghcr.io 拉取镜像层会卡住(仅完成 manifest 阶段),改用 NJU 镜像站秒下:
|
||||
|
||||
```bash
|
||||
sudo docker pull ghcr.nju.edu.cn/nuomiiiii/komari:latest
|
||||
sudo docker tag ghcr.nju.edu.cn/nuomiiiii/komari:latest ghcr.io/nuomiiiii/komari:latest
|
||||
```
|
||||
|
||||
(仓库内 compose 文件保持官方 `ghcr.io/nuomiiiii/komari` 镜像名,便于后续 pull 更新。)
|
||||
|
||||
### 11.3 部署命令
|
||||
|
||||
Compose 文件为仓库内 `komari/docker-compose.yml`:
|
||||
|
||||
```bash
|
||||
# 本地:SFTP 上传 komari/docker-compose.yml 到 /tmp
|
||||
# 远程:
|
||||
sudo cp -a /opt/komari/docker-compose.yml /opt/komari/docker-compose.yml.bak-$(date +%Y%m%d-%H%M%S)
|
||||
sudo install -m 644 -o root -g root /tmp/komari-compose.yml /opt/komari/docker-compose.yml
|
||||
sudo rm -f /tmp/komari-compose.yml
|
||||
sudo docker tag ghcr.nju.edu.cn/nuomiiiii/komari:latest ghcr.io/nuomiiiii/komari:latest
|
||||
cd /opt/komari && sudo docker compose up -d
|
||||
# 清理误拉的上游镜像
|
||||
sudo docker rmi ghcr.nju.edu.cn/komari-monitor/komari:latest
|
||||
```
|
||||
|
||||
验证结果:
|
||||
|
||||
```bash
|
||||
sudo docker ps --filter name=komari # Up,127.0.0.1:25774->25774/tcp
|
||||
sudo docker logs --tail 25 komari
|
||||
# Komari Monitor 2.2.3 (0huo552)
|
||||
# First-run installation guide is available on 0.0.0.0:25774
|
||||
curl -s -o /dev/null -w "%{http_code} -> %{redirect_url}\n" http://127.0.0.1:25774/
|
||||
# 307 -> /install(首次初始化页,创建管理员账号)
|
||||
```
|
||||
|
||||
### 11.4 nginx 反代(/etc/nginx/sites-available/status.lzwlab.cn)
|
||||
|
||||
配置为仓库内 `lzwlab.status.nginx.conf`,要点(按 Lite 官方反向代理文档):
|
||||
|
||||
- `location /`:HEAD 请求直接返回 204;保留 Upgrade/Connection 头(远程终端、实时数据用 WebSocket);`proxy_buffering off`、`client_max_body_size 50M`。
|
||||
- `location ^~ /api/rpc2`:Agent 状态长连接单独配置(补 Origin 头、读写超时 3600s),避免被普通页面策略提前断开。
|
||||
- 80 端口只保留 `/.well-known/acme-challenge/`(certbot webroot 验证,root=/var/www/certbot),其余 301 跳 HTTPS。
|
||||
- 443 证书路径指向 `/etc/letsencrypt/live/status.lzwlab.cn/`(certbot 签发后生效)。
|
||||
|
||||
安装顺序(证书未签发前不能启用 443 块,否则 `nginx -t` 报证书文件不存在):
|
||||
|
||||
```bash
|
||||
# 1) 先只启用 HTTP 挑战块(服务器临时文件 status.lzwlab.cn-http)
|
||||
sudo install -m 644 -o root -g root /tmp/status-http.conf /etc/nginx/sites-available/status.lzwlab.cn-http
|
||||
sudo ln -sf /etc/nginx/sites-available/status.lzwlab.cn-http /etc/nginx/sites-enabled/status.lzwlab.cn-http
|
||||
sudo install -m 644 -o root -g root /tmp/lzwlab-status.conf /etc/nginx/sites-available/status.lzwlab.cn
|
||||
sudo nginx -t && sudo systemctl reload nginx
|
||||
# 2) 证书签发后(见 11.5 自动收尾脚本):
|
||||
sudo ln -sf /etc/nginx/sites-available/status.lzwlab.cn /etc/nginx/sites-enabled/status.lzwlab.cn
|
||||
sudo rm -f /etc/nginx/sites-enabled/status.lzwlab.cn-http
|
||||
sudo nginx -t && sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
### 11.5 DNS 与证书(Let's Encrypt)
|
||||
|
||||
`status.lzwlab.cn` 在 DNSPod(腾讯云云解析)上没有解析记录(权威 NXDOMAIN),公网入口与证书签发依赖该记录。处理方式:
|
||||
|
||||
1. 在 DNSPod 控制台为 `lzwlab.cn` 添加 A 记录:主机记录 `status`,记录值 `1.15.225.173`。
|
||||
2. 服务器上已放置自动收尾脚本 `/tmp/status-watch.sh`(nohup 后台运行,日志 `/tmp/komari-status-watch.log`):每 45 秒检测一次解析,解析生效后自动执行 certbot(webroot 方式)签发证书 → 启用 443 站点 → 移除临时 HTTP 块 → `nginx -t` + reload → 本机自检。
|
||||
|
||||
```bash
|
||||
# 手工执行等价命令(脚本超时/失败时用)
|
||||
sudo certbot certonly --webroot -w /var/www/certbot -d status.lzwlab.cn \
|
||||
--non-interactive --agree-tos -m admin@lzwlab.cn --keep-until-expiring
|
||||
```
|
||||
|
||||
证书续期:certbot webroot 方式会随 systemd 定时器自动续期,80 端口挑战块保留在 `status.lzwlab.cn` 站点的 80 server 块中即可。
|
||||
|
||||
### 11.6 验证结果(公网)
|
||||
|
||||
```bash
|
||||
curl -s -o /dev/null -w "%{http_code}\n" https://status.lzwlab.cn/ # 307/200(面板,首次为 /install 初始化页)
|
||||
curl -s https://lzwlab.cn/ | grep -o '服务器状态' # 服务器状态(首页按钮已生效)
|
||||
```
|
||||
|
||||
### 11.7 首次使用
|
||||
|
||||
1. 打开 `https://status.lzwlab.cn/`,按初始化页创建管理员账号(凭据自行保管,只记录在 `Authentication.md`)。
|
||||
2. 登录后在“账户与安全”启用两步验证;“服务器”中添加节点并复制 Agent 安装参数(Agent 使用 nuomiiiii/komari-agent 2.2.0.2)。
|
||||
3. 配置数据保留天数、流量限额与重置日;测试通知渠道后启用告警;最后完整备份一次 `/opt/komari/data`。
|
||||
|
||||
### 11.8 运维
|
||||
|
||||
```bash
|
||||
cd /opt/komari && sudo docker compose ps # 容器状态
|
||||
sudo docker logs -f komari # 日志
|
||||
sudo docker pull ghcr.io/nuomiiiii/komari:latest && cd /opt/komari && sudo docker compose up -d # 升级(必要时走 ghcr.nju.edu.cn 镜像)
|
||||
# 备份:面板数据全部在数据卷内,直接备份 /opt/komari/data/ 即可
|
||||
```
|
||||
|
||||
## 附:踩坑记录
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user