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

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

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

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

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

正文

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

项目官方文档: 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/

方法二: 一健安装脚本

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

安装Docker Compose

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

CentOS 7 安装:

1
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
1
sudo chmod +x /usr/local/bin/docker-compose
1
docker-compose --version

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

docker-compose version 1.29.2, build 1110ad01

配置docker-compose

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

1
2
3
cd /opt/

mkdir docker-compose.yml

编辑docker-compose.yml

1
vi docker-compose.yml

也可以在这边打开,

粘入下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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行的内容,

在之后添加下面的字段,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    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地址。

部署

1
docker-compose up -d

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

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

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

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

初始化

1
docker exec -it koel_base php artisan koel:init

koel_base是容器的名字)

按提示输入信息就行,

登陆

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

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

上传音乐

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

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

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

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

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

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

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

最后

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