Folia sync-server 部署指南5 分钟搭好 AI 主题跨设备同步【免费下载链接】folia-major专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器项目地址: https://gitcode.com/GitHub_Trending/fo/folia-majorFolia 是一款支持 Navidrome 与多家在线曲库的本地歌词动画播放器。在 A 设备上把 AI 主题调满意了不想在 B 设备上再折腾一遍它自带的 sync-server 能帮你做增量同步改过的才搬运没动过的不传。本文从生成密钥、部署服务到客户端配对一条线走完。选一条部署路线再生成两把钥匙 三种部署方式共用同一套路由和数据模型区别只在载体按你手头的机器挑方式适合谁费用前置条件Cloudflare Workers推荐完全没有服务器零成本Cloudflare 账号 本机 Node.js 24DockerVPS / NAS机器电费DockerNode 直跑家里一台常开机机器电费Node.js 24不管走哪条路先备好两把钥匙密钥作用长度要求丢了怎么办SYNC_TOKEN客户端凭它读写同步数据必填8 位以上随机字符只能重新部署换新且所有客户端配置都要跟着改DASHBOARD_TOKEN打开隐藏的网页状态看板选填16 位以上随机字符同上重新部署时重新注入两条路任选其一openssl rand -hex 16或者在浏览器按F12控制台里跑crypto.randomUUID()。SYNC_TOKEN少于 8 位时服务会直接拒绝启动这是防字典爆破的硬校验别为了省事填「12345678」。推荐Cloudflare Workers 零服务器两次输入发布先拿源码git clone https://gitcode.com/GitHub_Trending/fo/folia-major cd folia-major/sync-server bash ./install.shWindows PowerShell 换成.\install.ps1。脚本会列出1) Node2) Docker3) Cloudflare Workers菜单输入3进入 Workers 流程。之后全自动创建 D1 数据库 → 生成wrangler.local.toml→ 提示你输入SYNC_TOKEN→ 自动生成并注入DASHBOARD_TOKEN→ 发布上线。全程只需输入两次。结束后的输出务必抄进密码管理器Worker 域名 DASHBOARD_TOKEN。这个看板令牌只在部署时明文显示一次且 Cloudflare 部署后 Token 是加密状态、无法回读丢了只能重新部署。另外脚本生成的wrangler.local.toml里带着你的数据库 ID已被.gitignore忽略别提交进任何仓库。成功标志发布命令输出一个 Worker 域名。下一节客户端「测试」能通过就说明服务端没问题。有 VPSDocker 一条命令监听 13000 端口在sync-server/目录下建.envSYNC_TOKEN前面生成的密钥 DASHBOARD_TOKEN可选的看板密钥回仓库根目录启动docker compose -f deploy/docker/compose.sync.yaml up -d --build这份单服务编排见 deploy/docker/compose.sync.yaml服务映射到宿主机13000 端口SQLite 数据库落在sync-server/data/folia-sync.db。验证是否起来curl http://127.0.0.1:13000/health返回含{ok:true的 JSON 即成功。如果你还想把在线音乐后端一起部署成完整 Web 栈改用deploy/docker/compose.yaml。只有家里一台常开机Node 24 直跑 SQLite和 Docker 方案比只少一步容器。同样在sync-server/下建.envSYNC_TOKEN必填PORT默认 3000DB_PATH默认./folia-sync.db然后cd sync-server npm install npm run start:node底层是 better-sqlite3长期运行可以交给 PM2 管起来。验证方式与 Docker 一节相同把端口换成3000再请求/health。客户端接入设置页三步走完服务跑起来后打开 Folia 的设置 → 存储设置 → Sync Server打开「启用同步服务」开关「Sync Server URL」填根地址不带路径别写/healthCloudflare 域名或http://NAS-IP:13000都行「Bearer Token」填SYNC_TOKEN点保存点「测试」提示「测试成功」就是通了接着点「同步 AI 主题」手动跑一次能看到「主题同步完成上传 X 个下载 Y 个」的提示。此后每次启动 Folia 都会自动做增量同步设置页显示「上次同步」时间无需再手动操作。到底在同步什么设置快照 AI 主题只传差异 同步内容分两块数据结构定义在 src/services/sync/syncTypes.ts外观设置快照可视化模式、背景与透明度、字幕样式、歌词字体、首页布局等。两端按时间戳比较时间戳新的那一端生效旧版本不会反向覆盖新版本AI 主题库主题按指纹分进 256 个 bucket先只比对每个桶的摘要哈希发现哪个桶变了才去取内容——几百首歌的主题实际网络传输只有差量桶比对与差量拉取的实现在 src/services/sync/syncMerkle.ts其余客户端协调逻辑集中在src/services/sync/目录。看板、zip 备份与故障自查 两个附加能力别忘了用只读看板部署时配了DASHBOARD_TOKEN的话浏览器访问你的域名/?token你的DASHBOARD_TOKEN能看到主题数量和最近更新时间页面只读zip 导入 / 导出同步设置同一界面就有「导出 zip / 导入 zip」整份库可以备份成文件甚至完全绕开服务端在两台电脑间直接迁移若同步已启用导入内容也会顺手推到服务端。Docker 部署直接打包sync-server/data目录做备份Cloudflare 方案建议定期用客户端导出留底出问题时按这个顺序排查状况自查顺序测试连接不通地址是否根地址不带路径→ Token 是否完整 → Docker 是否真的暴露了 13000 端口Token 忘了部署时只明文显示一次丢了只能重新部署注入新的SYNC_TOKEN换新后记得同步改所有客户端公网被扫描担心在 WAF / Nginx 层加频率限制除/health外所有接口都要 Bearer 鉴权端口冲突Docker 默认0.0.0.0:13000用.env里的FOLIA_SYNC_PORT改想深入协议细节与源码入口完整 API 表格与协议约束schema 版本1、主题 manifest 固定 256 个 bucket、批量写入上限 500见 sync-server/README.md客户端协调逻辑集中在src/services/sync/服务端入口在sync-server/src/app.ts。做完之后的画面电脑上新生成一个 AI 主题手机打开就是同款外观——歌词动画、字体、背景处处一致。【免费下载链接】folia-major专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考