sun
|
f7c7e6ee3a
|
docs: v0.3.0 阶段三 文档、示例配置与发布说明
Docker Publish / build-and-push (push) Canceled after 0s
CI / build-and-test (push) Canceled after 0s
文档与配置同步 v0.3.0 的破坏性变更:
README.md:
- 特性列表更新:管理入口 /dashboard、凭证分离、默认无匿名监控端点
- 环境变量表补充 METRICS_ALLOW_CIDR,并说明未配任何管理凭证时服务拒绝启动
- 端点文档重写:/healthz(匿名且不含字段)、/health(需鉴权)、
/metrics(默认 404,两种使用方式)、管理页面与安装页对照表
(含"页面需鉴权为何又能直接打开"的内容协商说明)
- 公网部署安全清单重写:按端点列出真实暴露面,并提醒探针必须指向 /healthz
- 故障排查、架构表、迁移表中的 /admin 引用统一改为 /dashboard
.env.example:新增 METRICS_ALLOW_CIDR 与 admin_key 说明(含 Docker 网段警告)。
两处部署陷阱修复(阶段一给 /health 加鉴权引发的连带问题):
- docker-compose.yml 的 healthcheck 原指向 /health,加鉴权后会一律 401,
导致容器被判定为 unhealthy → 改为 /healthz
- Dockerfile 的 HEALTHCHECK 同样指向 /health → 改为 /healthz
(这两处若不改,升级后容器健康状态会持续异常,且现象与鉴权改动看起来无关,排查成本高)
新增 docs/RELEASE_NOTES_v0.3.0.md:可直接用于创建 Release,
含 Breaking Change 清单、新特性、验证方式与实测结果、升级步骤。
docs/IMPLEMENT_v0.3.0.md:
- 按合并后的阶段编号重写实施进度表与阶段标题
(原「阶段 1 收紧鉴权」与「阶段 2 收口端点」合并为「阶段 1」,后续顺延),
并说明合并原因:两者只做前者是"有风险无收益"
- 记录本轮实际验证结果
验证:go build / go vet / go test ./... -count=1 全绿。
|
2026-10-04 01:17:43 +08:00 |
|
sun
|
621f9f847e
|
docs(m4): 收敛文档/dock/changelog,env 减到 4 个引导变量
M3 后所有业务配置(api_key/resource_id/speaker/format/sample_rate/...)已搬入
数据库,env 只剩 4 个启动引导参数(setup 前 / DB 还不存在时必需):
1. TTS_ADMIN_KEY 安装 token(/api/setup 鉴权)
2. TTS_DB_PATH DB 路径(可选)
3. PORT 监听端口(可选)
4. OPENAI_TTS_API_KEY OpenAI 端鉴权(可选)
之前 .env.example 仍列出 11 个 BYTEDANCE_TTS_* env,误导用户把配置填 env 里
(实际被 DB 覆盖,改了不生效)。
改:
- .env.example: 只列 4 个 bootstrap env,其他写"通过 WebUI 设置"
- docker-compose.yml: env 块只透传 4 个,加 named volume 持久化 tts.db
(无 volume = 容器重启丢所有配置)
- Dockerfile: 准备 /data 目录,appuser 可写
- CHANGELOG.md: 新文件,记 v0.2.0 全部 M0-M3 + 这次修复
不动:
- README.md(M4 第 5 步独立 commit,文件大)
- 集成测试(M4 第 6 步)
e2e 验证:
- go build ./... 通过
- 旧 .env 文件如果存在仍然兼容(env var 作为 DB 缺失时的 fallback)
未 push (待 M4 全部完成)
|
2026-08-30 23:23:53 +08:00 |
|
sun
|
272565f736
|
fix: VUL-003 完整修复,启发式/精确双模式 XFF 解析
VUL-003 (中): X-Forwarded-For 信任链可被伪造 IP 绕过限流
本服务定位为公网入口,即使单人使用,公网暴露意味着攻击面
与公开服务等同,不能"够用就行"。
采用渐进式披露设计,平衡易用性与功能性:
1. 启发式模式(默认, 不设环境变量 或 TRUSTED_PROXY_HOPS=0)
- 从 XFF 链尾扫描,跳过私有 IP,返回第一个公网 IP
- 适合 90% 部署(单跳/多跳/直出),无需了解精确跳数
- 限制:多跳 CDN 场景下,限流粒度为"按 CDN 边缘 IP"
- 直出部署:整个 XFF 分支不会执行
2. 精确模式(TRUSTED_PROXY_HOPS=N, N>0)
- 从 XFF 链尾倒数第 N+1 个位置取值
- 精准到真实 client,需按实际反代跳数正确配置
- N=1:单跳反代;N=2:CDN+反代;以此类推
3. 两种模式都从链尾扫描
- XFF 首值是客户端可控的,信任首值等于信任攻击者
- 链尾由受控的反代添加,天然免疫伪造绕过
4. 默认值从 1 改为 0(行为变化)
- 旧默认:精确模式 N=1,取 XFF 末值
- 新默认:启发式模式,跳过链尾私有 IP
- 对单跳场景行为相同
- 对多跳/链尾含私有 IP 场景新版更准确(返回真实公网 IP)
5. 配套
- middleware/ratelimit_test.go:24 个表驱动测试用例,
覆盖直出/单跳/多跳/伪造/畸形/精确 N 边界,全部通过
- setting/config.go:LogStartupSummary 显示当前 XFF 模式
- .env.example:重写说明,标注默认行为 + 何时需配
- README.md:新增"反代拓扑与 X-Forwarded-For 解析"章节
(何时需要/两种模式/行为对比/为什么从链尾/启动日志验证)
6. 已知边界:TRUSTED_PROXY_HOPS=00 等被 Atoi 解析为 0 的
输入归入启发式模式,日志不会出现"精确模式 0 跳"矛盾输出。
|
2026-08-26 00:36:22 +08:00 |
|
sun
|
cdd143f7e2
|
docs: 移除复刻1.0相关内容,仅保留2.0
|
2026-08-15 19:17:42 +08:00 |
|
sun
|
f75a8461d1
|
chore: 移除文件开头多余的UTF-8 BOM头
修复多个文件中存在的隐藏BOM字符问题,包括go.mod、README.md、health.html和.env.example,同时更新go.sum文件的校验和
|
2026-08-15 15:02:00 +08:00 |
|
sun
|
5b970f49e1
|
feat: 实现完整可观测性架构与火山v3适配器重构
重构整体架构:
1. 新增telemetry包实现零依赖的Prometheus指标系统
2. 新增metrics包集中管理业务埋点指标
3. 重构火山v3适配器,拆分client/request/response等模块
4. 替换旧的service/stats统计系统为标准指标埋点
5. 新增/metrics观测端点与完整仪表盘支持
功能更新:
- 实现基于IP的限流与并发限制,添加指标埋点
- 重构TTS控制器,支持多格式输出与完整错误分类
- 更新.env.example配置示例,新增多项可选参数
- 替换旧的volcano适配器实现,支持完整的v3 API特性
- 清理冗余代码,移除service/stats与旧adapter实现
|
2026-08-15 13:30:35 +08:00 |
|
sun
|
21b86bfcfe
|
feat: 新增音频格式与采样率配置,完善OpenAI兼容格式映射
1. 新增BYTEDANCE_TTS_FORMAT和BYTEDANCE_TTS_SAMPLE_RATE环境变量配置
2. 实现OpenAI TTS格式到火山API格式的映射转换
3. 自动处理wav格式:内部用pcm请求后封装标准WAV头
4. 动态设置响应Content-Type,适配不同输出格式
5. 更新文档与配置示例,完善日志与错误处理
|
2026-06-27 23:28:35 +08:00 |
|
sun
|
4e1820d45b
|
refactor: 重构项目架构,拆分代码到模块化目录
将单文件tts_server.go重构为模块化项目结构,拆分出common、dto、middleware、router、controller、service、adapter、setting等目录,优化代码组织提升可维护性
|
2026-05-23 20:32:12 +08:00 |
|
sun
|
08c529c375
|
refactor: 移除旧版鉴权模式,仅保留API Key鉴权
简化了配置逻辑,删除了Legacy鉴权相关的环境变量、代码判断分支和文档说明,统一使用API Key进行鉴权,降低配置复杂度
|
2026-05-17 22:27:13 +08:00 |
|
sun
|
3304707abe
|
feat: 升级项目适配火山引擎TTS v3 API
新增:
- 添加.env.example环境变量配置示例
- 重构鉴权逻辑,支持新旧两种鉴权模式
- 适配v3版API接口,实现流式响应
- 完善README文档和配置说明
移除:
- 删除原Linux启动脚本start_linux.sh
优化:
- 重构代码结构,适配新的API参数格式
- 优化日志输出和错误处理
|
2026-05-17 18:08:06 +08:00 |
|