--- layout : post title : "mStream——自建音乐库" subtitle : "ADs? pay for songs? Go away!" date : 2022-05-15 01:16:46 author : "Manford Fan" catalog : false header-img : "img/post-bg-universe.jpg" tags : - mStream - Music - Server --- 本来想将这个内容加到"[Debian Server部署全过程记录](https://blog.rustle.cc/2022/03/29/debian-server/)"中的,但是一方面,由于这篇博客太长了,不好再往里加内容,另一方面,想把这种做成一个系列,后续还会有自建家庭影院,自建家庭相册等,最重要的是,还可以水一篇blog(不好意思断更太久不是,哈哈哈)。因为音乐付费以及广告的问题,很早之前就有自己host一个音乐站点的想法了,由于一直在忙其他的,本周六稍微安稳了一点(包括内和外,心累...),就赶紧去找了一下,最后锁定mStream这个开源方案,看[Github](https://github.com/IrosTheBeggar/mStream)上的提交记录,作者已经不经常更新了,不过搭建完之后看还是不错的,算是比较完善了。 > **【update @ 10/16/2022】已经发现一个更好的音乐库解决方案,本方案弃用......** ## 一、安装mStream > mStream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. 如上是官方对mStream的介绍,很简洁,就是让你可以在任何设备上访问你自己电脑上的音频流,即`mStream`支持跨平台,安卓,iOS,Windows,Linux,Mac都有客户端。至于安装配置,[官网](https://mstream.io/)也介绍的很清楚了,有三种方式:docker,源码,以及二进制包,其优缺点也各有介绍。由于我的小破站资源并不是很丰富,本着能省一点内存是一点的原则,选择了源码安装,官网的介绍优点是节省资源,缺点是不能自己开机启动,个人感觉这个并不是个问题。 ```bash $ curl -fsSL https://deb.nodesource.com/setup_18.x | bash - $ apt-get install -y nodejs $ git clone https://github.com/IrosTheBeggar/mStream.git $ cd mStream $ npm run-script wizard ... ____ _ _ __ ___ / ___|| |_ _ __ ___ __ _ _ __ ___ | '_ ` _ \\___ \| __| '__/ _ \/ _` | '_ ` _ \ | | | | | |___) | |_| | | __/ (_| | | | | | | |_| |_| |_|____/ \__|_| \___|\__,_|_| |_| |_| v5.11.4 Check out our Discord server: https://discord.gg/AM896Rr 2022-05-14T16:54:26.306Z info: Config File does not exist. Attempting to create file 2022-05-14T16:54:26.309Z info: Config file does not have secret. Generating a secret and saving 2022-05-14T16:54:26.331Z info: Access mStream locally: http://localhost:3000 ``` 当看到如上的输出时,说明mStream已经成安安装,并启动,在浏览器输入http://localhost:3000即可看到界面。
## 二、配置播放选项 服务端安装好之后,第一件事情就是在浏览器访问`http://ip:3000`,以完成关键选项的配置,主要有如下: - 添加音乐文件夹 - 设定admin账户 - 开启Transcoding,并下载FFmpeg Downloaded - 开启log记录
## 三、配置域名以及反向代理 要想配置域名,首先要去域名提供商那里添加DNS解析,然后和其他站点一样,想用nginx做web服务器,只不过这里多了一个步骤,`mStream`默认是使用3000端口,所以为了url比较美观,不带的特殊端口,使用了反向代理的方式进行配置,实际并不复杂,就多了一条指令,即在location块中加入`proxy_pass http://localhost:3000;`。 由于目前大多数浏览器都启用了强制HSTS,所以还是用`certbot`来申请免费的证书并配置。操作完之后,重启nginx服务器,在浏览器访问域名即可看到如下界面:
## 四、开启VPS防火墙 以上都配置好了,但是通过`localhost:3000`还是访问不了,一开始怀疑系统防火墙拦截了,看日志并没有,所以把`ufw disable`将防火墙彻底关掉,还是没有用,最后到腾讯控制台看了下web界面的防火墙,果然没有开放3000端口,添加完自定义之后,就可以访问了 ## 五、配置开机自启动 可以使用`pm2`命令,配合`cron`服务来实现: ```bash $ npm install -g pm2 $ crontab -e # 在文档中追加如下 # when reboot @reboot /usr/bin/pm2 start /opt/source-code/mStream/cli-boot-wrapper.js --name mStream ``` 保存并退出,以后每次重启之后,`mStream`都会自动在后台运行。 ## 六、问题记录 #### 1. iOS客户端不显示播放文件 需要创建文件夹,然后把音频文件放在文件夹里,才会显示 #### 2. 显示歌词问题 暂无 #### 3. 音频meta文件显示不正确问题 暂无 ## 七、参考文档 - [官方安装指南](https://github.com/IrosTheBeggar/mStream/blob/master/docs/install.md) - [nodeJS安装指南](https://github.com/nodesource/distributions/blob/master/README.md)