VPS搭建 Koel 个人音频流媒体详细教程及使用指南

Koel 是什么?

Koel(也称为koel,带有小写的 k)是一种基于 Web 的个人音频流媒体服务应用,在客户端使用Vue编写,在服务端采用Laravel 编写。对于Web方面的发展,Koel 采用了一些更现代的网络技术–弹性框、音频和拖放API等等——来完成其工作。开源地址:github.com/koel/koel,截至2021.9.8,在Github上已获得12,809个赞!

Koel 可能是未来最好的开源音频流媒体服务应用,可与苹果设备Mac,平板,手机等兼容,并且在Play Store和App Store里有官方应用,可连接到你的私人Koel 服务器使用。官方的安装和使用文档:koel.dev

VPS上安装 Koel 个人音频流服务详细教程及使用指南

创作 Koel 的故事

我的笔记本电脑没有磁盘空间了–谢谢你,Parallels。我的手机只有16GB的存储空间。而我还有40GB的MP3存储在我的外部硬盘上。所以我开始寻找一个开源的,或者至少是免费的,我可以使用的音乐流媒体应用程序。我找到了几个。哎,没有一个是符合我口味的。失望中,我问自己这个问题:”咳,为什么不直接创作一个呢?” 于是koel就诞生了。

为什么叫 Koel?

这是一只鸟的名字,它在我回到新加坡的家附近不停地唱歌。他看起来像这样:

Koel%20 %20Logo

服务器要求

实测可在ARM架构的Debian服务器上安装使用,当然X86架构的VPS也能顺利玩耍。

  • 服务端需满足Laravel所要求的 – PHP,OpenSSL,composer等
  • 数据库MySQL, MariaDB, PostgresSQL, 或SQLite。实际上, 任何Laravel支持的DBMS都应该可以使用
  • 如果你要从源码构建Koel, 确保使用Git和NodeJS最新的稳定版本和yarn

安装流程

从v5.0.0版本开始,Koel 支持从预编译的存档中安装,这样我们就不需要手动编译前端资源了。直接使用LNMP一键安装包,搭建好Nginx,PHP,MariaDB环境。以下使用的是Debian系统的命令。你也可以使用Ubuntu、CentOS等系统安装Koel。你可以先做好DNS域名IP解析。下面以music.eluyee.com域名为例,开始安装。

搭建LNMP环境+创建数据库

SSH连接远程服务器,执行命令

sudo -i
sudo apt-get update && apt-get upgrade
apt-get install screen && apt-get install wget
screen -S lnmp
wget https://soft.lnmp.com/lnmp/lnmp2.0.tar.gz -O lnmp2.0.tar.gz && tar zxf lnmp2.0.tar.gz && cd lnmp2.0 && ./install.sh lnmp
./addons.sh install opcache  # 安装完lnmp后开启OpCache
exit # 安装完毕后退出screen
cd /home/wwwroot
wget https://github.com/koel/koel/releases/download/v6.11.2/koel-v6.11.2.zip && unzip koel-v6.11.2.zip
lnmp vhost add
music.eluyee.com  # 以下省略一些
/home/wwwroot/koel
koeldatabase  # 创建数据库和同名用户
koelpasswd    # 输入数据库密码
VPS上安装Koel 个人音频流媒体-安装LNMP环境创建数据库

移除防跨目录设置

cd /root/lnmp2.0/tools
./remove_open_basedir_restriction.sh
/home/wwwroot/music.eluyee.com

开启proc_open和proc_get_status

vi /usr/local/php/etc/php.ini  # Shift+? 找到proc_open和proc_get_status,删除
lnmp restart
VPS上安装Koel 个人音频流媒体-开启proc_open和proc_get_status
mkdir storage/framework/cache/data  # 创建data文件夹,这步很重要,随着版本更新也许不用执行此命令。
chmod -R 755 /home/wwwroot/koel
chown www:www -R /home/wwwroot/koel

如果现在执行composer install,会报错:Install or enable PHP’s exif extension,所以

安装exif模块

cd /root/lnmp2.0/src
ls
tar -xjvf php-8.2.6.tar.bz2  # 解压php源码
cd php-8.2.6/ext/exif/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
vi /usr/local/php/etc/php.ini

