8 分钟在 NAS 上跑起私有音乐站Folia Docker Compose 部署实录【免费下载链接】folia-major专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major家里 NAS 常年开机却一直只能存歌不能播想让手机、平板、电脑打开同一个地址就能听网易云、酷狗、QQ 音乐还能挂上自己的 Navidrome 曲库看全屏歌词动画——Folia 的 Docker 部署把这套私有音乐站打包好了NAS 搭音乐站不用自己拼项目两个文件加几条命令零编译就能跑起来。 先跑起来再说不用先啃文档先用最少配置把栈拉起来跑通之后再回头补高级项。备目录在 NAS 上建一个空目录例如folia-docker。看到目录建好、里面空空如也就对了。取文件从仓库下载 deploy/docker/compose.yaml 和 deploy/docker/.env.example 放进该目录后者重命名为.env。看到目录下只剩compose.yaml和.env两个文件这一步完成。生成令牌在终端执行下面命令把输出的一长串十六进制字符复制下来作为 Sync Server 的认证令牌。看到 64 位随机字符串生成令牌就备好了。openssl rand -hex 32编辑.env确认FOLIA_IMAGE_NAMESPACE为papersman把上一步的字符串填进SYNC_TOKEN其余项先保持模板默认。启动并验证依次执行下面 4 条命令。docker compose ps里 6 个容器全部 healthy、浏览器打开http://NAS-IP:18080能看到 Folia 界面、http://NAS-IP:13000/health返回正常部署就算成了。docker compose config docker compose pull docker compose up -d --wait docker compose ps 机器里到底跑了什么六个容器组成完整栈端口收得比较紧。排障之前先搞清楚谁管哪块能省一半时间。容器职责对外端口gatewayNginx 网关托管前端并转发全部接口18080backendFolia Web APIAI 主题、歌词分词仅内网netease-api网易云音乐接口仅内网kugou-api酷狗音乐接口仅内网qq-apiQQ 音乐接口支持扫码登录仅内网sync-server数据同步服务SQLite 落盘13000几个值得放心的设计端口收敛整个栈对外只发布18080和13000两个端口三个音乐源 API 都挂在internal: true的内部网络里外部地址够不着只能走网关。只读容器六个容器全部read_only: true并启用no-new-privileges就算某个服务被利用破坏面也被压在内存里。健康检查每个服务都配了 healthcheckup -d --wait会等六个服务全部就绪才返回ps一片绿才代表栈真的能用。网关的路由规则一句话/netease/、/kugou/、/qq/分别转给对应的 API/api/转给 backend其余路径回前端页面。 哪些变量要动模板里大多数项保持默认就行真正要碰的按三档看改完统一用docker compose up -d生效。必填缺了不启动FOLIA_IMAGE_NAMESPACE镜像命名空间模板已给papersman这一行被删掉时 compose 直接报错拒绝启动。SYNC_TOKENSync Server 认证令牌至少 8 位不填同样起不来。建议确认FOLIA_HTTP_PORT/FOLIA_HTTP_BIND网关监听默认18080/0.0.0.0端口被占就改这里。FOLIA_SYNC_PORT/FOLIA_SYNC_BINDSync 端监听默认13000/0.0.0.0。FOLIA_SYNC_DATA_DIR同步数据库目录默认./data/sync想固定挂到某块盘就改它。FOLIA_STACK_VERSION不填走latest想锁版本见「长期用下去」。FOLIA_FORWARD_CLIENT_IP默认false别动它保持false才能避免登录地点显示成局域网。可留空GEMINI_API_KEY/OPENAI_API_KEY连同OPENAI_API_URL、OPENAI_API_MODEL、OPENAI_API_TEMPERATURE留空不影响搜索和播放只是没法用 AI 主题生成和歌词分词。NAVIDROME_URL/NAVIDROME_USERNAME/NAVIDROME_PASSWORD三项都填才触发 Navidrome 自动登录下文细说。QQ_AUTH_SESSION_PATH/QQ_SESSION_SECRET两项同时填后QQ 登录态加密存进卷里重启不掉线。DASHBOARD_TOKEN、FOLIA_TRUSTED_PROXIES、ENABLE_GENERAL_UNBLOCK特殊场景才需要默认不用管。两项必填填好后站点已经能跑界面长这样 把高级功能解锁基础栈跑稳之后下面三块按需选装不配都不报错只是私有音乐播放这块的体验会打折。Navidrome 私有曲库三行配置换全端自动登录.env里三项都填上后新打开的浏览器会自动登录这个 Navidrome 并开启曲库手机、电视、电脑不用再各输一次密码NAVIDROME_URLhttp://NAS-IP:4533 NAVIDROME_USERNAMEfolia NAVIDROME_PASSWORD...不配置会怎样凭据存在各浏览器自己的 localStorage 里每台设备都要手动登录一次。NAVIDROME_URL必须是各设备直接能访问的地址不能写 Docker 内部主机名Folia 走 HTTPS 时它也得是 HTTPS否则浏览器拦截混合内容。这组凭据在局域网内是明文下发的能打开页面的人都能读到建议单开一个 Navidrome 账号给 Folia 专用来源范围用NAVIDROME_PRESET_ALLOW控制默认private只放行局域网。改完执行docker compose up -d --force-recreate backend gateway生效。HTTPS不配会降级一批浏览器能力局域网纯 HTTP 不属于安全上下文以下能力不可用或降级本地音乐目录导入File System Access API、PWA 离线安装、音频输出设备选择。搜索和播放不受影响所以不配也能先跑着。正式用建议让 NAS 上现有的反向代理Nginx Proxy Manager、Traefik 等终止 HTTPShttps://folia.example.com/ - http://127.0.0.1:18080 https://sync.example.com/ - http://127.0.0.1:13000注意三点证书要是浏览器信任的完整证书链自签的不算安全上下文代理需传X-Forwarded-Host/X-Forwarded-Proto: https/X-Forwarded-For并把 HTTP 重定向到 HTTPS同时把FOLIA_HTTP_BIND和FOLIA_SYNC_BIND改成127.0.0.1避免绕过代理直连。另外 HTTP 和 HTTPS 是两个 origin切过去后旧缓存、登录态和曲库索引不会自动迁移。AI 主题与歌词分词留空 Key 的代价FOLIA_AI_PROVIDER决定走google/gemini/openai哪家。不填GEMINI_API_KEY或OPENAI_API_KEY播放、搜索、歌词匹配照常只是 AI 配色主题和智能歌词分词用不了。填上密钥后切换 provider只需重建 gateway 和 backend 两个容器不用重新构建镜像docker compose up -d --force-recreate gateway backend️ 长期用下去栈跑稳之后剩下的事都收敛到.env和两三条命令里。更新版本latest不会自动拉新要手动执行docker compose pull docker compose up -d回滚在.env里加FOLIA_STACK_VERSION1.1.1当前发布版见 deploy/docker/VERSION现为 1.1.2再重复上面两条命令Sync Server 另有FOLIA_SYNC_VERSION可单独锁。备份数据库数据全在FOLIA_SYNC_DATA_DIR下停掉服务打包再启动docker compose stop sync-server tar -czf folia-sync-backup.tar.gz ./data/sync docker compose start sync-server出问题先看这里docker compose ps docker compose logs --tail200 gateway backend netease-api kugou-api qq-api sync-server curl http://NAS-IP:18080/healthz curl http://NAS-IP:18080/api/healthz curl http://NAS-IP:13000/healthps里哪个容器不 healthy就先翻哪个的日志十分钟内基本能定位。跑通之后这份清单存下来备用现在能做什么浏览器打开18080端口网易云、酷狗、QQ 三个源随便搜全屏歌词动画直接看填好 Navidrome 三项后手机、电视各开一个新标签页应自动进入私有曲库想锁版本在.env加FOLIA_STACK_VERSION想备份打包./data/sync走人出问题先看哪里docker compose ps哪个容器不 healthy就先看哪个的日志同步端不通curl http://NAS-IP:13000/health探一下再查SYNC_TOKEN是否被客户端正确携带端口被占或想换绑定地址改FOLIA_HTTP_PORT、FOLIA_HTTP_BIND后重新up -d。两个文件、五步命令NAS 上的私有音乐站就算落地了——剩下的时间留给挑歌。【免费下载链接】folia-major专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考