







Self Music 是一个面向个人与小团队的音乐管理与播放系统。提供优雅的 UI 与流畅的播放体验,支持播放列表管理、歌词同步、艺术家/专辑数据浏览,并内置后台管理(JWT 认证),开箱即用。
/uploads)admin / admin123^0.104:现代、高性能 API 框架^0.24:ASGI 服务器backend/music.db)15.4.x + React 19^54将 backend 文件夹上传至服务器 \root 即可

修改 jwt secret 为一串随机字符串 auth.py

修改默认管理员账号,默认管理员密码 main.py

打开宝塔 网站 -> Ptython项目 -> 新建站点
新建一个虚拟环境

表单按如下填写

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

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

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


git clone https://github.com/zkeq/Self-music.git
cd Self-music
cd backend
pip install -r requirements.txt
uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000
http://localhost:8000http://localhost:8000/docsadmin / admin123生产环境请通过环境变量或安全配置提供
SECRET_KEY,并收敛 CORS 到可信来源。
cd ../frontend
pnpm install # 或 npm install
# 配置环境变量(可选,默认:http://localhost:8000/api)
# echo "NEXT_PUBLIC_API_URL=http://localhost:8000/api" > .env.local
pnpm dev # 或 npm run dev
http://localhost:3000//play 与 /play/[id]/songs/artists 与 /artist/[id]/albums(如有启用)/playlists 与 /playlist/[id]/admin/loginSelf-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/songs/{id}/stream:音频流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
8000 是否被占用songs.audioUrl 是否为有效本地路径node_modules 后重装依赖,或检查 Tailwind 配置uvicorn/gunicorn + 反向代理(Nginx/Caddy)SECRET_KEY、收敛 CORS、持久化 music.db 与 uploads/NEXT_PUBLIC_API_URL 指向后端 API(如 https://api.example.com/api)pnpm lint 通过、API 本地可运行AGENTS.md)本项目采用 MIT License 开源协议。
⭐ 如果这个项目对你有帮助,请为它点一颗星!⭐
Made with ❤️ for music lovers.