Files
lzwlab_cn/CHANGELOG.md
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

86 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog
本项目的所有重要变更均记录于此。格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)。
## [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。