This repository has been archived on 2023-11-13. You can view files and clone it, but cannot push or open issues or pull requests.
blog/_posts/2022-05-15-mstream.md
2023-06-03 15:58:09 +08:00

107 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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`支持跨平台安卓iOSWindowsLinuxMac都有客户端。至于安装配置[官网](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)