新增 doudou-server 同步服务器
概述
新增 doudou-server,一个独立的 headless 同步服务器,用于在多个 doudou 客户端(手机、桌面、电视)之间同步音乐库数据。服务器只存储音乐服务器 URL 和库快照,不存储任何媒体服务器登录凭据,这样即使 doudou-server 被攻破也不会泄露 Jellyfin/Subsonic/Plex 的登录信息。
包含内容
doudou-server 服务器 (packages/doudou_server)
独立的 Flutter 桌面应用,可在 Linux、macOS、Windows 上运行。使用 drift + SQLite 存储数据,HTTP REST API 提供同步接口。
CLI 命令:
-start启动服务器(前台运行)-stop停止运行中的服务器-clients查看已同步的客户端-set login <user> <pass>设置共享密码-status查看服务器状态-health健康检查
REST API(/api/v1 下,需 X-Doudou-Key 头认证):
GET /health健康检查(无需认证)GET/PUT /servers音乐服务器列表DELETE /servers/{id}删除音乐服务器GET/PUT /snapshots库快照推送/拉取POST /clients/register客户端注册
doudou 客户端集成
DoudouServerConfig模型存储 doudou-server 连接配置DoudouServerClient封装 REST API HTTP 调用DoudouServerSyncService定期(30分钟)+ 启动时 + 手动同步本地库和 doudou-server- 设置页面新增 doudou-server 配置入口
CI
GitHub Actions 构建矩阵新增 doudou-server-linux、doudou-server-windows、doudou-server-macos 三个目标。
安全设计
- 音乐服务器凭据只保存在每个 doudou 客户端本地,永远不经过 doudou-server
- doudou-server 只存储音乐服务器 URL 和库快照数据
- 共享密码以 sha256 哈希存储,客户端用明文密码认证
测试计划
- doudou-server 在 Linux 上构建通过
- doudou 客户端在 Linux 上构建通过
- CLI 命令手动测试:
-set login、-start、-health、-status、-stop、-clients - REST API 手动测试: 健康检查、服务器列表、快照推送/拉取、客户端注册
- doudou 客户端 UI 添加 doudou-server 并触发同步
- macOS/Windows 构建验证
Summary by CodeRabbit
- New Features
- Added optional doudou-server integration for syncing music server settings and library snapshots, including scheduled sync and “sync on resume”.
- Added doudou-server configuration to Settings with per-server sync badges and a “Sync now” action (plus improved add/edit dialog sync options).
- Added a standalone doudou-server app offering health checks, an authenticated REST API, client registration, and snapshot storage.
- Documentation
- Added setup/build/CLI and API documentation for doudou-server.
- Chores
- Expanded CI to build/package new doudou-server targets for Linux, Windows, and macOS.
Edited by ien free