







🌟 一个现代化的私人音乐管理与播放系统,支持播放列表、歌词同步与多端访问。(支持一键导入网易云音乐元数据,批量搜刮的私人音乐客户端)
Self Music 是一个面向个人与小团队的音乐管理与播放系统。提供优雅的 UI 与流畅的播放体验,支持播放列表管理、歌词同步、艺术家/专辑数据浏览,并内置后台管理(JWT 认证),开箱即用。
我们提供三种便捷的部署方式:Docker Run 和 Docker Compose 以及 宝塔+ Vercel 部署。
这是最简单快捷的启动方式。只需一条命令即可运行整个应用(需要注意的是,因数据持久化需求,每次执行命令启动的目录需为同一个,建议在 ~ 目录下执行)。
国内服务器推荐 (使用加速镜像):
docker run -d \
--name self-music-app \
--restart unless-stopped \
-p 6230:80 \
-v "$(pwd)/music_data":/data \
docker.cnb.cool/onmicrosoft/self-music:latest
海外服务器或本地 (使用 Docker Hub 官方镜像):
docker run -d \
--name self-music-app \
--restart unless-stopped \
-p 6230:80 \
-v "$(pwd)/music_data":/data \
zkeq/self-music:latest
http://localhost:6230 访问。music_data 文件夹中(修改密码后重启项目即可,会自动更新密码)。admin / admin123。如果您需要更灵活的配置或进行二次开发,可以使用 docker-compose。
克隆本项目
git clone https://github.com/zkeq/Self-music.git
cd Self-music
启动服务
docker-compose up -d
http://localhost:8080 访问。如果需要进行二次开发,请按以下步骤设置本地环境。
环境要求
克隆项目
git clone https://github.com/zkeq/Self-music.git
cd Self-music
启动后端
cd backend
pip install -r requirements.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8000
http://localhost:8000启动前端
cd ../frontend
pnpm install
pnpm dev
http://localhost:3000admin / admin123backend 文件夹上传至服务器 \root 即可
backend/config.yaml 里面的配置项 jwt_secret 和 admin 管理员密码。
打开宝塔 网站 -> Ptython项目 -> 新建站点
新建一个虚拟环境

表单按如下填写

点击确定后项目会进行创建虚拟环境和安装,等待安装完毕 即可
点击设置可查看项目日志

在这一步如果提示找不到某个依赖,点击 操作 中的 终端,自行输入 pip install xxx(包名) 即可,若提示端口被占用 (更改一个没有被占用的端口即可 main.py)

请求服务端口,查看运行情况 (看到这个字符串,说明服务正常运行)

Self-Music/ ├── backend/ # FastAPI + SQLite │ ├── main.py # API 入口(含后台路由) │ ├── user.py # 面向用户的公开接口 │ ├── music.db # SQLite 数据库 │ └── requirements.txt # Python 依赖 ├── frontend/ # Next.js + TypeScript + Tailwind CSS 4 │ ├── src/ │ │ ├── app/ # 应用路由(/play、/artists、/admin 等) │ │ ├── components/ # UI 组件、播放器、歌词、面板 │ │ ├── lib/ # API 客户端、store、工具 │ │ └── styles/ # 全局样式与主题 │ └── package.json # 前端依赖与脚本 ├── AGENTS.md # 仓库贡献与开发规范(中文) ├── README.md # 中文说明(本文件) └── README.en.md # English README
公共接口(无需登录)
GET /api/songs:分页获取歌曲GET /api/songs/{id}:歌曲详情GET /api/artists、/api/artists/{id}、/api/artists/{id}/songs、/api/artists/{id}/albumsGET /api/albums、/api/albums/{id}、/api/albums/{id}/songsGET /api/playlists、/api/playlists/{id}管理接口(需 Bearer Token)
POST /api/auth/login:管理员登录GET/POST/PUT/DELETE /api/admin/{artists|albums|songs|moods|playlists}PUT /api/admin/playlists/{id}/reorder:播放列表重排POST /api/admin/upload:上传音频文件POST /api/admin/import/*:批量导入与查重详见运行后端后的 Swagger 文档:
/docs
pnpm lint 通过、API 本地可运行AGENTS.md, CODE_OF_CONDUCT.md)本项目采用 MIT License 开源协议。
感谢 @haorwen 为本项目提供网易云音乐元信息数据 API 服务。
⭐ 如果这个项目对你有帮助,请为它点一颗星!⭐
Made with ❤️ for music lovers.