-
v0.2.2 — 安装引导 + Admin 管理后台 + 全局设置
StableDocker Publish / build-and-push (push) Canceled after 0sreleased this
2026-09-05 00:37:02 +08:00 | 24 commits to main since this release将 develop 合入 main。本次发布把 v0.1.0 纯环境变量配置方案,升级为 WebUI 全流程管理。
新增
M0 — SQLite 存储层
modernc.org/sqlite(无 CGO) 接管所有运行时配置store/包:settings / voices 两表,PRAGMA WAL + foreign_keys- 启动期自动检测 DB 完整性,损坏时备份为
.corrupt-<时间戳>并回退到 setup 模式
M1 — 安装引导
- 首次启动(无
installed.lock)进入 setup 模式 /setup页面 4 步表单:凭证 → 默认路由 → 音色列表 → 确认- Vue 3.4 + axios 1.6 via bootcdn,
//go:embed进 binary - 装完写
installed.lock锁定,后续访问/setup302 跳/admin
M2 — Admin 管理后台
/admin单页 SPA:仪表盘 / 音色管理 / 全局设置 / CORS- 音色 CRUD:新增 / 删除 / 启用切换
- 鉴权复用 OpenAI API key(DB 里
auth_key) - 浏览器安装模式完全跳过 CORS
M3 — 全局设置 + 声音路由
default_speaker是 voice 名字(如chun),路由时查 voice 表拿真 speaker IDPOST /v1/audio/speech支持voice=<name>动态路由- 未知 voice 返 400
unknown voice: '<name>' - 禁用 voice 返 403
voice '<name>' is disabled - 改设置后下一个请求立即生效(不需重启)
M4 — 文档 + 工程收敛
- README 重写:聚焦 WebUI 引导 + 老用户迁移 + 资源 ID 1.0/2.0 区别
- 新增 CHANGELOG.md / PROJECT_BOOK.md
- .env.example 收敛到 4 个引导 env
- docker-compose 加 named volume
tts-data持久化 tts.db - Dockerfile 准备
/data目录并开放 appuser 写权限 - 4 个集成测试(lock / setup / voices / tts_voice)
运维工具
cmd/dumpdb:dump tts.db 的 settings + voices,敏感字段自动打码
配置迁移
v0.1.0 用 env 配 11 个
BYTEDANCE_TTS_*变量。v0.2.2 起改 WebUI 持久化到 SQLite。配置 v0.1.0 (env) v0.2.2 (DB) API Key BYTEDANCE_TTS_API_KEY/setup或/admin默认音色 BYTEDANCE_TTS_SPEAKER同上(填 voice 名字,非 speaker ID) 资源 ID BYTEDANCE_TTS_RESOURCE_ID同上 CORS ALLOWED_ORIGINS/adminCORS tabOpenAI key OPENAI_TTS_API_KEY/setup或/admin启动引导只需 4 个 env(DB 不存在时必需):
TTS_ADMIN_KEY 安装 token TTS_DB_PATH DB 路径(默认 ./tts.db) PORT 监听端口(默认 8080) OPENAI_TTS_API_KEY OpenAI 接口鉴权(可选)向后兼容:老 env 仍可作为 DB 缺失时的 fallback,不强制迁移。
安全修复
编号 等级 问题 修复 SEC-001 中 speaker ID(用户付费资产)在日志 / metrics / admin API 响应中明文暴露 日志打码 S_G8****naJ1;metrics label 用 sha1[:8] 不可逆哈希;admin API 只回前 4 + 后 4SEC-002 中 enabled=0字段不生效,禁用音色仍可调用禁用时返 403 voice_disabled,与unknown_voice(400) 形成清晰区分SEC-003 低 安装 token 比较用普通 ==,存在计时攻击风险改 subtle.ConstantTimeCompare/common.SecureEqualStringSEC-004 低 normal 模式配置加载失败后服务继续跑,所有请求 503 但用户无感 改 fail-fast: log.Fatalf退出 +/healthbody 加configuration_error字段 + metrictts_config_load_failures_total{mode="normal"}供告警
行为变化
启动
- 首次启动(无 DB)→ 监听端口,浏览器
/setup引导 - 正常启动(已有 DB)→ 直接加载,访问
/admin - DB 损坏 → 自愈回退到 setup 模式
- normal + 配置坏 → fail-fast 退出(K8s 拉起会循环触发,便于告警)
CORS
- 安装模式完全跳过 CORS
- 同源请求自动豁免
- 预检不消耗限流配额
- 配置全 DB 化
资源 ID
- V3 API 复刻 2.0 项目应填
seed-icl-2.0(不是volc.megatts.icl) - 模型名
seed-tts-2.0-standard(不复用 resource id)
下载
平台 文件 Windows x64 tts-api.exeDocker ghcr.io/Blue-Ink-Studio/Volcano-Engine-TTS-UI:v0.2.2源码 Source code (zip) / (tar.gz)
升级步骤
- 拉取最新代码或镜像
- 备份旧 env(API Key / speaker ID / 资源 ID),安装时重新输入
- 启动服务(首次进 setup 模式)
- 浏览器
/setup完成配置 - 验证:
/health无configuration_error,/admin可登录 - 客户端测试
/v1/audio/speech合成正常
统计
- 本次新 commit:22(M0-M4 全在 develop)+ 1 反向合并 = 23
- 总 commit(远端 main):含 VUL 修复 + CI workflow 共 106
- 变更文件:33
- 新增代码:+4763 行(Go ~2952,UI ~1503,文档 + 配置 + 测试 ~300)
- 新增包:
store/installer/cmd/dumpdb/middleware/installguard/middleware/admin_auth
已知 / 后续
ui-arch-debt:admin.html 当前是单文件 ~60KB,M5 拆分(按需加载,CDN 分片缓存)/dashboard合并到/admin:避免"两个状态页"用户困惑- 集成测试目前 gitignore(按本地策略),未来挪到 CI
致谢
23 个独立 commit 来自本仓库维护者(
3371392206@qq.com)。Downloads