利用Docker自建个人音乐流服务器面板——koel

这个项目放在现在,可能有些太小众,毕竟现在哪里不能听歌呢?

不过,我个人认为,它还是有用的。

1、由于现在各大音乐平台的版权考虑,许多歌我在一个平台听不了,往往需要切换多个平台来听,比较麻烦,切APP的同时,还会有一段讨厌的5s广告,非常地影响心情。

2、我有一些私藏的歌,现在网上根本搜索不到(逼哥的歌,童话镇之类的),而且音质也很高,有了koel,那么到哪里都能听到这些自己喜欢的歌曲清单了,只要手机可以上网,那么随处可以连接自己的服务器来听歌,因为koel是个强大的音乐播放器。

利用Docker自建个人音乐流服务器面板——koel

所以,如果你也有上面的需求,不妨可以搭一个这个项目来玩玩。

正文

这个项目其实是3年前的了,不过现在还在更新中,为了方便起见,我这边利用docker来搭建,省时省力。

利用Docker自建个人音乐流服务器面板——koel

项目官方文档: https://docs.koel.dev/

koel搭建完成之后,就是ip+端口访问的,由于我本人比较喜欢反向代理一些ip+端口的网站,但在koel上,如果用了官方的image却发现行不通,原因是:

The existing setup led to mixed content errors/requests which prevented any of the pages from loading as the connection from the reverse proxy to the Apache web server in the container was unencrypted.

国外一个小哥也发现了这个问题,所以他自己在原来的image基础上修改了一下,增加了反代的支持,所以,我们今天就用这个image来部署。

Docker 镜像地址: https://hub.docker.com/r/nairvish/docker-koel/

环境介绍

  • CentOS 7
  • 宝塔面板安装好LNMP

开始部署

安装Docker

方法一: 可以安装官方文档来安装

https://docs.docker.com/engine/install/centos/

利用Docker自建个人音乐流服务器面板——koel

方法二: 一健安装脚本

curl -fsSL https://get.docker.com/ | sh 

安装Docker Compose

官方文档: https://docs.docker.com/compose/install/

CentOS 7 安装:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 
sudo chmod +x /usr/local/bin/docker-compose 
docker-compose --version 

如果显示版本号,则说明安装成功了。

docker-compose version 1.29.2, build 1110ad01

配置Docker-compose

利用Docker自建个人音乐流服务器面板——koel

首先到/opt目录下新建一个docker-compose.yml文件

cd /opt/  mkdir docker-compose.yml 

编辑docker-compose.yml

vi docker-compose.yml 

也可以在这边打开,

利用Docker自建个人音乐流服务器面板——koel

粘入下面的内容:

version: '3.4'  services:   koel:     image: nairvish/docker-koel     container_name: "koel_base"     restart: always     depends_on:       - database     ports:       - 3006:80     environment:       DB_CONNECTION: mysql       DB_HOST: database       DB_USERNAME: koel       DB_PASSWORD: koel       DB_DATABASE: koel       IGNORE_DOT_FILES: 'true'       APP_ENV: production       APP_DEBUG: 'true'       APP_URL: https://koel.domain.tld       APP_MAX_SCAN_TIME: 600       MEMORY_LIMIT: 2048       STREAMING_METHOD: php       FFMPEG_PATH: /usr/local/bin/ffmpeg       OUTPUT_BIT_RATE: 256       ALLOW_DOWNLOAD: 'true'       CACHE_MEDIA: 'true'       APP_LOG_LEVEL: debug       BROADCAST_DRIVER: log       CACHE_DRIVER: file       SESSION_DRIVER: file       QUEUE_DRIVER: sync       MAIL_DRIVER: smtp       MAIL_HOST: smtp.mailserver.tld       MAIL_PORT: 465       MAIL_USERNAME: koel@mailserver.tld       MAIL_PASSWORD: password       MAIL_ENCRYPTION: tls       ## LAST.FM config ##       # LASTFM_API_KEY=       # LASTFM_API_SECRET=       ## YOUTUBE config ##       # YOUTUBE_API_KEY=       ## PUSHER config ##       # PUSHER_APP_ID=       # PUSHER_APP_KEY=       # PUSHER_APP_SECRET=       # PUSHER_APP_CLUSTER=     volumes:       - /opt/music:/music       - /opt/music/covers:/var/www/html/public/img/covers    database:     image: mysql/mysql-server:5.7     container_name: "koel_mysql"     restart: always     volumes:       - db:/var/lib/mysql     environment:       MYSQL_ROOT_PASSWORD: password       MYSQL_DATABASE: koel       MYSQL_USER: koel       MYSQL_PASSWORD: koel  volumes:   db:     driver: local    music:     driver: local    covers:     driver: local 