Shift+?,查找;extension = ,在最后一个;extension= 的下一行添加

extension = "exif.so"

查找memory_limit, 修改为

memory_limit = 512M

Esc,:wq,回车保存退出

VPS上安装Koel 个人音频流媒体-安装exif模块

继续安装,修改环境配置

lnmp restart
cd /home/wwwroot/koel
composer install
# 出现提示Your lock file does not contain a compatible set of packages. Please run composer update. 则执行
composer update
composer install

#        以下为安装信息          #
PHP CodeSniffer Config installed_paths set to ../../../,../../slevomat/coding-standard
> @php artisan clear-compiled
Compiled services and packages files removed!
> @php artisan cache:clear
Application cache cleared!
> @php -r "if (!file_exists('.env')) copy('.env.example', '.env');"
#                              #

Koel支持三种流媒体方法,可以通过修改 .env 文件中的STREAMING_METHOD进行配置。默认使用原生 PHP readfile()。这是默认方法,也是最慢和最不稳定的方法。仅当你不能使用其他方法时才使用此方法

vi .env  # 修改连接数据库等信息

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=koeldatabase  # 数据库
DB_USERNAME=koeldatabase
DB_PASSWORD=koelpasswd

APP_URL=http://music.eluyee.com  # Koel登录地址

STREAMING_METHOD=x-accel-redirect  # 传输模式:修改为使用Nginx的X-Accel模块

修改以上信息,保存退出,继续安装。

php artisan koel:init --no-assets

Media path []:
 >
# 音频文件地址,回车即可,后边修改

#        以下为安装信息          #
Koel can now be run from localhost with `php artisan serve`.
Log in with email admin@koel.dev and password KoelIsCool
Again, visit 📙 https://docs.koel.dev for more tips and tweaks.
Feeling generous and want to support Koel's development? Check out https://github.com/users/phanan/sponsorship 🤗
Thanks for using Koel. You rock! 🤘

php artisan serve --host 0.0.0.0
#                              #

打开http://music.eluyee.com:8000/

使用默认账号登录:admin@koel.dev KoelIsCool

点击左下边User,Update Profile,更新为你想要的管理员账号密码

回到SSH终端,Ctrl+C结束临时这个服务器,修改根目录等以下信息

vi /usr/local/nginx/conf/vhost/music.eluyee.com.conf

修改root /home/wwwroot/koel; 为 root /home/wwwroot/koel/public;

删除17~34行,命令→Esc :17,34d,回车,并添加以下代码

  gzip            on;
  gzip_types      text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json;
  gzip_comp_level  9;

  location /media/ {
    internal;

    alias       $upstream_http_x_media_root;

    #access_log /var/log/nginx/koel.access.log;
    #error_log  /var/log/nginx/koel.error.log;
  }


  location / {
    try_files   $uri $uri/ /index.php?$args;
  }


  location ~ \.php$ {
    try_files $uri $uri/ /index.php?$args;

    fastcgi_param     PATH_INFO $fastcgi_path_info;
    fastcgi_param     PATH_TRANSLATED $document_root$fastcgi_path_info;
    fastcgi_param     SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_pass              127.0.0.1:9000;
    fastcgi_index             index.php;
    fastcgi_split_path_info   ^(.+\.php)(/.+)$;
    fastcgi_intercept_errors  on;
    include                   fastcgi_params;
  }
}

保存后重启lnmp,创建media目录,

mkdir media  

可以打开网站尝试登录了,若无法登录执行以下两行代码

chmod -R 755 /home/wwwroot/koel
chown www:www -R /home/wwwroot/koel 

登录之后修改Settings,Media Path为 /home/wwwroot/koel/media

添加SSL

lnmp ssl add
music.eluyee.com  # 以下部分省略...

/home/wwwroot/koel/public  # 根目录

vi /usr/local/nginx/conf/vhost/music.eluyee.com.conf

