Koel是一个开源的基于Web的音频流服务,我们可以用它来自建自己的音乐服务器。
用来搭建的机器内存最好有1GB,512M可能会出现幺蛾子问题。
部署我这里就直接用docker梭哈了,首先安装nginx/certbot/docker和一些需要用到的软件:
apt -y install curl nginx python-certbot-nginx curl -sSL https://get.docker.com/ | sh systemctl enable --now nginx docker
安装docker-compose:
curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
新建一个目录进入到这个目录内:
mkdir -p /opt/koel && cd /opt/koel
新建一个docker-compose.yml:
nano docker-compose.yml
写入如下配置:
version: '3.5' services: koel: image: hyzual/koel depends_on: - koel-database ports: - "127.0.0.1:5000:80" environment: FORCE_HTTPS: 1 MEMORY_LIMIT: 512 DB_CONNECTION: mysql DB_HOST: koel-database DB_USERNAME: koel DB_PASSWORD: password DB_DATABASE: koel volumes: - koel_music:/music - koel_covers:/var/www/html/public/img/covers restart: unless-stopped koel-database: image: mysql/mysql-server:5.7 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: koel MYSQL_USER: koel MYSQL_PASSWORD: password volumes: - koel_db:/var/lib/mysql restart: unless-stopped volumes: koel_db: driver: local koel_music: driver: local koel_covers: driver: local
注:所有password字段改为一个高强度的密码。此外,如果暴露的5000端口已经被占用了,你可以任意改一个别的端口。
up起来即可:
docker-compose up -d
确认所有容器都是up状态:
docker-compose ps
之后执行下面的命令创建管理员账号:
docker-compose exec koel php artisan koel:init
流程如下:
Your name [Koel Admin]: > 设置你的用户名 Your email address [admin@koel.com]: > 设置你的邮箱 Your desired password: > 设置你的管理员密码 Again, just to be sure: > 设置你的管理员密码 Media path [/music]: > 直接回车
这步执行到最后不出意外会报错:
Oops! Koel installation or upgrade didn't finish successfully.
原因是前端资源已经在容器内构建好了,这里就不用再构建了,所以会报错。错误可以直接忽略。
这个容器镜像的维护者提到过此问题,我只是翻译一下:
https://hub.docker.com/r/hyzual/koel/
接下来新建nginx配置文件用于反向代理:
nano /etc/nginx/conf.d/koel.conf
写入如下配置:
server { listen 80; server_name koel.imlala.best; # 换成你的域名 client_max_body_size 0; location / { proxy_pass http://127.0.0.1:5000; 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 X-Forwarded-Proto $scheme; } }
最后使用certbot签一个ssl证书:
certbot --nginx
访问你的域名,应该能看到登录界面,尝试登录:
如果登录不进去,再把下面这个命令执行一次,让它重新生成一个JWT_SECRET:
docker-compose exec koel php artisan koel:init
实际上后续你更新了容器或者删除了容器后,重新启一个新的容器时都要把这个命令执行一次。
登录进去后,你可以在Web界面上传音乐:
也可以直接把音乐存到如下目录:
/var/lib/docker/volumes/koel_koel_music/_data
通过Web页面上传的音乐可以直接播放,自己存到目录内的音乐需要先扫描才能播放。
总体来说这程序还不错,基本功能都有,但有点迷的是通过Web页面上传的音乐编号为啥一堆重复的?
还有没有编号的,这个鞠婧祎排面这么大的嘛,把程序都美炸了???
謝謝大佬,這是我迫切需要的,上次大佬介紹的phpsound有點不完善,創建歌單太麻煩而且還要倒入圖片資料,真心感謝!
已搭建完成,愉快使用中。
flac格式的播放不了,是还需要安装啥插件吗
默认应该就支持的,容器里面装了ffmpeg会把flac格式的文件进行转换,你切到容器里面看看ffmpeg的路径,然后自己加个环境变量看看能不能解决?