1. Blackcandy: Self hosted music streaming server (github.com)
Blackcandy:自托管音乐流媒体服务器
Blackcandy 是一个自托管的音乐流媒体服务器,可作为个人音乐中心。它提供在线演示供用户体验,并采用 Docker 方便部署。
主要特点与功能
- 自托管:用户可在自己的服务器上运行,完全控制音乐库。
- 流媒体:提供音乐播放功能。
- 多平台访问:支持 Web 端和移动端应用(Android 和 iOS)。
- 集成 Discogs API:可从 Discogs 获取艺术家和专辑图片。
- 演示模式:可限制用户管理权限。
安装与部署
使用 Docker 镜像是最简单的安装方式。
# 使用 GitHub Container Registry
docker run -p 80:80 ghcr.io/blackcandy-org/blackcandy:latest
# 或使用 Docker Hub
docker run -p 80:80 blackcandy/blackcandy:latest
安装后,可通过浏览器访问 http://localhost 或主机IP,使用初始管理员账户登录(邮箱:admin@admin.com,密码:foobar)。
升级时需注意可能存在的重大变更,并遵循升级指南。基本步骤是拉取新镜像并重建容器。
核心配置
Blackcandy 通过环境变量进行配置,以下为关键配置项:
| 名称 | 默认值 | 说明 |
|---|---|---|
DB_ADAPTER |
sqlite |
数据库适配器,支持 sqlite 或 postgresql。 |
DB_URL |
使用 PostgreSQL 时必须设置其连接 URL。 | |
MEDIA_PATH |
设置媒体文件的路径。 | |
SECRET_KEY_BASE |
用于会话安全的密钥。若不设置,每次启动会重新生成,导致旧会话失效。 | |
DEMO_MODE |
false |
是否启用演示模式,会限制管理员权限。 |
HTTP_PORT |
80 |
容器内监听的端口。 |
持久化数据:所有需要持久化的数据存储在 /rails/storage 目录,可通过挂载该目录到主机实现。
使用 PostgreSQL:默认使用 SQLite,但可通过设置 DB_ADAPTER 和 DB_URL 等环境变量切换到 PostgreSQL。
权限处理:挂载卷时可能遇到权限问题,可通过 --user 参数指定与主机相同的 UID 和 GID 解决。
开发指南
- 环境要求:Ruby 4.0、Node.js 20、libvips、FFmpeg。
- 启动开发服务:安装依赖并配置数据库后,运行
./bin/dev。 - 访问:开发时访问
http://localhost:3000,使用相同的初始管理员账户登录。 - 运行测试:使用
rails test:all运行所有测试,rails lint:all运行代码检查。
其他说明
- 日志:默认输出到标准输出(STDOUT),可通过 Docker 的日志选项进行管理。
- 边版本:基于 master 分支的不稳定版本,仅建议开发者测试或贡献时使用。
- 项目赞助:文章末尾列出了赞助方信息。