静看光阴荏苒
不管不顾不问不说也不念

MusicCloud:一个简约的音乐服务器

musiccloud的作者其实在dockerhub提供了一个镜像可以快速部署,但是我发现用这个镜像的话没办法更改设置,镜像没有把appsettings.docker.json配置文件暴露出来,可能有可用的环境变量我不知道?

我猜测用docker要能修改设置的话,大概步骤是先修改好appsettings.docker.json里面的配置,然后用作者项目存储库里面的dockerfile自己构建镜像,但是我没试,因为我后来干脆直接手动安装了。。所以这篇文章记录一下安装过程,以下步骤在debian11上完成。

先安装.netsdk6,这是musiccloud后端的依赖:

apt -y update
apt -y install wget curl
wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
apt -y update
apt -y install dotnet-sdk-6.0

musiccloud后端还需要一个fdkaac来转码文件,这个fdkaac的软件包在debian11的contrib分类中,它的依赖又在non-free分类中,所以需要编辑一下软件源的配置:

apt edit-sources

加上contrib、non-free这两个分类:

deb http://deb.debian.org/debian/ bullseye main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free

deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib non-free

然后才能安装到fdkaac:

apt -y update
apt -y install fdkaac

安装ffmpeg,这也是musiccloud后端转码所需要用到的软件:

apt -y install ffmpeg

接下来安装nodejs:

curl -fsSL https://deb.nodesource.com/setup_19.x | bash - &&\
apt -y install nodejs

再用npm全局安装pnpm,这是构建musiccloud前端所需要用到的工具:

npm i -g pnpm

新建一个用户:

useradd -r -s /sbin/nologin -m -d /opt/musiccloud -U musiccloud

登录到这个用户:

su musiccloud -s /bin/bash -l

接下来我们编译musiccloud的前端,克隆项目存储库,进入到项目的根目录内:

git clone https://github.com/lideming/MusicCloud.git
cd MusicCloud

把存储库的版本指定为1068040这个commits,因为我发现用最新的commits无法正常使用,看了下作者的后端也是用的这个commits所以就这样了:

git checkout 10680405be42f6138d26bae7f02747aa5501e100

安装依赖并编译:

pnpm install
pnpm build

完成后在项目的根目录会有一个dist的文件夹,里面就是我们需要用到的前端了。待会我们需要把dist文件夹里面的内容复制到后端配置文件里面指定的路径,这里先不配置。

现在来编译后端,先克隆后端的存储库:

cd ..
git clone https://github.com/lideming/MusicCloudServer.git
cd MusicCloudServer

编译:

dotnet publish -c Release -o out --no-self-contained -r linux-x64

完成之后在项目的根目录内会出现一个out文件夹,里面就是我们编译好的后端了。

现在我们处理一下后端和前端的文件:

mv out/ ../musiccloudbackend
mv ../MusicCloud/dist/ ../musiccloudbackend/webapp

编辑后端的配置文件:

cd ../musiccloudbackend/
nano appsettings.json

指定前端文件的路径:

"staticdir": "webapp",

下面这些配置根据个人需要自行修改:

"AllowRegistration": false,
"NotesEnabled": false,
"DiscussionEnabled": false,

做完这些配置后,现在我们可以尝试运行一下,如果一切正常可以按ctrl+c退出来:

dotnet MCloudServer.dll

新建systemd服务:

systemctl edit --full --force musiccloud.service

写入如下配置:

[Unit]
Description=MusicCloudServer

[Service]
User=musiccloud
Group=musiccloud
Environment=ASPNETCORE_ENVIRONMENT=Production
WorkingDirectory=/opt/musiccloud/musiccloudbackend
ExecStart=/usr/bin/dotnet /opt/musiccloud/musiccloudbackend/MCloudServer.dll
Restart=always
RestartSec=10
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target

启动并设置开机自启:

systemctl enable --now musiccloud.service

配置nginx反向代理:

apt -y install nginx python3-certbot-nginx
nano /etc/nginx/sites-available/musiccloud

写入如下配置:

server {
    listen       80;
    server_name  music.example.com;
    client_max_body_size 0;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

启用新的nginx配置:

ln -s /etc/nginx/sites-available/musiccloud /etc/nginx/sites-enabled/musiccloud

签发ssl证书:

certbot --nginx

访问你的域名,正常的话就能看到登录界面了,默认的管理员账号密码都是admin:

界面很清爽很简洁,没有什么花里胡哨的东西,就一个上传功能,然后搜索功能,再加一个播放列表,就是整个页面的布局。个人觉得很好用:

也可以看看:

https://github.com/lideming/MusicCloudServer
https://github.com/lideming/MusicCloudServer/blob/dev/Dockerfile
https://github.com/lideming/MusicCloud

赞(1)
未经允许不得转载:荒岛 » MusicCloud:一个简约的音乐服务器
分享到: 更多 (0)

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    有演示站吗?

    缙哥哥4周前 (01-01) Google Chrome 108.0.0.0 Google Chrome 108.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 没有,看截图吧就那个样子。

      LALA4周前 (01-02) Google Chrome 107.0.0.0 Google Chrome 107.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