我这边端口是3006,文件路径是/opt/music/opt/music/covers,大家可以自行修改,为避免出错,也可以和我一样。

修改Nginx设置

宝塔上新建一个站点,不会的可以看这里:
配置nginx反向代理

注释掉53-65行的内容,

利用Docker自建个人音乐流服务器面板——koel

在之后添加下面的字段,

利用Docker自建个人音乐流服务器面板——koel

      location / {      proxy_pass https://127.0.0.1:3006;    # 如果是本机直接复制就行,如果是别的机器,记得换成你的ip地址      proxy_set_header X-Forwarded-Host $server_name;      proxy_set_header X-Forwarded-Server $host;      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      proxy_set_header   Host $host;      proxy_set_header   X-Real-IP $remote_addr;      proxy_set_header X-Forwarded-Proto https;         # Not sure if these next two lines are needed. I did not remove them as      # I did not want risk breaking my working configuration. Just remember      # to replace "koel.domain.tld" with your instance's domain.      sub_filter "http://koel.domain.tld" "https://koel.domain.tld";      sub_filter_once off;   } 

注意proxy_pass https://127.0.0.1:3006; 这边换成你实际的配置。

如果是在本机配置的反向代理直接复制就行,如果是别的机器,记得把127.0.0.1换成你docker部署机子的ip地址。

部署

docker-compose up -d 

(注意在docker-compose.yml的目录下运行)

接着就会拉去一系列的镜像,可能会多花一点时间,耐心等待,等到出现下面的done就表示成功了(注意在docker-compose.yml的目录下运行)

注: 阿里、腾讯、华为等服务器,记得去后台安全组或者防火墙打开相应端口,我们这边是3006

利用Docker自建个人音乐流服务器面板——koel

运行docker ps,已经看到成功启动的容器了。

利用Docker自建个人音乐流服务器面板——koel

初始化

docker exec -it koel_base php artisan koel:init 

koel_base是容器的名字)

按提示输入信息就行,

利用Docker自建个人音乐流服务器面板——koel

登陆

之后输入你前面的信息,就可以正常登陆了。

浏览器访问:https://你的域名

上传音乐

以文本为例子,上传音乐到/opt/music文件夹下

利用Docker自建个人音乐流服务器面板——koel

这边视服务器的性能,上传的速度可能快慢不一,我这边的服务器是iON的,68美元/年的洛杉矶款,上传平均在4M/s左右。

购买地址: https://loll.cc/iON

利用Docker自建个人音乐流服务器面板——koel

当然也可以选择之前一直说过性价比比较高的腾讯云轻量应用服务器,不过貌似最近缺货比较严重。

腾讯云轻量购买地址: https://loll.cc/tx

登陆之后,填上/music,点击扫描,

利用Docker自建个人音乐流服务器面板——koel

过一会儿,就自动扫描出了歌曲,可以随时随地,愉快地听起来了。

利用Docker自建个人音乐流服务器面板——koel

最后

大家有问题可以在评论区提出来,同时大家有好听的音乐,也欢迎分享~