Inspired by SyncMusic
MusicRadio是一个使用nodejs开发的基于websocket的在线同步播放音乐室,支持多房间(公开/非公开房间) / 多管理员 / 点歌 / 随机播放 /聊天/ 弹幕等功能特性,并提供了基本的管理功能,如:屏蔽用户、屏蔽ip地址、禁言、设置房间管理员等。
- 🏠 房间
- 大厅
- 创建房间
- 私密(密码加入)
- 公开
- 人数限制
- 设置房间管理员
- 屏蔽ip/用户
- 禁言
- 🎵 音乐播放器(同一房间操作同步)
- 暂停/播放
- 切歌
- 调整进度
- 屏蔽音乐(默认自动静音)
- 💬 聊天
- 颜色标识(管理员高亮)
- 表情包支持
- @支持
- 特殊消息悬浮提醒
- 未读消息提醒
- 弹幕
- 消息撤回
- 👀 搜索、点歌
- 模糊搜索
- 批量点歌
- 🎶 播放列表
- 增删(管理员)
- 移动 (管理员)
- 📈 全站数据聚合展示
- ⭐ 超级管理员角色切换(可切换为游客)
- ✔️ 其他......
注意: 在要部署的服务器上要安装有docker以及docker-compose
wget https://raw.githubusercontent.com/sanmmm/MusicRadio/master/docker-compose.yml
docker-compose up -d
其他配置项可见配置项说明
注意: 在要部署的服务器上要安装有docker
docker pull sanmmmm/music_radio
关于依赖服务, 见 依赖服务
在上述配置好之后,运行
docker run -d -p 3001:3001 -e REDIS_URL=redis://examplehost:6379 -e NETEASE_API_URL=http://examplehost:3000 sanmmmm/music_radio
其他配置项见配置项说明
详情见依赖服务
git clone [email protected]:sanmmm/MusicRadio.git
配置前后端的打包所需环境变量, 见配置项说明-环境变量
前端打包:
cd frontend && npm run build
后端打包:
cd backend && npm run build
在设置好依赖服务的环境变量之后,运行
node <YOUT_BACKEND_BUILD_TO_DIRECTORY>/app.js
MusicRadio依赖的其他三方服务有:redis
(用来存储数据)以及 网易云音乐api。所以在运行MusicRadio
之前需要先配置启动上述两项服务。然后通过后端配置文件或者
环境变量
来配置到MusicRadio
之中供其与之通信
举例: 假设redis的地址为 localhost:6379, 则设置环境变量REDIS_URL
的值为redis:localhost:6379
。 而网易云音乐apiServer 的地址为 localhost:3000, 则设置环境变量NETEASE_API_URL
的值为http://localhost:3000
注:通过docker部署时则需要在运行docker命令的时候通过 -e
参数来把环境变量注入,可见docker运行
环境变量具体说明, 见配置项说明-环境变量
MUSIC_RADIO_TAG:
必须项: 否
默认: latest
说明: docker 镜像的tag版本,缺省条件下为latest
CONFIG_DIR
说明: 见CONFIG_DIR
OUTPUT_PATH:
必须项: 否
默认: ./static
说明: webpack打包输出目录
NODE_ENV:
必须项: 是
说明: 生产环境设置为production
ASYNC_SETTINGS:
必须项: 否
说明: 设置前端配置文件的加载方式,不设置时(默认)为打包时打包配置文件(配置文件为frontend/config/settings.ts
),
设置为1
时则为打包时不讲配置文件打包进去,网页运行时再从后端加载配置文件,
该配置文件可见 后端客户端配置文件
NODE_ENV:
必须项: 是
说明: 生产环境设置为production
STATIC_PATH:
必须项: 否
默认: ./static
说明: 后端静态文件夹所在目录,默认为后端根目录
CONFIG_DIR:
必须项: 否
默认: 后端自定义配置存放文件夹
说明: 添加配置文件目录,见后端自定义配置存放文件夹
SESSION_TYPE:
必须项: 否
默认: cookie
说明: 后端会话管理方式,默认为cookie
,还可以配置为ip
, token
REDIS_URL:
必须项: 否
说明: 后端会话管理方式,默认值配置在后端默认配置文件中。通过环境变量配置的值优先级最高,将会覆盖在配置文件中配置的值
NETEASE_API_URL:
必须项: 否
说明: 后端会话管理方式,默认值配置在后端默认配置文件中。通过环境变量配置的值优先级最高,将会覆盖在配置文件中配置的值
前后端共用配置文件夹: /common/
前端配置文件夹: /frontend/config/
后端默认配置文件夹: /backend/default/
该文件夹下存放的为系统默认配置,请不要编辑该文件夹下内容,
可以通过在配置后端自定义配置存放文件夹中写入同名配置文件来覆盖default文件夹下的配置文件。如:假设default文件夹下有默认配置文件: FILE_NAME.default.js
, 可以通过在后端自定义配置存放文件夹中配置 FILE_NAME.js来覆盖上述默认配置。
该文件夹下的配置文件有:
/backend/default/bitSymbols.default.json
/backend/default/blockMusic.default.json
: 屏蔽的音乐列表
/backend/default/blockWords.default.json
: 聊天敏感词列表
/backend/default/emojiData.default.json
: 表情包列表配置文件
/backend/default/clientSettings.js
:
前端配置文件(前端从后端加载配置文件时返回的配置文件)具体可见ASYNC_SETTINGS环境变量
/backend/default/settings.default.js
: 后端配置文件
后端自定义配置存放文件夹: /backend/config/
也可以通过环境变量添加自定义配置文件夹
的位置
该文件夹存放用户的自定义配置文件(可以覆盖同名默认配置文件的配置)
超级管理员的注册页面为 yourhost/admin/register
注册时需要一个注册码
可以在配置文件的superAdminRegisterTokens
字段配置该码,该字段数据类型为字符串数组
超级管理员的登录页面为 yourhost/admin/login