お問い合わせはこちら

koelを使って自分専用ミュージックストリーミングサーバーを作ってみた

公開
更新

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

ミュージック ストリーミング サーバー「koel」とは

「koel(コウアル)」は、オープンソースのアプリケーションとして公開されています。一般的なサーバー操作に慣れていれば、ふだんお使いのサーバーにインストールして利用することができます。公式サイト上にはデモ用のページが用意されています。

ストリーミングサーバーを探していたkoel開発者は良いものが見つけられず、結局自分で開発してしまったエピソードが公式サイトに紹介されています。もともと、mp3の楽曲データを大量に保管して困っていたようです。

そもそも「koel」とは、英語で鳥の種類を意味しています。さらにオランダ語には、クール(かっこいい)の意味があります。音楽をクールに楽しむことを意識していたのでしょうか。

今までのミュージックストリーミングサーバーとの違い

koelを動かすために「Laravel(ララベル)」が使われています。Laravelとは、PHPフレームワーク(枠組み)と呼ばれている「道具」の一つです。この道具を使えば、難しい操作も比較的簡単に実現できるようになります。
koelの最大の特徴は、この仕組みを使って進化していることです。ここが、他のミュージックストリーミングサーバーとの最大の違いではないでしょうか。

「koel」の導入方法

それでは「koel」を実際にインストールしていきましょう。前半は事前にインストールするソフトウェア(パッケージ)、後半は「koel」本体について解説しています。かなり長いですが、一つ一つはとてもシンプルです。なおこの検証は以下の環境で実施しました。

企業名カゴヤ・ジャパン
プラン名KAGOYA CLOUD VPS
CPU2コア
メモリー2GB
ストレージSSD 25GB
OSテンプレートUbuntu16.04(64bit)
料金日額24円/月額660円(税込価格)

事前にインストールが必要なソフトウェア(パッケージ)

多くのインストールが必要です。たとえ初めて聞くようなものでも、まずはコマンド通りに進めてみてください。必要に応じて、各機能や目的を確認すると応用可能です。

なお、Laravelはこちらの事前準備でインストールする必要はありません。以下の一連の作業を通して、Laravelが動作するように設定していきます。

一般ユーザー作成

まずは作業用の一般ユーザーを作成し、管理者権限を付与します。

sudo adduser xxxxxxxx
sudo usermod -G sudo xxxxxxxx

xxxxxxxの部分が一般ユーザー名です。

ここからはソフトウェアのインストールや設定をしていきます。公開されている情報により、設定の順番は若干異なります。ここからは特に明記していない場合を除き、作成した一般ユーザーで作業をします。

システムの最新化

【コマンド】

sudo apt-get update && sudo apt-get upgrade

設定に必要なソフトウェアのインストール

これらを省略すると、koelが正しく動きません。ご注意ください。

【コマンド】

sudo apt-get -y install curl build-essential libpng-dev

Gitのインストール

【コマンド】

sudo apt-get -y install git

Node.jsのインストール

【コマンド】

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get -y install nodejs

Yarnのインストール

【コマンド】

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のインストール

【コマンド】

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用データベースの作成

【コマンド】

sudo apt install mariadb-server

上記のMariaDBインストール後に初期設定を行います。

【コマンド】

sudo mysql_secure_installation

あとは画面の指示にそって進めます。続いてkoel用データベースを作成します。

【コマンド】

sudo mysql -u root -p

設定したパスワードを入力し画面が変わったら、以下の例のように入力します。

【コマンド】

CREATE DATABASE koel;
GRANT ALL ON koel.* TO 'koel' IDENTIFIED BY 'yyyyyyyy';
FLUSH PRIVILEGES;
EXIT

上記は、データベース名(koel)、ユーザー名(koel)、パスワード(yyyyyyyy’)の例です。わかりやすく安全なものに変更します。

Nginx(Webサーバー)のインストールとkoel用設定ファイルの作成

【コマンド】

sudo apt install nginx

続いてkoel用設定ファイルを作成し、必要事項を入力してから保存します。以下には多く書かれていますが、一般的な内容がほとんどで、一部(赤字の部分)を差し替えるだけで、そのまま設定ファイルになります。

【コマンド】

sudo vi /etc/nginx/sites-available/koel.conf
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を再起動します。

【コマンド】

sudo ln -s /etc/nginx/sites-available/koel.conf /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Composerのインストール

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」のポートを使用します。閉じている場合は以下のように設定します。

【コマンド】

# iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
# iptables -A INPUT -p tcp --sport 8000 -j ACCEPT

【参考ページ】
カゴヤ・ジャパン サポートサイト「iptables の設定

koelの保管場所の設定とその場所への移動

【コマンド】

sudo mkdir -p /var/www/koel
cd /var/www/koel
sudo chown -R xxxxxxx: xxxxxxx /var/www/koel

xxxxxxxの部分は、前項の冒頭で作成した一般ユーザーです。

koel本体のデータ入手

【コマンド】

git clone --recurse-submodules https://github.com/phanan/koel.git .
git checkout v4.3.1
composer install

v4.3.1の部分を最新のバージョンに変更して実行します。こちらのページにアクセスして、バージョンを確認しましょう。

koel本体の稼働(初回のみ)

【コマンド】

php artisan koel:init
php artisan serve

(注)php artisan serveについて
上記は手元のPCでkoelを利用する場合です。個人の利用でVPSなどを利用する場合は、以下のように「–host 0.0.0.0」を追加します。「0.0.0.0」の部分に、サーバーのIPアドレスを入れることができます。

【コマンド】

php artisan serve --host 0.0.0.0

koelの保管場所の所有権の再設定

【コマンド】

sudo chown -R www-data:www-data /var/www/koel

設定ファイルの編集

【コマンド】

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サイトに接続できなくなる!

「設定に必要なソフトウェアのインストール」の項目にあるように、以下のコマンドによって解消されます。

【コマンド】

sudo apt-get -y install curl build-essential libpng-dev

「Yarn」は最新バージョンでは使えない?

そんなことはありません。これまで解説した作業を、順番にすれば大丈夫です。むしろ以前のバージョンではセキュリテイや動作上の問題があり、おすすめできません。

koelサーバーの公開は慎重に!

koelやWebサーバーの設定により、インターネット上に公開は可能になります。ストリーミングとはいえ、音楽データの公開には関連する法規を守り、著作者の権利を守ることが重要と考えます。

まとめ

ここまでいかがでしたか。koelでミュージックストリーミングサーバーを立てる手順をご紹介しました。

検証用として、すぐに利用開始できるカゴヤ・ジャパンのKAGOYA CLOUD VPSがおすすめです。ぜひ活用して簡単に、早くそしてクールに楽しみましょう。

日額 20円 で使えるVPS

開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS

カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。

※ 2021年8月24日全面リニューアルに伴い、価格据え置きでスペックアップされています。