自托管音乐服务器:Songloft v2.8.7
面向个人用户的自托管音乐服务器Songloft 是一款面向个人用户的自托管工具,定位为帮助用户管理自己合法拥有的音乐文件
百度网盘
https://pan.baidu.com/s/1ESsUxORWC6BNI6c4sPrXkw?pwd=rjrz
核心功能
[*]本地音乐管理 — 扫描本地目录,自动提取 MP3/FLAC/WAV/APE/OGG/M4A 等格式的封面和元数据
[*]JS 插件体系 — 基于 QuickJS 沙箱运行,支持权限模型、健康检查、热更新,可自由扩展音源 / 元数据 / 设备控制等能力
[*]跨平台客户端 — Flutter 客户端支持 Android、iOS、macOS、Windows、Linux、Web 六端
[*]Web 界面 — 完整版内置 Web 前端,开箱即用
[*]JWT 认证 — 双 Token 机制(Access Token + Refresh Token),支持多设备管理
[*]网络歌曲 & 电台 — 支持添加网络音频 URL 与电台流,播放时透明缓存到服务端
[*]完整 REST API — 内置 Swagger 文档,方便集成和二次开发
[*]轻量高效 — Go 编写,CGO-free,无外部依赖,适合 NAS / 树莓派等低功耗设备
Docker 部署
从 Docker Hub 拉取(推荐)
# 🌟 完整版(推荐,包含 Web 前端,:latest 即完整版)
docker pull songloft/songloft:latest
# 📦 精简版(不含 Web 前端,需搭配 Flutter 客户端使用)
docker pull songloft/songloft:lite
# 运行容器
docker run -d \
--name songloft \
-p 58091:58091 \
-v /path/to/music:/app/music \
-v /path/to/data:/app/data \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD='your_strong_password' \
songloft/songloft:latest
PC平台使用流程
启动服务
服务启动后,访问 http://localhost:58091 即可打开 Web 界面
登录系统
使用配置的管理员账号密码登录。
配置音乐目录
首次登录后,进入「设置」页面配置音乐文件目录(music_path)。Docker 部署时通常配置为 /app/music。
扫描音乐
在 Web 界面中点击"扫描"按钮,系统会自动扫描音乐目录中的音频文件并提取元数据。
播放音乐
扫描完成后,即可在界面中浏览和播放音乐。
配置说明
Songloft 仅依赖少量启动期配置(凭证、端口、数据库路径)通过环境变量或命令行参数指定,其余业务配置(音乐目录、扫描规则、封面存储等)都保存在数据库 config 表中,启动后通过 Web 界面管理。
环境变量
变量名
说明
默认值
ADMIN_USERNAME
管理员用户名
admin
ADMIN_PASSWORD
管理员密码
admin
LISTEN_PORT
服务端口
58091
DB_PATH
数据库文件路径
data/songloft.db
BASE_PATH
URL 基础路径(反向代理子路径部署用,如 /songloft)
空(根路径) 这类校验现在很多是服务端下发的,光改本地没用。这类分析一般要多久能出结果? 混淆只能提高门槛,不能真正阻止有心人。 整体思路对,不过细节上不同版本差异还是很大的。 实际做的时候最花时间的是环境搭建而不是分析本身。这套思路对其他 App 通用吗? 这类问题排查最怕环境差异,先在本地复现会快很多。 版本迭代之后要重新分析,这部分工作很难复用。你们环境是怎么解决版本兼容的? 加固厂商之间差异挺大,同一套思路不一定通用。 之前分析过类似的,混淆还原完逻辑其实不复杂。 版本迭代之后要重新分析,这部分工作很难复用。