UNRAID教程(保姆级)4:UNRAID安装个人音乐流服务器和强大的音乐播放器
这几天一直在整理我的Unraid上面的文件,给各种文件归档,发现我的视频文件有Jellyfin来外网访问播放,但是我的音乐共享文件夹上面还有好几百G的hifi音频文件躺在那里很久了,都没有听,关于音乐播放器,阿文菌有发过一篇docker上面的音乐播放器.
但是这些音乐都是在网上音乐平台搜索的音乐,由于版权的问题,很多我喜欢听音乐都听不到.而自己喜欢的音乐都在unraid上面保存,不听都浪费了,所以就想着自己搭一个音乐流服务.
在网上搜索了一下,发现有koel这么一款音乐流媒体应用,上koel开发者网站上看了一下,原来开发者是个音乐爱好者,他自己有一个服务器,所以要搭建一个属于自己的个人音乐流服务器。开发者网站上也有它的GIT仓库的地址,也去了解了一下,星级评价还是挺高的.决定尝试一下这个播放器.
到dockerhub上寻找这款软件的安装镜像,然后才发现koel安装方法跟普通的docker还是有点区别,它需要有数据库的支持,MySQL,MariaDB,PostgresSQL或者SQLite都可以.
也就是说要安装这个音乐流容器,就要先安装数据库服务.既然决定要安装,那也不差这一个数据库服务,我们先在unraid上安装一个比较流行的MySQL容器吧,大家打开Unraid的Terminal跟我一起输入以下代码来安装MySQL容器吧... ... ... ...
等等,MySQL?这个名字好像在哪里见过... ... 对了,我的宝塔安装的web服务器,数据库用的就是MySQL,既然宝塔上面有了SQL数据库服务,我是不是可以直接利用呢?这样既可以节省运行内存,也可以避免一个服务器开两个数据库服务可能造成的端口冲突什么的.但是宝塔和koel是处在两个不同的容器中,那不同的容器是不是可以互相通信?我们先试试看,用已有的两个容器,看看它们之间是不是可以互相ping通对方的ip地址呢?
可行性测试
注意:以下命令并非koel安装命令所需要的步骤,大家可以不用跟着输入,只是我分享一下我的验证过程.真正开始安装部分请跳到后面的开始安装
首先打开unraid的Terminal
接着在terminal里面输入如下代码,查看我的宝塔面板的ip地址,命令中baota是我的宝塔面板的docker容器的名称:
docker inspect baota
发现baota的ip地址是:172.17.0.6
那么我随便进入一个在运行的容器里面,去ping这个ip看看是不是可以ping通,如果可以说明我们即将安装的koel同样也可以访问到宝塔,那样就可以利用它里面的数据库服务了.
接着输入下面的命令查看运行中的容器信息
docker ps -a
然后随便复制一个容器的id,只要不是baota的id就可以了
接着输入如下命令,进入这个正在运行的容器里面:
docker exec -it 复制到的容器的id /bin/bash
如下图:
然后输入以下命令,用这个容器发送5个数据包,ping一下宝塔的ip
ping 172.17.0.6 -c 5
发现5个数据包,零丢失,说明可以ping通,没问题,我们确实是可以利用宝塔面板安装的sql数据库,不需要额外再装一个.
输入
exit
退出该容器的命令界面
开始安装:
分配固定IP
从这里开始安装命令,就是我的音乐流容器的安装命令,如果需要安装koel音乐流服务的,可以跟着一起输入.
有了上面的试验,我们知道docker的容器之间,只要知道目标容器的ip是可以互相通信的.
那么又出现一个问题,如果docker服务每次重启的话它里面的容器ip地址是会改变的,所以我们要给宝塔容器分一个固定的ip.
但是默认情况创建容器用的网络桥接是不支持分配固定ip,我们想要给容器一个固定的ip,就要创建自定义网络,并且指定网段,然后把要指定固定IP的docker容器加入到这个网络中,并分配固定ip.
目的很明确,接下来我们先创建一个自定义网络吧
我们可以用如下命令创建一个名叫myNetwork的自定义网络,指定网段为172.18.0.0/16
docker network create --subnet=172.18.0.0/16 myNetwork
回车键执行后继续输入以下代码查看我们的自定义网络是否创建成功
docker network ls
可以看到名称为myNetwork的网络,说明创建成功!
接下来我们就要把宝塔面板加入到这个网络中,并给它一个固定的IP:172.18.0.200
我们继续输入:
docker network connect --ip 172.18.0.200 myNetwork baota
我们再看一下加入到自定义网络中宝塔的ip,继续输入
docker inspect baota
可以看到宝塔面板中除了原来默认网络的ip172.17.0.6,还有我们自定义网络的固定ip172.18.0.200
如果不想要原来的ip,只保留我们指定的固定ip,我们可以输入以下命令,断开baota的默认的网络连接,当然不断开也是可以的
docker network disconnect bridge baota
其中命令中的bridge是默认的网络名称.
输入以下命令查看断开默认网络后baota容器的ip情况
docker inspect baota
现在就只剩下我们设置的那个固定ip了.
这样以后我们想要连接宝塔里面的其他服务的话就可以把相应的容器加入这个网络就可以了.
添加数据库
好的,既然固定ip的问题解决了,我们现在就建一个数据库作为我们音乐流服务的数据库吧.
输入宝塔面板管理的地址.登陆宝塔面板.怎么进入,可以参考我的第一篇文章里面宝塔面板安装.
进入宝塔面板后点击数据库->添加数据库 来新建一个数据库,其实可以不用新建,直接用我们已经建立好的网站服务器的数据库,这边我为了安全考虑,不想把网站数据库开放来使用,就单独做一个数据库来给其他容器用.添加数据库的设置如下,大家参考一下,可以根据自己喜好来修改,这里我们先把这个数据库的访问权限设置成"所有人(不安全)",等后面容器安装好后再回来修改.另外还要注意一下,新建数据库的用户名不能跟我们已经存在的网站数据库的用户名相同,要不然创建失败,这里我的用户名跟数据库名一样.
点击提交,就可以看到我们新建的数据库了
安装koel音乐流容器
数据库创建完成我们就可以开始安装我们的koel容器
继续在terminal里面输入以下命令:该命令只是模板,大家参考一下,根据你们自己的实际情况修改
docker run -d --name=KOEL --link=baota --privileged=true --restart always --network myNetwork --ip 172.18.0.201 -v /mnt/user/appdata/koel:/config -v /etc/localtime:/etc/localtime:ro -v /mnt/user/NAS/Media/Music:/media -e DB_CONNECTION=mysql -e DB_HOST=baota -e DB_DATABASE=docker_data -e DB_USERNAME=docker_data -e DB_PASSWORD=12345678abc -e ADMIN_EMAIL=root@root.com -e ADMIN_NAME=bluefox -e ADMIN_PASSWORD=123mypassword -p 50001:80 alexphillips/koel
命令有点长,这里包括了所有koel的配置,大家可以参照修改,我解释一下上面的命令:
--name=KOEL 这个是容器的名字
--link=baota 这个重点说一下:这是把koel容器跟baota容器连接(baota是我宝塔面板的名字), 设置这个的话,我们想要连接宝塔的mysql服务时,主机名字就只要输入宝塔面板名字(baota),而不用输入它的固定ip地址.这个设置可以不需要,因为我们在上面已经给宝塔设置了固定ip,连接时候只要输入baota的固定IP就可以了.但是考虑到以后我有可能要修改网络配置,baota的ip可能也要修改的情况,设置了--link=baota 这样不用重新设置其他容器的宝塔ip地址.
--privileged=true 给koel特殊权限
--restart always 容器随docker启动
--network myNetwork --ip 172.18.0.201 加入到我的自定义网络myNetwork,并给koel容器一个固定ip172.18.0.201,这样就可以加入到和宝塔同一个网络里面了.另外这个固定ip我最后要在宝塔数据库设置里面添加为信任的ip.我们上面自定义网络,给baota设置固定ip不是重点(因为我可以用--link来连接baota),最最最主要原因其实还是要给使用宝塔的其他容器设置固定ip,这样方便后面添加到信任IP,否则的话没有固定ip,重启unraid的话容器的IP就变了,信任ip就不生效了.
-v /mnt/user/appdata/koel:/config 把unraid里面的/mnt/user/appdata/koel文件夹挂载到koel容器的配置文件夹
-v /etc/localtime:/etc/localtime:ro 把本地时间设置给koel
-v /mnt/user/NAS/Media/Music:/media 把unraid里面的/mnt/user/NAS/Media/Music文件夹挂载到koel容器的/media文件./mnt/user/NAS/Media/Music这个文件夹下存放这是我几百G的音乐文件.
-e DB_CONNECTION=mysql 连接数据库类型mysql
-e DB_HOST=baota 数据库主机地址,这里我填了baota,如果没有用到上面说的--link=baota的话,我们这里要填写baota的固定ip:172.18.0.200
-e DB_DATABASE=docker_data 这里是我们上一步创建的数据库的数据库名
-e DB_USERNAME=docker_data 这里是上一步创建数据库时填写的数据库用户名
-e DB_PASSWORD=12345678abc 这里是上一步创建数据库时填写的连接密码
-e ADMIN_EMAIL=root@root.com 这个是koel登陆时要用到的邮箱(登陆要用,不一定要真实的邮箱)
-e ADMIN_NAME=bluefox 这是设置管理员名字
-e ADMIN_PASSWORD=123mypassword 这里koel登陆时要用到的管理员密码,可以填自己记得住的密码
-p 50001:80 我设置50001是koel的访问端口,到时候用 我的ip:50001 就可以登陆使用音乐流了
alexphillips/koel 这是docker_hub的镜像
上面命令已经解释很清楚了,大家照着修改就好了,主要还是修改一下你们自己的数据库信息,已经koel的管理员信息.
按回车开始安装,我安装这个容器的时候下载有点慢,还出错过两次,大家耐心点等待下载安装.
出现以下一串字符串,说明安装结束
输入
docker inspect KOEL
看看它的ip是不是我们设置的固定IP172.18.0.201
没错,就是我设置的固定ip
现在我们输入 我的内网ip:50001 或者 我的域名:50001 进入koel ,如下图.
输入上面命令中设置的管理员邮箱,以及密码进行登陆.登陆后我们可以看到主页上什么音乐也没有,界面是英文的,但是都是很简单的英文,左侧栏英文分别是 :主页,当前播放列表,所有歌曲,专辑,歌手. 接着是:收藏夹,最近播放. 下面是设置,用户. 我们可以在用户里面添加新用户,这样就可以把歌曲共享给其他朋友.
之后我们点击主页左侧栏上的Settings 设置我们的音乐文件的路径
在Media path输入框里面输入/media,然后点击下面的Scan按钮,开始扫描该路径下的所有音乐.上面的安装命令上我已经把unraid下的音乐文件夹挂载到/media路径下,这样就可以把我所有的音乐给检索出来.
等几秒钟后音乐检索完毕.
检索完毕后自动回到主页,就可以看到我unraid的音乐文件夹下所有的音乐都出现了,
点击左侧栏的All Songs 可以看到我所有的音乐有499首.如下图,暴露年龄的音乐.
点击一首播放一下试试看,播放界面还算炫酷.又试了几首hifi.有flac格式,mp3格式,都能完美播放.右下角还有均衡器可以设置各种类型,这里截图我忘记截取了.
开发者网站上说是支持.mp3,.ogg,.m4a,和.flac,其他的格式我也没有,就没试.
这样以后走到那里,我都能连接到自己的音乐流服务器享受自己喜欢的音乐了.
安装算是完成了,我们看看是不是有在宝塔的数据库上面创建了数据,用宝塔面板里面的phpmyAdmin登陆我的数据库,点击docker_data数据库,发现创建了10个数据表,数据库连接没问题.
到这里算是结束了.
我突然又想到还有一个docker容器也可以使用mysql数据库,那就是大名鼎鼎的私人云-NextCloud.这个nextcloud默认使用的是SQlite作为数据库,但是它本身是不建议使用SQlite作为数据库,我们也试试看是不是可以连接这个baota的mysql呢.
安装nextCloud
各位值友,你们看一个教程我再赠送你一个教程.这个教程就是安装一个基于MySql数据库的nextcloud.
在unraid的terminal里面输入以下命令来安装nextCloud:
docker run -d --name NextCloud --link baota:baota --privileged=true --restart=always --network myNetwork --ip 172.18.0.202 -p 52000:443 -v /mnt/user/appdata/nextcloud:/config -v /mnt/user/NAS/NextCloud:/data linuxserver/nextcloud
这个命令相对上面的koel来说会简单,我就不多解释了,参考上面的koel命令的解释.我们给nextcloud设置一个固定的IP:172.18.0.202. 访问端口是52000,你们可以设置成自己的端口
很多值友会发现我的docker容器都是基于命令行安装,都不是通过unraid的App里面的模板来安装.是的,我觉得这样更简单,自己配置容易,而且也方便做记录,我unraid上面所有的容器都是在命令行来安装的,安装命令的笔记大家可以去我的博客上面找一下.
nextcloud安装完成后,也看一下固定IP
另外要特别注意nextcloud是需要用https来访问,不能用http访问
否则会出现下面的错误:
我们在浏览器输入 https://内网ip:52000 或者 https://域名:52000 点击下面的高级
点击下面的:继续前往
进入nextcloud连接界面,我们可以看到它默认用的sqlite数据库,并且下面还说明了 强烈不建议使用sqlite 既然这样那我们就用mysql数据库吧.我们点击下图中的 存储与数据库
先设置管理员账号和密码,然后再配置数据库下 选择 MySQL/MariaDB 接下来就填写我们宝塔面板创建的数据库信息,参照下图.另外主机名称和端口号填写baota. (如果上面安装命令没有--link baota:baota的话,这个地方要填写baota的固定ip).填写完成后点击底下的安装完成.开始进行安装.
正在完成安装
安装完成后会自动跳到登陆页面:输入管理员账号和密码登陆
开始使用我的私人云吧.
还有一个要注意的就是nextcloud要用我们的域名访问的话,要去它的config.php的配置文件里面里面修改,否则的话会出现如下提示
修改方法如下,我用的是FileBrowser来进入unraid的如下路径:user/appdata/nextcloud/www/nextcloud/config/config.php,把我们的域名添加到信任域名列表里面,有多少就按顺序添加多少.大家可以用自己喜欢的方法修改.如下图:
最后,我们再进入宝塔面板的phpmyadmin看看我们的数据库情况,数据表变成了82张.说明nextcloud在数据库上也创建了许多的数据表,数据库连接也是没问题的.
好了,赠送的教程到这里也结束了
设置数据库访问权限
大家还记得我们最开始创建数据库时,权限选择的是 "所有人(不安全)"这个选项吗,所有人都可以连接这个数据库确实是不安全.既然不安全,那我们就改成安全的吧,点击宝塔面板的数据库,在我们创建的docker_data那里点击权限.如下图:
把范围权限改成指定ip,如下图:
然后输入我们指定给KOEL和NextCloud的固定ip,并用逗号隔开.如下图
这样就只有这两个ip可以连接这个数据库,其他IP都连不上,这样就安全了
大家也可以试试看把这两个ip改成其他的ip,这样你们的nextcloud和koel就无法正常使用了,当然试过之后要记得改回来.
总结
有了koel,那么到哪里都能听到自己喜欢的歌曲清单,只要我的手机可以上网,那么随处可以连接自己的服务器来听歌,koel上也有下载按钮,可以下载喜欢的音乐到手机,离线也可以收听,koel是个强大的音乐播放器。
本篇教程结束,以后有更好玩的东西我会再来跟大家一起分享.
结束....
啥,你们还要看彩蛋?没有彩蛋!
下次再见.














































