ミュージックストリーミング用のサーバーは多数公開されています。今回はその中から、「koel」を使ったサーバーの構築方法をご紹介します。最新の日本語による解説記事が少ないため、海外での事例を参考にしています。購入済みの大量にある音楽データを、わかりやすく管理できます。これで自分専用のサーバーで音楽を楽しむことができますね。

目次 [非表示]
ミュージック ストリーミング サーバー「koel」とは
「koel(コウアル)」は、オープンソースのアプリケーションとして公開されています。一般的なサーバー操作に慣れていれば、ふだんお使いのサーバーにインストールして利用することができます。公式サイト上にはデモ用のページが用意されています。
ストリーミングサーバーを探していたkoel開発者は良いものが見つけられず、結局自分で開発してしまったエピソードが公式サイトに紹介されています。もともと、mp3の楽曲データを大量に保管して困っていたようです。
そもそも「koel」とは、英語で鳥の種類を意味しています。さらにオランダ語には、クール(かっこいい)の意味があります。音楽をクールに楽しむことを意識していたのでしょうか。

今までのミュージックストリーミングサーバーとの違い
koelを動かすために「Laravel(ララベル)」が使われています。Laravelとは、PHPフレームワーク(枠組み)と呼ばれている「道具」の一つです。この道具を使えば、難しい操作も比較的簡単に実現できるようになります。
koelの最大の特徴は、この仕組みを使って進化していることです。ここが、他のミュージックストリーミングサーバーとの最大の違いではないでしょうか。
「koel」の導入方法
それでは「koel」を実際にインストールしていきましょう。前半は事前にインストールするソフトウェア(パッケージ)、後半は「koel」本体について解説しています。かなり長いですが、一つ一つはとてもシンプルです。なおこの検証は以下の環境で実施しました。
企業名 | カゴヤ・ジャパン |
---|---|
プラン名 | KAGOYA CLOUD VPS |
CPU | 2コア |
メモリー | 2GB |
ストレージ | SSD 200GB |
OSテンプレート | Ubuntu20.04(64bit) |
料金 | 日額28円/月額770円 |
事前にインストールが必要なソフトウェア(パッケージ)
多くのインストールが必要です。たとえ初めて聞くようなものでも、まずはコマンド通りに進めてみてください。必要に応じて、各機能や目的を確認すると応用可能です。
なお、Laravelはこちらの事前準備でインストールする必要はありません。以下の一連の作業を通して、Laravelが動作するように設定していきます。
一般ユーザー作成
まずは作業用の一般ユーザーを作成し、管理者権限を付与します。
1 2 | sudo adduser xxxxxxxx sudo usermod -G sudo xxxxxxxx |
xxxxxxxの部分が一般ユーザー名です。
ここからはソフトウェアのインストールや設定をしていきます。公開されている情報により、設定の順番は若干異なります。ここからは特に明記していない場合を除き、作成した一般ユーザーで作業をします。
システムの最新化
【コマンド】
1 | sudo apt-get update && sudo apt-get upgrade |
設定に必要なソフトウェアのインストール
これらを省略すると、koelが正しく動きません。ご注意ください。
【コマンド】
1 | sudo apt-get -y install curl build-essential libpng-dev |
Gitのインストール
【コマンド】
1 | sudo apt-get -y install git |
Node.jsのインストール
【コマンド】
1 2 | curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - sudo apt-get -y install nodejs |
Yarnのインストール
【コマンド】
1 2 | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -sudo apt-get -y echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt update && sudo apt install -y yarn |
PHPのインストール
【コマンド】
1 | sudo apt install -y php7.2-fpm php7.2-mbstring php7.2-bcmath php7.2-xml php7.2-mysql php7.2-curl php7.2-zip |
バージョン7.2をインストールします。バージョン5.xで動作する情報もありますが、可能な限り新しいPHPバージョンを選択しましょう。
MariaDBのインストールとkoel用データベースの作成
【コマンド】
1 | sudo apt install mariadb-server |
上記のMariaDBインストール後に初期設定を行います。
【コマンド】
1 | sudo mysql_secure_installation |
あとは画面の指示にそって進めます。続いてkoel用データベースを作成します。
【コマンド】
1 | sudo mysql -u root -p |
設定したパスワードを入力し画面が変わったら、以下の例のように入力します。
【コマンド】
1 2 3 4 | CREATE DATABASE koel; GRANT ALL ON koel.* TO 'koel' IDENTIFIED BY 'yyyyyyyy'; FLUSH PRIVILEGES; EXIT |
上記は、データベース名(koel)、ユーザー名(koel)、パスワード(yyyyyyyy’)の例です。わかりやすく安全なものに変更します。
Nginx(Webサーバー)のインストールとkoel用設定ファイルの作成
【コマンド】
1 | sudo apt install nginx |
続いてkoel用設定ファイルを作成し、必要事項を入力してから保存します。以下には多く書かれていますが、一般的な内容がほとんどで、一部(赤字の部分)を差し替えるだけで、そのまま設定ファイルになります。
【コマンド】
1 | sudo vi /etc/nginx/sites-available/koel.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | server { listen *:80; server_name koel.example.com; root /var/www/koel; index index.php; 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; # Whitelist only index.php, robots.txt, and some special routes if ($request_uri !~ ^/$|index.php|robots.txt|(public|api)/|remote|api-docs|sw.js) { return 404; } 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 unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_intercept_errors on; include fastcgi_params; } } |
上記にある「server_name koel.example.com;」の赤字の部分は、利用状況に合わせて変更します。今回の検証ではドメインではなく、IPアドレスにしています。
最後に有効化し、Nginxを再起動します。
【コマンド】
1 2 | sudo ln -s /etc/nginx/sites-available/koel.conf /etc/nginx/sites-enabled/ sudo systemctl reload nginx |
Composerのインストール
1 2 3 4 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');" sudo mv composer.phar /usr/local/bin/composer |
Koel本体のセットアップ方法

事前の準備作業に比べ、Koel本体のインストールや設定は比較的簡単です。
ファイアーウォールでポートを開ける
koelは通常「8000」のポートを使用します。閉じている場合は以下のように設定します。
【コマンド】
1 2 | # iptables -A INPUT -p tcp --dport 8000 -j ACCEPT # iptables -A INPUT -p tcp --sport 8000 -j ACCEPT |
【参考ページ】
カゴヤ・ジャパン サポートサイト「iptables の設定」
koelの保管場所の設定とその場所への移動
【コマンド】
1 2 3 | sudo mkdir -p /var/www/koel cd /var/www/koel sudo chown -R xxxxxxx: xxxxxxx /var/www/koel |
xxxxxxxの部分は、前項の冒頭で作成した一般ユーザーです。
koel本体のデータ入手
【コマンド】
1 2 3 | git clone --recurse-submodules https://github.com/phanan/koel.git . git checkout v4.3.1 composer install |
v4.3.1の部分を最新のバージョンに変更して実行します。こちらのページにアクセスして、バージョンを確認しましょう。
koel本体の稼働(初回のみ)
【コマンド】
1 2 | php artisan koel:init php artisan serve |
(注)php artisan serveについて
上記は手元のPCでkoelを利用する場合です。個人の利用でVPSなどを利用する場合は、以下のように「–host 0.0.0.0」を追加します。「0.0.0.0」の部分に、サーバーのIPアドレスを入れることができます。
【コマンド】
1 | php artisan serve --host 0.0.0.0 |
koelの保管場所の所有権の再設定
【コマンド】
1 | sudo chown -R www-data:www-data /var/www/koel |
設定ファイルの編集
【コマンド】
1 | sudo vi /var/www/koel/.env |
KoelにログインするためのID(メールアドレス)やパスワードなどを入力し保存します。これで基本設定は終了です。
koelにアクセスする
お使いのブラウザに「http://zzz.zzz.zzz.zzz:8000」と入力します。「zzz.zzz.zzz.zzz」には今回設置したサーバーのIPアドレス、「8000」はポート番号になります。すると以下のような画面が表示されたら成功です!

設定ファイル(「.env」ファイル)で編集したID(メールアドレス)やパスワードを入力しログインしましょう。
セットアップの注意点
公式サイトには必要最小限のコマンドしか記載されていないため、利用者は各種フトウェア(パッケージ)を都度インストールや設定をしなければなりません。その分作業量が増えています。筆者が検証時に気づいた点を以下まとめてみました。
SSHでの接続が切れるとkoelサイトに接続できなくなる!
「設定に必要なソフトウェアのインストール」の項目にあるように、以下のコマンドによって解消されます。
【コマンド】
1 | sudo apt-get -y install curl build-essential libpng-dev |
「Yarn」は最新バージョンでは使えない?
そんなことはありません。これまで解説した作業を、順番にすれば大丈夫です。むしろ以前のバージョンではセキュリテイや動作上の問題があり、おすすめできません。
koelサーバーの公開は慎重に!
koelやWebサーバーの設定により、インターネット上に公開は可能になります。ストリーミングとはいえ、音楽データの公開には関連する法規を守り、著作者の権利を守ることが重要と考えます。
まとめ
ここまでいかがでしたか。koelでミュージックストリーミングサーバーを立てる手順をご紹介しました。
検証用として、すぐに利用開始できるカゴヤ・ジャパンのKAGOYA CLOUD VPSがおすすめです。ぜひ活用して簡単に、早くそしてクールに楽しみましょう。
開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS
カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。
