Files
lzwlab_cn/CHANGELOG.md
T
waiwaylee 5af69d694f feat: 文件快传新增共享剪贴板(跨客户端粘贴、查看与一键复制)
- 后端:新增 /api/clips(列表/新建)、/api/clips/<id>(取全文/删除)、/api/clips/<id>/copy(复制计数),列表仅返回 240 字符预览
- 存储:SQLite 新增 clips 表(含 expires_at 索引),启动自动建表,线上老库无需手工迁移
- 前端:剪贴板卡片支持读取本机剪贴板、来源备注、查看全文、一键复制到本机剪贴板、单条删除与复制次数
- 清理:systemd 定时任务与 /api/cleanup 同时清理过期剪贴板
- 配置:新增 max_clip_length / max_clips / clip_default_expires_hours
- 部署:deploy_transfer.py 新增 --keep-credentials(不重置登录密码与会话密钥)与 SSH 连接重试
- 文档:README / setup.md / CHANGELOG 同步更新
2026-10-11 22:20:54 +08:00

8.6 KiB
Raw Blame History

Changelog

本项目的所有重要变更均记录于此。格式遵循 Keep a Changelog,版本号遵循 SemVer。

[Unreleased]

Added

  • 新增 Gitea Git 服务(https://lzwlab.cn/git/):Docker Compose 部署 Gitea 1.27.2(SQLite),管理员私有单实例,首页欢迎页新增“🐙 进入 Git 服务”入口。
  • 新增 gitea/docker-compose.yml 部署配置:Web 仅监听 127.0.0.1:3000,SSH 映射 2222→22,关闭开放注册并锁定安装器。
  • setup.md 新增第 10 节:Gitea 部署过程、子路径反代配置、管理员账号创建与验证结果。
  • 新增 RustDesk 自建远程桌面服务器:Docker Compose 部署 hbbs(ID/注册服务器)+ hbbr(中继服务器),host 网络监听 21115/21116(TCP+UDP)/21117/21118/21119,客户端以域名 lzwlab.cn 接入。
  • 新增 rustdesk/docker-compose.yml 部署配置;服务器安装 Docker(docker.io 29.1.3 + docker-compose-v2)并配置 daocloud 镜像加速(腾讯云访问 Docker Hub 被拒)。
  • setup.md 新增第 9 节:RustDesk 部署过程、验证结果与客户端配置说明。
  • 新增“文件快传”在线文件暂存工具,入口 https://lzwlab.cn/transfer/ ,首页欢迎页增加“进入文件快传”链接。
  • 文件快传支持指定用户登录鉴权、PC/手机响应式界面、多文件队列上传与下载进度显示、缓存文件列表、手动删除与手动清理。
  • 上传时可按 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/证书自动收尾与验证结果。
  • 新增 Beszel 服务器监控(https://lzwlab.cn/beszel/):Docker Compose 部署 Beszel hub(henrygd/beszel:latest,容器 beszel,仅监听 127.0.0.1:8092),通过 USER_EMAIL/USER_PASSWORD 自动创建首个管理员。
  • 新增 beszel/docker-compose.yml;nginx 按 Beszel 官方子路径方案将 /beszel/ 反代到 8092(含 WebSocket)。
  • setup.md 新增第 12 节:Beszel 部署过程、子路径反代、Agent 接入说明与验证结果。
  • 新增“共享剪贴板”功能(与文件快传同一入口 https://lzwlab.cn/transfer/ ):在任一客户端粘贴任意文本发送,其他客户端登录后即可查看并“一键复制”写入本机剪贴板;支持读取本机剪贴板、来源备注(如“公司 PC”)、查看全文、单条删除与复制次数统计。
  • 新增剪贴板接口:GET/POST /api/clips(列表、新建)、GET/DELETE /api/clips/<id>(取全文、删除)、POST /api/clips/<id>/copy(复制计数);列表接口只返回前 240 字符预览,全文按 id 单独获取。
  • SQLite 新增 clips 表(含 expires_at 索引),应用启动时自动建表,线上老库无需手工迁移。
  • deploy_transfer.py 新增 --keep-credentials 选项:只更新代码与新增配置项,保留服务器上已有的 secret_key 与用户密码哈希,不重置登录密码、也无需传入密码。

Changed

  • 更新清理逻辑:systemd 定时任务与 /api/cleanup 除过期文件外同时清理过期剪贴板内容,清理日志与接口返回均包含剪贴板条数。

  • 更新应用配置项:新增 max_clip_length(默认 262144 字符)、max_clips(默认 200 条)、clip_default_expires_hours(默认 24 小时),配置中缺省时使用内置默认值。

  • 更新 transfer/templates/index.html :新增共享剪贴板卡片与响应式样式,移动端操作按钮整行排列。

  • 更新首页 index.html :欢迎卡片增加“进入 Git 服务”入口链接(/git/)。

  • 更新 lzwlab.nginx.conf :按 Gitea 官方子路径(sub-path)方案新增 /git/ 反向代理到本机 3000 端口。

  • 更新 README.md 与 setup.md :补充 Gitea Git 服务部署记录与使用说明。

  • 更新首页 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 服务器监控部署记录与使用说明。

  • 更新 README.md 与 setup.md :移除 Komari Lite 使用说明,setup.md 第 11 节改为“已卸载”记录。

  • 更新首页 index.html :新增“📊 服务器状态”入口(/beszel/)。

  • 更新 lzwlab.nginx.conf :新增 /beszel/ 反向代理到本机 8092 端口。

  • 更新 README.md 与 setup.md :补充 Beszel 服务器监控部署记录。

  • 更新 README.md 与 setup.md :补充共享剪贴板功能说明、接口与部署验证记录。

Removed

  • 移除首页欢迎卡中的“网站搭建成功!这是部署在个人云服务器上的第一个页面。”提示信息,首页仅保留标题、Powered by Nginx 徽标与“文件快传”“Git 服务”两个入口链接。
  • 移除 Komari Lite 服务器监控(https://status.lzwlab.cn/):从服务器卸载容器/镜像/数据目录,删除 status.lzwlab.cn 的 nginx 配置与 Let's Encrypt 证书。
  • 删除仓库内 komari/docker-compose.yml 与 lzwlab.status.nginx.conf 。
  • 更新首页 index.html :移除 Komari Lite 的“📊 服务器状态”入口链接。

Fixed

  • 修正监控工具选型:将误准备的上游 Komari(ghcr.io/komari-monitor/komari)镜像与配置替换为 Komari Lite(ghcr.io/nuomiiiii/komari),服务器上误拉的上游镜像已删除。
  • 修复 status.lzwlab.cn 的 80 端口重定向写法:server 级 return 301 会先于 location 匹配执行,导致 ACME 挑战路径被重定向、证书无法签发;改为 location / 内重定向后 certbot 签发成功(Let's Encrypt ECDSA,有效期至 2026-11-24)。

Security

  • Gitea 关闭开放注册并锁定安装器;管理员凭据仅记录于 Authentication.md。
  • Gitea SSH 克隆端口 2222 需在腾讯云安全组放行 TCP 2222 后方可从公网使用(HTTPS 克隆不受影响)。
  • 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 头。
  • Beszel hub 端口仅绑定 127.0.0.1,公网仅经 nginx HTTPS 访问 /beszel/;管理员凭据仅记录于 Authentication.md,首次创建后清空服务器 .env 中的明文密码。
  • 共享剪贴板沿用文件快传的登录鉴权与 X-Requested-With 校验:内容仅登录用户可见,列表接口不返回完整正文,单条长度(默认 25.6 万字符)与保留条数(默认 200 条)均有上限,到期内容由定时任务自动删除。
  • deploy_transfer.py 增加 --keep-credentials 后,日常更新代码不再重建 secret_key 与密码哈希,避免每次部署都让在线会话失效或意外重置登录密码。

[1.0.0] - 2026-08-24

初始版本:lzwlab.cn 静态站点上线。

Added

  • 新增欢迎页 index.html(中文标题“欢迎访问 lzwlab.cn”)。
  • 新增 nginx 站点配置 lzwlab.nginx.conf:80 端口 301 跳转 443,启用 TLS 1.2/1.3 与 HTTP/2。
  • 新增 TLS 证书与私钥(TrustAsia DV,SAN:lzwlab.cn、www.lzwlab.cn),存放于 lzwlab.cn_nginx/。
  • 新增远程运维脚本 remote.py(Paramiko):支持远程执行命令(可 sudo)与文件上传。
  • 新增部署记录 setup.md,覆盖安装 nginx、上传站点、HTTPS 配置与验证全过程。
  • 新增文档维护技能 .dsh/skills/maintain-docs/,用于项目修改后自动更新 README 与 CHANGELOG。