静看光阴荏苒
不管不顾不问不说也不念

Docker快速部署Koel

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页面上传的音乐编号为啥一堆重复的?

还有没有编号的,这个鞠婧祎排面这么大的嘛,把程序都美炸了???

赞(5)
未经允许不得转载:荒岛 » Docker快速部署Koel
分享到: 更多 (0)

评论 5

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    謝謝大佬,這是我迫切需要的,上次大佬介紹的phpsound有點不完善,創建歌單太麻煩而且還要倒入圖片資料,真心感謝! :mrgreen:

    Foliage4年前 (2020-12-20) Google Chrome 87.0.4280.101 Google Chrome 87.0.4280.101 Android 8.1.0 Android 8.1.0回复
  2. #2

    已搭建完成,愉快使用中。 :idea:

    Foliage4年前 (2020-12-20) Chrome 87.0.4280.77 Chrome 87.0.4280.77 iPhone iOS 14.3 iPhone iOS 14.3回复
  3. #3

    flac格式的播放不了,是还需要安装啥插件吗

    guzhichi4年前 (2021-01-24) Google Chrome 87.0.4280.141 Google Chrome 87.0.4280.141 Android 9 Android 9回复
    • 默认应该就支持的,容器里面装了ffmpeg会把flac格式的文件进行转换,你切到容器里面看看ffmpeg的路径,然后自己加个环境变量看看能不能解决?

      LALA4年前 (2021-01-24) Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