笨笨的小鱼
校验提示文案
商陆
校验提示文案
商陆
校验提示文案
以梦为马
校验提示文案
挥手难回眸
校验提示文案
吃米粒是我哈尼
校验提示文案
joker95275
校验提示文案
chucklee
校验提示文案
棠溪2022
校验提示文案
值友5639716155
校验提示文案
swmo
校验提示文案
doublewang2001
校验提示文案
flipphos
校验提示文案
gpstar
校验提示文案
Eyomi
校验提示文案
weyes
校验提示文案
刹八达一高
校验提示文案
wonghe
校验提示文案
商陆
校验提示文案
airzero
校验提示文案
ProfessorX
校验提示文案
宇要寻找意义
校验提示文案
animagi
校验提示文案
IcingX
校验提示文案
joker95275
校验提示文案
值友3011700244
校验提示文案
朝天在活
校验提示文案
值友5473061604
校验提示文案
那年夏天雨飘飘
校验提示文案
chnseven
校验提示文案
挥手难回眸
校验提示文案
文艺_委员
校验提示文案
以梦为马
校验提示文案
石石石子Pro
校验提示文案
2013最后一个昵称
校验提示文案
HenryXXF
还不错,就是发现不能显示播放进度,也没发现显示歌词(有歌词文件),我全是flac格式。
可能哪里没设置好。
校验提示文案
airzero
校验提示文案
商陆
校验提示文案
商陆
校验提示文案
商陆
校验提示文案