diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7edc86a..d8f6f7a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,9 @@
- 上传时可按 1 小时~30 天设置文件有效期(默认 7 天),过期文件由 systemd 定时器每 10 分钟自动删除。
- 新增应用源码目录 transfer/ (Flask + gunicorn + SQLite)与幂等部署脚本 deploy_transfer.py 。
- 新增 systemd 单元 lzwlab-transfer.service 与 lzwlab-transfer-cleanup.{service,timer} 。
+- 新增 Komari Lite 服务器监控(https://status.lzwlab.cn/):Docker Compose 部署 nuomiiiii/komari 分支(镜像 ghcr.io/nuomiiiii/komari,服务端 2.2.3),与上游 komari-monitor/komari 是两个不同的工具。
+- 新增 komari/docker-compose.yml 与 lzwlab.status.nginx.conf :容器仅监听 127.0.0.1:25774,nginx 反代含 /api/rpc2 独立长连接与 WebSocket 配置,证书由 certbot(webroot)签发。
+- setup.md 新增第 11 节:Komari Lite 部署过程、反代配置、DNS/证书自动收尾与验证结果。
### Changed
@@ -26,10 +29,16 @@
- 更新首页 index.html :欢迎卡片下方增加文件快传入口链接。
- 更新 lzwlab.nginx.conf :新增 /transfer/ 反向代理到本机 8090 端口,上传/下载超时调整为 3600 秒,上传体积上限 5120 MB。
- 更新 README.md 与 setup.md :补充 RustDesk 自建服务器部署记录与客户端配置说明。
+- 更新首页 index.html :欢迎卡片新增“📊 服务器状态”入口(https://status.lzwlab.cn/)。
+- 更新 README.md 与 setup.md :补充 Komari Lite 服务器监控部署记录与使用说明。
### Removed
-- 移除首页欢迎卡中的“网站搭建成功!这是部署在个人云服务器上的第一个页面。”提示信息,首页仅保留标题、Powered by Nginx 徽标与“文件快传”“Git 服务”两个入口链接。
+- 移除首页欢迎卡中的“网站搭建成功!这是部署在个人云服务器上的第一个页面。”提示信息,首页仅保留标题、Powered by Nginx 徽标与“文件快传”“Git 服务”“服务器状态”三个入口链接。
+
+### Fixed
+
+- 修正监控工具选型:将误准备的上游 Komari(ghcr.io/komari-monitor/komari)镜像与配置替换为 Komari Lite(ghcr.io/nuomiiiii/komari),服务器上误拉的上游镜像已删除。
### Security
@@ -38,6 +47,7 @@
- RustDesk 服务使用 hbbs 首次启动自动生成的自建密钥(服务器 /opt/rustdesk/data/id_ed25519.pub),客户端必须配置该 Key 才能连接服务器。
- 应用登录密码仅以 scrypt 哈希保存在 /etc/lzwlab-transfer/config.json (root:lzwlab 640),不在代码或仓库中保存明文。
- 会话 Cookie 启用 Secure/HttpOnly/SameSite=Lax,登录接口按 IP 限流,写接口校验 X-Requested-With 头。
+- Komari Lite 容器端口只绑定 127.0.0.1,公网仅经 nginx HTTPS 访问 status.lzwlab.cn;面板管理员账号在首次打开时创建,凭据仅记录于 Authentication.md。
## [1.0.0] - 2026-08-24
diff --git a/README.md b/README.md
index 08644ad..4273844 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,16 @@
# lzwlab.cn 站点部署仓库
-lzwlab.cn 个人云服务器上的站点部署项目:包含站点欢迎页、nginx 站点配置、TLS 证书、远程运维脚本,以及从首页链接进入的“文件快传”在线文件暂存工具。上线效果:http 请求自动 301 跳转到 https,`https://lzwlab.cn` 与 `https://www.lzwlab.cn` 均正常展示欢迎页,`https://lzwlab.cn/transfer/` 提供登录鉴权的文件上传/下载服务。服务器上还以 Docker 部署了 RustDesk 自建远程桌面服务(hbbs/hbbr,客户端以域名 `lzwlab.cn` 接入)与 Gitea Git 服务(入口 `https://lzwlab.cn/git/`,首页提供“🐙 进入 Git 服务”按钮)。
+lzwlab.cn 个人云服务器上的站点部署项目:包含站点欢迎页、nginx 站点配置、TLS 证书、远程运维脚本,以及从首页链接进入的“文件快传”在线文件暂存工具。上线效果:http 请求自动 301 跳转到 https,`https://lzwlab.cn` 与 `https://www.lzwlab.cn` 均正常展示欢迎页,`https://lzwlab.cn/transfer/` 提供登录鉴权的文件上传/下载服务。服务器上还以 Docker 部署了 RustDesk 自建远程桌面服务(hbbs/hbbr,客户端以域名 `lzwlab.cn` 接入)、Gitea Git 服务(入口 `https://lzwlab.cn/git/`,首页提供“🐙 进入 Git 服务”按钮)与 Komari Lite 服务器监控面板(入口 `https://status.lzwlab.cn/`,首页提供“📊 服务器状态”按钮)。
## 功能特性
-- 静态欢迎页:`index.html`,响应式渐变卡片,中文标题“欢迎访问 lzwlab.cn”,并提供“📦 进入文件快传”“🐙 进入 Git 服务”两个入口。
+- 静态欢迎页:`index.html`,响应式渐变卡片,中文标题“欢迎访问 lzwlab.cn”,并提供“📦 进入文件快传”“🐙 进入 Git 服务”“📊 服务器状态”三个入口。
- HTTPS 全站:`lzwlab.nginx.conf` 将 80 端口请求 301 跳转到 443;443 端口启用 TLS 1.2/1.3 与 HTTP/2,证书链由 TrustAsia 签发。
- 文件快传(`/transfer/`):指定用户登录后才能使用,PC/手机自适应;支持多文件上传与下载进度、有效期设置(默认 7 天,最短 1 小时,最长 30 天)、缓存列表与手动删除;过期文件由 systemd 定时器每 10 分钟自动清理。
- 远程运维脚本:`remote.py` 基于 Paramiko,支持执行远程命令(可 sudo)与上传文件,凭据自动从 `Authentication.md` 解析,无需在命令行传密码。
- RustDesk 自建服务器:Docker Compose 部署 hbbs(ID/注册服务器)+ hbbr(中继服务器),host 网络监听 21115-21119,客户端以域名 `lzwlab.cn` 接入,客户端配置说明见 [setup.md](setup.md) 第 9 节。
- Gitea Git 服务(`https://lzwlab.cn/git/`):Docker 部署 Gitea 1.27.2(SQLite),管理员私有单实例,关闭开放注册;支持 HTTPS 克隆与 SSH 克隆(端口 2222),部署记录见 [setup.md](setup.md) 第 10 节。
+- Komari Lite 服务器监控(`https://status.lzwlab.cn/`):Docker 部署 [nuomiiiii/komari](https://github.com/nuomiiiii/komari) 分支(注意与上游 komari-monitor/komari 不同,镜像为 `ghcr.io/nuomiiiii/komari`),容器仅监听 127.0.0.1:25774,由 nginx 反代并启用 WebSocket;部署记录见 [setup.md](setup.md) 第 11 节。
- 完整部署记录:`setup.md` 覆盖从环境检查、安装 nginx、上传站点、HTTPS 配置到验证的全过程,并附踩坑记录。
- 文档维护技能:`.dsh/skills/maintain-docs/`,用于在项目修改后自动更新本 README 与 CHANGELOG.md。
@@ -20,6 +21,7 @@ lzwlab.cn 个人云服务器上的站点部署项目:包含站点欢迎页、n
├── Authentication.md # 服务器凭据(机密,勿公开/勿提交)
├── index.html # 站点欢迎页
├── lzwlab.nginx.conf # nginx 站点配置(HTTP→HTTPS、TLS、HTTP/2)
+├── lzwlab.status.nginx.conf # status.lzwlab.cn 站点配置(Komari Lite 反代、WebSocket)
├── lzwlab.cn_nginx/ # TLS 证书与私钥(私钥勿公开/勿提交)
│ ├── lzwlab.cn.csr
│ ├── lzwlab.cn.key
@@ -41,6 +43,8 @@ lzwlab.cn 个人云服务器上的站点部署项目:包含站点欢迎页、n
│ └── docker-compose.yml
├── gitea/ # Gitea Git 服务 Compose 配置(容器 gitea,SQLite)
│ └── docker-compose.yml
+├── komari/ # Komari Lite 服务器监控 Compose 配置(容器 komari,ghcr.io/nuomiiiii/komari)
+│ └── docker-compose.yml
├── setup.md # 完整部署记录
└── .dsh/skills/maintain-docs/ # 文档维护技能(README/CHANGELOG)
└── SKILL.md
@@ -50,8 +54,8 @@ lzwlab.cn 个人云服务器上的站点部署项目:包含站点欢迎页、n
- 本地(运维机):Python 3 + Paramiko(`pip install paramiko`)。
- 服务器:Ubuntu 24.04 LTS、nginx 1.24(systemd 管理)、Python 3.12、Flask 3.0.2 与 gunicorn 20.1(apt 安装)。
-- 服务器:Docker 29.1.3(apt docker.io + docker-compose-v2,已配置 daocloud 镜像加速)运行 RustDesk hbbs/hbbr 与 Gitea Git 服务。
-- 域名 `lzwlab.cn` / `www.lzwlab.cn` 的 DNS 已解析到服务器。
+- 服务器:Docker 29.1.3(apt docker.io + docker-compose-v2,已配置 daocloud 镜像加速)运行 RustDesk hbbs/hbbr、Gitea Git 服务与 Komari Lite 监控面板。
+- 域名 `lzwlab.cn` / `www.lzwlab.cn` 的 DNS 已解析到服务器;`status.lzwlab.cn` 需先在 DNSPod 添加 A 记录(Komari Lite 公网入口与证书签发的前提,见 [setup.md](setup.md) 第 11.5 节)。
## 安装
@@ -85,6 +89,7 @@ LZWLAB_APP_PASSWORD='$PASS' python deploy_transfer.py --username admin
curl -s -o /dev/null -w "%{http_code}\n" https://lzwlab.cn/ # 200
curl -s -o /dev/null -w "%{http_code}\n" https://lzwlab.cn/transfer/ # 200(登录页)
curl -s -o /dev/null -w "%{http_code}\n" https://lzwlab.cn/git/ # 200(Git 服务登录页)
+curl -s -o /dev/null -w "%{http_code}\n" https://status.lzwlab.cn/ # 200(Komari Lite 面板)
```
## 部署说明
@@ -97,6 +102,7 @@ curl -s -o /dev/null -w "%{http_code}\n" https://lzwlab.cn/git/ # 200(G
- 文件快传:应用代码安装到 `/opt/lzwlab-transfer`,数据目录 `/var/lib/lzwlab-transfer`,配置 `/etc/lzwlab-transfer/config.json`(root:lzwlab 640);gunicorn 监听 `127.0.0.1:8090`,由 nginx 将 `/transfer/` 反向代理到该端口,systemd 定时器每 10 分钟执行一次过期清理。
- RustDesk:Compose 文件安装在 `/opt/rustdesk`(hbbs+hbbr,host 网络,数据目录 `/opt/rustdesk/data`);客户端 ID 服务器/中继/Key 配置见 [setup.md](setup.md) 第 9 节。
- Gitea:Compose 文件安装在 `/opt/gitea`(容器 `gitea`,SQLite 数据卷 `/opt/gitea/gitea`,Web 仅监听 `127.0.0.1:3000`,SSH 映射 `2222→22`);nginx 按 Gitea 官方 sub-path 方案将 `/git/` 反代到 3000 端口;管理员账号与密码记录在 `Authentication.md`,注册已关闭、安装器已锁定。详见 [setup.md](setup.md) 第 10 节。
+- Komari Lite:Compose 文件安装在 `/opt/komari`(容器 `komari`,镜像 `ghcr.io/nuomiiiii/komari:latest`,仅监听 `127.0.0.1:25774`,数据卷 `/opt/komari/data`);nginx 站点 `status.lzwlab.cn` 反代到 25774(含 `/api/rpc2` 独立长连接与 WebSocket 配置),证书由 certbot 签发。首次打开面板需按初始化页创建管理员账号,详见 [setup.md](setup.md) 第 11 节。
## 安全与凭据说明
@@ -108,6 +114,7 @@ curl -s -o /dev/null -w "%{http_code}\n" https://lzwlab.cn/git/ # 200(G
- RustDesk 使用 hbbs 首次启动自动生成的自建密钥(服务器 `/opt/rustdesk/data/id_ed25519.pub`),客户端必须配置该 Key 才能连接;Key 需分发给每个客户端使用,本身不属于机密凭据。
- Gitea 关闭开放注册并锁定安装器;管理员密码只记录在 `Authentication.md`,对外文档一律用 `$PASS` 代替。
- Gitea SSH 克隆端口为 2222,需在腾讯云安全组放行 TCP 2222 后才能从公网使用;HTTPS 克隆与网页访问不受影响。
+- Komari Lite 容器端口只绑定 127.0.0.1,公网仅经 nginx HTTPS 访问 `status.lzwlab.cn`;面板管理员账号在首次打开时按初始化页创建,凭据只记录在 `Authentication.md`。
## 参考资料
@@ -117,5 +124,8 @@ curl -s -o /dev/null -w "%{http_code}\n" https://lzwlab.cn/git/ # 200(G
- [deploy_transfer.py](deploy_transfer.py):文件快传部署脚本
- [rustdesk/docker-compose.yml](rustdesk/docker-compose.yml):RustDesk 自建服务器 Compose 配置
- [gitea/docker-compose.yml](gitea/docker-compose.yml):Gitea Git 服务 Compose 配置
+- [komari/docker-compose.yml](komari/docker-compose.yml):Komari Lite 服务器监控 Compose 配置
+- [lzwlab.status.nginx.conf](lzwlab.status.nginx.conf):status.lzwlab.cn nginx 反代配置
+- [Komari Lite 文档](https://lite.komari.wiki/):快速开始与 [Docker 部署](https://lite.komari.wiki/install/docker)、[反向代理](https://lite.komari.wiki/security/reverse-proxy) 参考
- [Gitea 官方文档](https://docs.gitea.com/):安装与反向代理(sub-path)参考
- [transfer/](transfer/):文件快传应用源码
diff --git a/index.html b/index.html
index 8ec2acb..794bf3d 100644
--- a/index.html
+++ b/index.html
@@ -61,6 +61,8 @@
📦 进入文件快传
🐙 进入 Git 服务
+
+ 📊 服务器状态