chore: 卸载 Komari Lite 并移除首页服务器状态入口

This commit is contained in:
2026-08-31 22:48:35 +08:00
parent 60b9ce1866
commit 70353ef4c4
6 changed files with 17 additions and 215 deletions
+8 -116
View File
@@ -496,127 +496,19 @@ sudo docker exec -u git gitea gitea admin user list # 用户列表
- 镜像使用官方新仓库 `docker.gitea.com/gitea:1.27.2`(腾讯云可直连,无需镜像加速);若改用 Docker Hub 的 `gitea/gitea` 则会走 daocloud 加速。
## 11. 部署 Komari Lite 服务器监控(https://status.lzwlab.cn/
## 11. Komari Lite 服务器监控(已卸载
### 11.1 方案与要点
> 该服务曾部署到 https://status.lzwlab.cn/,后按需求从服务器卸载,首页入口已删除。此前的部署配置与完整记录见 git 历史(commit bdffcee / 60b9ce1)。nginx server 级 return 的踩坑保留在下方“附:踩坑记录”第 6 条。
- 组件:**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 # Up127.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。
- ⚠️ 80 端口的 301 必须写在 `location / { return 301 ...; }` 内:server 级 `return` 在 rewrite 阶段(location 匹配之前)就终结请求,会把 ACME 挑战路径也一起 301,导致证书签发/续期失败(详见“附:踩坑记录”第 6 条)。
- 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
cd /opt/komari && sudo docker compose down
sudo docker rmi ghcr.io/nuomiiiii/komari:latest ghcr.nju.edu.cn/nuomiiiii/komari:latest
sudo rm -f /etc/nginx/sites-enabled/status.lzwlab.cn /etc/nginx/sites-available/status.lzwlab.cn /etc/nginx/sites-available/status.lzwlab.cn-http /etc/nginx/sites-available/status.lzwlab.cn.bak-*
sudo certbot delete --cert-name status.lzwlab.cn --non-interactive
sudo rm -rf /var/www/certbot /opt/komari
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 秒检测一次解析:DNS 生效后它自动尝试 certbot 签发。首次尝试因 11.4 所述的 301 坑失败(ACME 挑战被 301 到 HTTPS 后 404),修复配置后改为手工签发成功(脚本已完成使命并清理):
```bash
sudo certbot certonly --webroot -w /var/www/certbot -d status.lzwlab.cn \
--non-interactive --agree-tos -m admin@lzwlab.cn --keep-until-expiring
# Successfully received certificateECDSA,有效期至 2026-11-24
```
3. 证书签发后启用 443 站点并移除临时 HTTP 块(脚本会自动做,失败时手工执行):
```bash
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
```
证书续期:certbot webroot 方式已注册 systemd 定时器自动续期;80 端口 `/.well-known/acme-challenge/` 位置保留在 `status.lzwlab.cn` 站点的 80 server 块中,续期验证直接可用(已验证该路径返回 404/200 而非 301)。
### 11.6 验证结果(公网)
```bash
curl -s -o /dev/null -w "%{http_code} -> %{redirect_url} ssl=%{ssl_verify_result}\n" http://status.lzwlab.cn/
# 301 -> https://status.lzwlab.cn/HTTP 强制跳 HTTPS
curl -s -o /dev/null -w "%{http_code} -> %{redirect_url} ssl=%{ssl_verify_result}\n" https://status.lzwlab.cn/
# 307 -> https://status.lzwlab.cn/install ssl=0(首次为 /install 初始化页,证书链受信任)
curl -sL https://status.lzwlab.cn/ | grep -o '<title>.*</title>' # <title>Komari Lite</title>
curl -s https://lzwlab.cn/ | grep -o '服务器状态' # 服务器状态(首页按钮已生效)
echo | openssl s_client -connect status.lzwlab.cn:443 -servername status.lzwlab.cn -alpn h2,http/1.1 2>/dev/null \
| grep -E "subject=|issuer=|ALPN" # CN=status.lzwlab.cn / Let's Encrypt / h2
```
### 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/ 即可
```
## 附:踩坑记录