107 lines
5.2 KiB
Markdown
107 lines
5.2 KiB
Markdown
---
|
||
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即可看到界面。
|
||
|
||
<center><img src="https://blog.rustle.cc/img/posts/mStream-ip.png" width="800"></center>
|
||
|
||
## 二、配置播放选项
|
||
|
||
服务端安装好之后,第一件事情就是在浏览器访问`http://ip:3000`,以完成关键选项的配置,主要有如下:
|
||
|
||
- 添加音乐文件夹
|
||
- 设定admin账户
|
||
- 开启Transcoding,并下载FFmpeg Downloaded
|
||
- 开启log记录
|
||
|
||
<center><img src="https://blog.rustle.cc/img/posts/mStream-config.png" width="800"></center>
|
||
|
||
## 三、配置域名以及反向代理
|
||
|
||
要想配置域名,首先要去域名提供商那里添加DNS解析,然后和其他站点一样,想用nginx做web服务器,只不过这里多了一个步骤,`mStream`默认是使用3000端口,所以为了url比较美观,不带的特殊端口,使用了反向代理的方式进行配置,实际并不复杂,就多了一条指令,即在location块中加入`proxy_pass http://localhost:3000;`。
|
||
|
||
由于目前大多数浏览器都启用了强制HSTS,所以还是用`certbot`来申请免费的证书并配置。操作完之后,重启nginx服务器,在浏览器访问域名即可看到如下界面:
|
||
|
||
<center><img src="https://blog.rustle.cc/img/posts/mStream-domain.png" width="800"></center>
|
||
|
||
|
||
## 四、开启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)
|