使用Koel在Ubuntu 20.04 LTS系统中搭建私人音乐电台

Koel是著名的个人音乐在线播放与电台程序。在英文中,Koel是一种鸟类,它经常发出好听的叫声,该程序也因此得名。Koel完全免费开源,在Github上已经有一万多个Stars, 一千多次Forks.  今天我们将介绍如何在Ubuntu 20.04 LTS系统中搭建Koel私人音乐电台。

本文作者为香菇肥牛,原文链接为https://qing.su/article/personal-music-streaming-server-with-koel.html, 转载需著名原文链接。谢谢!

 

1, 基础系统环境

本文将以Ubuntu 20.04 LTS操作系统为例,介绍Koel音乐播放与电台系统的搭建。您需要将您的域名解析到服务器的IP地址上。下文中,我们将以域名koel.qing.su为例。

在开始之前,首先介绍一下该程序的架构。Koel的后端使用Laravel PHP框架,前端使用Vue JS框架。本文将使用基础的Nginx + MariaDB架构来实现Koel的搭建。由于需要用到两个框架,程序安装过程中,需要的组件较多,步骤较为繁杂,我们将提供图文教程和图文教程。

该程序需要至少1 GB的内存。Koel没有官方的Docker镜像,只有第三方开发的镜像,而且性能会弱于非Docker的安装方法。因此我们将不介绍Docker方式的安装。

下面,我就来详细介绍如何在Ubuntu 20.04 LTS操作系统中手动搭建Koel私人音乐电台。由于步骤较多,我们一并录制了SSH轻视频,您可以点击下方的播放键观看,视频上任意内容均可使用鼠标直接复制。若您的浏览器没有加载播放器,请刷新本页面。


 

2, 安装Nginx服务器与PHP

我们直接从包管理器安装Nginx.  执行:

1
2
apt-get update && apt-get upgrade
apt-get install nginx git

继续从包管理器安装PHP.  这里,我们将安装默认的PHP7.4, 并安装一系列需要的PHP拓展。

1
apt-get install php php-bcmath php-json php-mbstring php-xml php-common openssl libssl-dev php-mysql php-dev php-zip php-curl php-fpm

需要注意的是,从包管理器安装PHP 7.4的时候,会一并安装上Apache2服务器。因此,安装PHP和各组件时会报错,如下图。您可以无视。

安装Koel需要卸载Apache2

安装完毕后,执行下面的命令卸载Apache2.

1
apt-get remove apache2 && apt-get autoremove

Koel在播放音乐时需要较大的PHP内存,因此我们需要修改PHP的memory_limit参数。编辑文件/etc/php/7.4/cli/php.ini, 将memory_limit参数值修改为512M.

1
memory_limit = 512M

如下图:

提高PHP Memory limit.

修改完毕后,可以不用着急重新载入Nginx.  我们后面配置Nginx的时候可以一并操作。

 

3, 安装与配置MariaDB数据库

这一节,我们将安装MariaDB数据库。MariaDB是MySQL的替代产品,您也可以使用MySQL.  我们将直接从包管理器安装MariaDB.  执行:

1
apt-get install mariadb-server

这样就安装好了MariaDB.  首次安装,需要设置一些基础的安全选项。

1
mysql_secure_installation

然后,新建一个数据库,用来提供给Koel程序使用。首先,进入MariaDB命令行:

1
mysql -u root -p

然后,新建一个数据库。

1
2
3
CREATE DATABASE koeldb;
GRANT ALL ON koeldb.* TO 'koeluser' IDENTIFIED BY 'qing.su';
quit;

这样,我们新建了一个名为koeldb的数据库,数据库用户名为koeluser, 密码为qing.su.

 

4, 安装Composer与Laravel

Koel使用Laravel PHP框架作为后端。因此,我们需要安装Laravel框架。这里我们使用Composer来安装。

首先,安装Composer.

1
2
3
wget https://getcomposer.org/installer
php installer
mv composer.phar /usr/local/bin/composer

然后,使用Composer安装Laravel.

1
composer global require laravel/installer

上面这一步的执行过程中可能会看到如下的警告,可以无视。

Composer提示不能使用root执行。

 

5, 安装NodeJS与Yarn

Koel的前端使用了Vue JS框架,因此我们需要安装NodeJS与yarn来编译生成前端JS文件。

首先,安装NodeJS.  请注意,Koel目前仅支持10.x版本的NodeJS.  新版本比如14.x版本的NodeJS无法正常运行Koel.

1
2
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install nodejs

然后,使用Node安装yarn.

1
npm install -g yarn

您也可以添加源然后使用包管理器安装yarn.

1
2
3
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt-get update && apt-get install yarn

 

6, 安装Koel主程序

安装好所有这些组件之后,我们就可以开始部署Koel主程序了。我们将Koel主程序部署在/srv/www/koel/public_html/目录,您可以根据个人喜欢部署在其他目录。