修改music.eluyee.com.conf,将443端口配置 include enable-php.conf; 以下的代码行全部删除,并添加以下代码

  gzip            on;
  gzip_types      text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json;
  gzip_comp_level  9;

  location /media/ {
    internal;

    alias       $upstream_http_x_media_root;

    #access_log /var/log/nginx/koel.access.log;
    #error_log  /var/log/nginx/koel.error.log;
  }


  location / {
    try_files   $uri $uri/ /index.php?$args;
  }


  location ~ \.php$ {
    try_files $uri $uri/ /index.php?$args;

    fastcgi_param     PATH_INFO $fastcgi_path_info;
    fastcgi_param     PATH_TRANSLATED $document_root$fastcgi_path_info;
    fastcgi_param     SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_pass              127.0.0.1:9000;
    fastcgi_index             index.php;
    fastcgi_split_path_info   ^(.+\.php)(/.+)$;
    fastcgi_intercept_errors  on;
    include                   fastcgi_params;
  }
}

保存重启lnmp,就可以登录啦!可以本地电脑上传歌曲,从网上下载喜欢的歌曲到服务器上,在这个私人音乐网盘、个人音乐电台愉快听歌

VPS上安装Koel 个人音频流媒体-使用Koel教程

使用指南

你可使用这个命令修改管理员密码:php artisan koel:admin:change-password

Nginx的配置其实跟官方的几乎一样,参考官方:nginx.conf.example

上传或下载音频文件到Media目录,点击左边的Settings,Scan扫描歌曲就能看到新的歌曲了。你也可以设置自动扫描。

你还可以上传歌词!你可以通过拖放图像到艺术家/专辑卡中的当前图像来改变艺术家和专辑图像

当前的Koel 可识别这些音频扩展:.mp3,.ogg,.m4a(实验)和 .flac(有一些限制试验),其他的可能会在未来添加。

网页界面使用

使用 Koel 的客户端组件应该很简单。如果你曾经使用过 Spotify,你应该会感到这是如此熟悉配方?事实上,Koel 的客户端界面是对 Spotify 的无耻抄袭。你可以搜索,可以排序,可以按艺术家或专辑查看,可以创建播放列表,可以喜欢/不喜欢歌曲,还可以创建其他用户来分享音乐。书呆子也有几个快捷键呀:

  • F:移动到搜索框
  • Enter:播放一首歌曲。如果有多首歌曲被选中,Enter将它们添加到播放队列的底部,Shift+Enter将它们排到顶部。在组合中加入Cmd或Ctrl,可以立即播放第一首被选中的歌曲。
  • Space:切换播放/停止
  • J:播放队列中的下一首歌曲
  • K:播放队列中的上一首歌曲
  • Ctrl/Cmd+A:选择当前视图中的所有歌曲
  • Delete:从当前队列/播放列表中删除所选歌曲

Koel 有一个(移动)遥控器,可让你在移动设备等其他设备控制桌面电脑——播放/暂停、导航、调高/调低音量以及从收藏夹中添加/删除。不过你需要创建一个Pusher账号,将凭据添加到 .env配置里。

如何升级 Koel ?

其实就是下载新的包到 /home/wwwroot 目录,解压缩后再执行一遍编译安装就好了!另外,如果你添加了SSL,记得将环境配置文件 .env 中APP_URL的http改为https后再执行安装。以从Koel v5.1.5 升级到 v5.1.8为例。

cd /home/wwwroot
wget https://github.com/koel/koel/releases/download/v5.1.8/koel-v5.1.8.zip && unzip koel-v5.1.8.zip  # 解压缩并替换全部文件
cd /home/wwwroot/koel
composer install
php artisan koel:init --no-assets

lnmp restart  # 完成后重启lnmp即可

我遇到的问题

2023.12.1更新:Flac音乐文件始终无法播放,不好用哎,放弃了。

一开始安装好之后,如果上传的音乐文件的名称带有中文,那么会无法播放。无法播放!!!用Chrome开发者工具查看,好像是转码的问题,500代码~ 这个问题困扰了我好久!!!其中试了N+N+N种方法..哎。我是后面突发奇想,将文件名换成英文名,成功播放才知道….

然鹅!!其实上传中文名歌曲是可以正常播放的,可能之前Nginx配置有点错误,后面改好了问题解决了。

还有,播放音乐没有缓存,有没有朋友教我怎么设置缓存,有的话感谢!

1人评论了“VPS搭建 Koel 个人音频流媒体详细教程及使用指南”

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部