ミュージックストリーミング用のサーバーは多数公開されています。今回はその中から、「koel」を使ったサーバーの構築方法をご紹介します。最新の日本語による解説記事が少ないため、海外での事例を参考にしています。購入済みの大量にある音楽データを、わかりやすく管理できます。これで自分専用のサーバーで音楽を楽しむことができますね。
目次
ミュージック ストリーミング サーバー「koel」とは
「koel(コウアル)」は、オープンソースのアプリケーションとして公開されています。一般的なサーバー操作に慣れていれば、ふだんお使いのサーバーにインストールして利用することができます。公式サイト上にはデモ用のページが用意されています。
ストリーミングサーバーを探していたkoel開発者は良いものが見つけられず、結局自分で開発してしまったエピソードが公式サイトに紹介されています。もともと、mp3の楽曲データを大量に保管して困っていたようです。
そもそも「koel」とは、英語で鳥の種類を意味しています。さらにオランダ語には、クール(かっこいい)の意味があります。音楽をクールに楽しむことを意識していたのでしょうか。
今までのミュージックストリーミングサーバーとの違い
koelを動かすために「Laravel(ララベル)」が使われています。Laravelとは、PHPフレームワーク(枠組み)と呼ばれている「道具」の一つです。この道具を使えば、難しい操作も比較的簡単に実現できるようになります。
koelの最大の特徴は、この仕組みを使って進化していることです。ここが、他のミュージックストリーミングサーバーとの最大の違いではないでしょうか。
「koel」の導入方法
それでは「koel」を実際にインストールしていきましょう。前半は事前にインストールするソフトウェア(パッケージ)、後半は「koel」本体について解説しています。かなり長いですが、一つ一つはとてもシンプルです。なおこの検証は以下の環境で実施しました。
企業名 | カゴヤ・ジャパン |
---|---|
プラン名 | KAGOYA CLOUD VPS |
CPU | 2コア |
メモリー | 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がおすすめです。ぜひ活用して簡単に、早くそしてクールに楽しみましょう。
開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS
カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。