1
2
3
mkdir -p /srv/www/koel/public_html
cd /srv/www/koel/public_html
git clone --recurse-submodules https://github.com/phanan/koel.git .

这里,您可以前往https://github.com/phanan/koel/releases查看最新的Koel版本号,然后安装对应的版本。我这里是4.4.0.

1
2
git checkout v4.4.0
composer install

此时,我们需要编辑文件.env, 配置数据库与管理员用户信息。在这个文件中,我们有三处需要修改。

首先,在下面几行中,填入我们在第三部分建立的数据库信息:

1
2
3
DB_DATABASE=koeldb
DB_USERNAME=user
DB_PASSWORD=qing.su

在下面几行中填入管理员用户信息:

1
2
3
ADMIN_NAME="香菇肥牛"
ADMIN_EMAIL=hi@example.com
ADMIN_PASSWORD=qing.su

更改APP_URL的值,将其修改为您的Koel域名:

1
APP_URL=http://koel.qing.su

如下图:

修改Koel配置文件

修改完毕后,保存退出。

最后,我们初始化Koel.  该步骤将初始化Koel数据库,并自动执行yarn install安装前端文件。这一步需要较长时间,且中途可能会遇到各种warning, 可以不予理会。

1
php artisan koel:init

执行完毕后,我们可以测试一下Koel是否正确安装。我们可以使用PHP自带的临时服务器,测试一下我们是否能够正常访问Koel.  执行:

1
php artisan serve --host 0.0.0.0

然后,在浏览器中访问http://koel.qing.su:8000, 如果您的Koel正确安装,浏览器中将会出现Koel的登录界面了。

Koel电台的登录界面

测试完毕后,执行CTRL + C结束这个临时服务器。我们将使用Nginx来实现浏览器访问,而不是用这个简易的临时服务器来提供访问。

 

7, 配置Nginx虚拟主机文件

Koel安装目录中提供了默认的Nginx虚拟主机配置文件,我们仅需稍微修改即可。请注意,您当前的操作目录应该是/srv/www/koel/public_html/.

1
cp nginx.conf.example /etc/nginx/conf.d/koel.conf

编辑文件/etc/nginx/conf.d/koel.conf:

将默认的程序路径/var/www/koel设置为我们安装的路径:

1
root            /srv/www/koel/public_html;

找到server_name选项,将其值设置为您的域名:

1
server_name     koel.qing.su;

找到fastcgi_pass选项。我们将其值设置为PHP-FPM的Unix Socket文件路径:

1
fastcgi_pass              unix:/run/php/php7.4-fpm.sock;

编辑完毕后,退出该文件。然后,设置程序目录的访问权限,并重新载入Nginx配置文件,使得配置生效。

1
2
chown -R www-data:www-data .
service nginx reload

此时,在浏览器中访问http://koel.qing.su, 将可以正确打开Koel登录界面了。

 

8, 配置Let’s Encrypt安全证书

配置好Nginx虚拟主机之后,我们还可以使用Let’s Encrypt免费TLS安全证书来提高安全性。Ubuntu 20.04 LTS系统的包管理器自带了certbot及配套的Nginx-certbot安装程序,我们直接从包管理器安装即可。

1
apt-get install certbot python3-certbot-nginx

然后,让certbot自动帮我们配置证书即可。

1
certbot --nginx --redirect --staple-ocsp -d koel.qing.su

证书安装好之后,Certbot会自动帮我们重新载入Nginx配置文件。

由于更改了网站URL, 我们需要重新编译一下前端js文件。修改文件.env, 将APP_URL=http://koel.qing.su修改为https地址:

1
APP_URL=https://koel.qing.su

然后重新编译前端文件。执行:

1
php artisan koel:init

此时,访问https://koel.qing.su, 即可看到Koel登录界面与安装好的安全证书了。我们使用之前设置的管理员账户即可登录并同步音乐文件。

 

9, 使用Koel

最后,我们简要介绍一下如何使用Koel.  首先,我们需要把所有的音乐文件与目录放在服务器的一个目录里面。比如,我这里放在目录/media中。

然后,我们登录Koel, 点击左侧Settings, 再Media Path中输入我们的音乐文件存储位置,比如这里的/media.  请注意,存储在该目录的子目录中的所有音乐文件都会被包括在Koel库中。输入完毕后,点击Scan, 系统将会自动索引您的音乐文件。

设置Koel媒体文件储存路径

索引完毕后,就可以开始听歌啦。

使用Koel播放歌曲

 

至此,我们在Ubuntu 20.04 LTS服务器中安装并配置好了Koel个人音乐播放与电台程序。

如果有任何问题,您可以在这里留言,我将尽力解答。本文作者为香菇肥牛,原文链接为https://qing.su/article/personal-music-streaming-server-with-koel.html, 转载需著名原文链接。谢谢!

 

Leave a Comment