前言 一直想搭建个人音乐电台,国内音乐版权太分散,许多版权是独家的。听歌得往各个平台找,而且有些专辑、演唱会平台也没有,还是自己抓轨下来听。之前使用oneindex修改简单播放列表,缺点很明显,使用OneDrive很容易抽风。买了一台GreenCloud作为存储,直接挂载在韩国甲骨文,数据放在GreenCloud上也不怕甲骨文翻车数据丢失。
一、安装 前面使用源码安装,有坑以为没安装成功,导致重装系统,重新安装搭建浪费不少时间,后面改用docker还是复现前面的问题,才发现原来可以使用。我的服务器还要搭建其他的网站,所以使用oneinstack安装(Nginx+MySQL+PHP)。
oneinstack选择自动安装
wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --php_option 8 --phpcache_option 1 --php_extensions ioncube,fileinfo,phalcon,yaf,memcached,swoole --db_option 2 --dbinstallmethod 1 --dbrootpwd oneinstack --pureftpd --iptables --reboot
安装之后先创建数据库和允许ip访问的用户。
mysql -u root -p CREATE DATABASE koel; GRANT ALL ON koel.* TO 'koel'@'%' IDENTIFIED BY 'SZa3xDhj62HskCy' WITH GRANT OPTION; quit;
安装docker
curl -sSL https://get.docker.com/ | sh [root@fungit ~]# docker --version Docker version 19.03.13, build 4484c46d9d systemctl enable docker #开机自启 systemctl start docker #启动docker
创建目录
mkdir -p /data/wwwroot/koel /data/wwwroot/koel/covers /data/wwwroot/koel/music
使用hyzual/koel 的镜像,可以使用docker-compose.yml 方法安装,我用的是docker run 安装
docker-compose.yml参考 version: '3.7' services: koel: image: hyzual/koel depends_on: - database ports: - 80 :80 environment: DB_CONNECTION: mysql DB_HOST: database DB_USERNAME: koel DB_PASSWORD: <koel_password> DB_DATABASE: koel volumes: - music:/music - covers:/var/www/html/public/img/covers database: image: mysql/mysql-server:5.7 volumes: - db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: <root_password> MYSQL_DATABASE: koel MYSQL_USER: koel MYSQL_PASSWORD: <koel_password> volumes: db: driver: local music: driver: local covers: driver: local
docker run安装: dokcer pull最新版本
复制一份.env到/data/wwwroot/koel,并填上MySQL数据
APP_NAME=Koel DB_CONNECTION=mysql DB_HOST=<ip> DB_PORT=3306 DB_DATABASE=koel DB_USERNAME=koel DB_PASSWORD=SZa3xDhj62HskCy APP_KEY= JWT_SECRET= ADMIN_NAME="Koel Admin" ADMIN_EMAIL=koel@fungit.org ADMIN_PASSWORD=1234566 LASTFM_API_SECRET= LASTFM_API_KEY= APP_MAX_SCAN_TIME=600 MEMORY_LIMIT= FORCE_HTTPS=
运行koel
docker run -d --name koel \ -p 8080:80 \ --mount type=bind,source=/data/wwwroot/koel/.env,target=/var/www/html/.env \ -v /data/wwwroot/koel/music/music:/music \ -v /data/wwwroot/koel/music/covers:/var/www/html/public/img/covers \ hyzual/koel
此时使用ip:8080应该是能够访问,但是还不能登录
执行 docker exec -it koel bash 再执行 php artisan koel:init
看到类似的结果,再次访问ip:8080发现可以登录
注:这里有个坑,我看到最后红色提示那里还以为失败,而且还没有提示错在哪里,搜索发现GitHub上有人发issue。但实际是可以使用。
Oops! Koel installation or upgrade didn't finish successfully. Please try again, or visit https://docs.koel.dev for manual installation. 😥 Sorry for this. You deserve better.
Nginx反代配置域名 新建网站
cd ~/oneinstack ./vhost.sh
按提示操作就行了,目录选择/data/wwwroot/koel。注意如果你选择http跳转到https,那么.env里面FORCE_HTTPS=true。
nginx反代部分配置
location / { proxy_pass http://0.0.0.0:8080; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header REMOTE-HOST $remote_addr ; add_header X-Cache $upstream_cache_status ; expires 12h ; } location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$ { proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header REMOTE-HOST $remote_addr ; proxy_pass http://0.0.0.0:8080; } location ~ .*\.(html|htm|png|gif|jpeg|jpg|bmp|js|css)?$ { proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header REMOTE-HOST $remote_addr ; proxy_pass http://0.0.0.0:8080; expires 24h ; }
注:可能的出错”Provisional headers are shown”,具体谷歌搜索一下啦,前面docker run我是用的是8080端口,网站默认使用80 443,网站改为8080也是可以正常访问domain:8080。如果配置了ssl,可以把.env里面FORCE_HTTPS=true设置为true,就不会出现这样问题。
最后.env配置
APP_NAME=Koel DB_CONNECTION=mysql DB_HOST=<ip> DB_PORT=3306 DB_DATABASE=koel DB_USERNAME=koel DB_PASSWORD=SZa3xDhj62HskCy APP_KEY=base64:ok+aFUyfuuj7F8PFqntiuOPvgszgh10KFc5LVgaAzB0= JWT_SECRET=fopNCMeo6Pvg9SaPktThDj1xutr7Yt2L APP_URL=http://localhost ADMIN_NAME="Fungit" ADMIN_EMAIL=koel@fungit.org ADMIN_PASSWORD=1234566 APP_MAX_SCAN_TIME=600 MEMORY_LIMIT= FORCE_HTTPS=true
二、使用 访问https://koel.fungit.org/ 看到登录页面,账号密码是php artisan koel:init 初始化时输入的邮箱和密码。忘记可以php artisan koel:admin:chang-passwd 修改密码.
登录进去看到黑色主题界面,前端设置功能真的很少,只有一个Media Path设置,页面主题色也没有,看了文档好像没看到可以更改主题的地方。添加用户是没有管理权限,可以分享给朋友使用。
后续维护,需要更改.env配置
docker exec -it koel bash php artisan koel:init
更新音乐
docker exec koel php artisan koel:sync
即将更新使用last.fm记录 相关链接: