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

1,964次阅读
没有评论

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在Ubuntu 20.04 LTS系统中搭建私人音乐电台

安装完毕后,执行下面的命令卸载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

如下图:

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

修改完毕后,可以不用着急重新载入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

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

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

 

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在Ubuntu 20.04 LTS系统中搭建私人音乐电台

修改完毕后,保存退出。

最后,我们初始化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在Ubuntu 20.04 LTS系统中搭建私人音乐电台

测试完毕后,执行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在Ubuntu 20.04 LTS系统中搭建私人音乐电台

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

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

 

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

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

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2023 年 3 月
 12345
6789101112
13141516171819
20212223242526
2728293031  
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026 Jay 2025-12-22 09...
面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25 鹭羽 2025-12-13 22:37...
钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议 梦晨 2025-12-11 15:33:51 来源:量子位 A...
商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1 十三 2025-12-15 14:13:14 ...
跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026 一水 2025-1...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
预见未来:96位前沿先锋超万字核心观点总结,抢抓未来产业新高地

预见未来:96位前沿先锋超万字核心观点总结,抢抓未来产业新高地

预见未来:96位前沿先锋超万字核心观点总结,抢抓未来产业新高地 henry 2025-12-11 10:27:...
Meta公开抄阿里Qwen作业,还闭源了…

Meta公开抄阿里Qwen作业,还闭源了…

Meta公开抄阿里Qwen作业,还闭源了… Jay 2025-12-11 11:48:25 来源:量子位 Ja...
MEET2026挤爆了,AI圈今年最该听的20+场演讲&对谈都在这

MEET2026挤爆了,AI圈今年最该听的20+场演讲&对谈都在这

MEET2026挤爆了,AI圈今年最该听的20+场演讲&对谈都在这 西风 2025-12-11 15:...
钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议

钉钉又发新版本!把 AI 搬进每一次对话和会议 梦晨 2025-12-11 15:33:51 来源:量子位 A...