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
LALA
我什么都不卖了,告辞!
最新评论
5211314
能不能教我 一点不会