Ampacheが結構便利なのでインストール方法と必要そうな設定と機能の有効化方法をざっくりメモしておく。
スマホなどでのインターネット越しのアクセスも便利なので、セキュリティも考えてHTTPSでのアクセスをできるようにする。
まえおき
確認環境としてVultrのVPSを使用しました。
ソフトウェアはPHP7.0+MySQL5.7+ffmpeg2.8です。
無料で用意できるよう、HTTPSの証明書はLet’s Encryptで取得し、そのためのドメインはNo-IPで取得しています。
インストール方法は以下のgithub上のwikiを参考にしています。
https://github.com/ampache/ampache/wiki/Installation
ffmpegはエンコード形式やビットレートを変換するために必要なだけなので、利用方法がMP3しかデータを置かない等であれば無くても問題ないと思います。
なので工夫すればPHPとMySQLのあるレンタルサーバでも動かせそう。(未確認)
ドメインの取得と準備
No-IP以外のDDNSサービスを利用する場合
ここでは例としてDDNSサービスのNo-IPの場合を書きますが、他のDDNSサービスを使用する場合にはLet’s Encryptの制限に影響されないかPublic Suffix Listへの記載有無を確認する必要があります。
参考 : DDNS and let’s encrypt
自前のドメインを使用する場合は気にしなくてもいいです。
準備
No-IPでアカウントとドメインの取得を行ってください。
その後、サーバのグローバルIPアドレスが固定の場合はNo-IPのWebサイト上の設定でIPアドレスを設定し、変動する場合は以下のCRONを設定します。
*/30 * * * * curl -s "https://(ユーザ):(パスワード)@dynupdate.no-ip.com/nic/update?hostname=(ドメイン)" > /dev/null
No-IPの無料プランの場合、30日毎にドメイン使用の確認ページをクリックしないと無効になるようなのでご注意ください。
インストール
必要パッケージのインストール
sudo apt install apache2 \
mysql-server \
mysql-client \
php \
libapache2-mod-php \
php-mysql \
php-mbstring \
php-gettext \
php-curl \
php-gd \
composer \
ffmpeg \
git
Ampacheのダウンロードと準備
ディレクトリを作成してAmpacheをダウンロード。
例では最新の開発版を指定します。
sudo mkdir -p /var/www/ampache/
cd /var/www/ampache/
sudo git clone https://github.com/ampache/ampache.git html
sudo chown -R www-data:www-data /var/www/ampache
cd html
composerでライブラリを展開
sudo composer install --prefer-source --no-interaction
Apacheの設定
必要となるモジュールの有効化
sudo a2enmod headers
sudo a2enmod ssl
バーチャルホストの設定
sudo vi /etc/apache2/sites-available/(ドメイン名).conf
======
<VirtualHost *:80>
ServerName (ドメイン名)
DocumentRoot /var/www/ampache/html
ErrorLog /var/log/apache2/(ドメイン名).error.log
CustomLog /var/log/apache2/(ドメイン名).access.log combined
LogLevel warn
<Directory /var/www/ampache/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
======
sudo a2ensite (ドメイン名)
PHPの設定
「upload_max_filesize」と「post_max_size」はAmpacheのWebUIから音楽ファイルをアップロードする際のサイズ制限に影響します。
「max_execution_time」は音楽ファイルの登録処理がタイムアウトしないよう、ファイルの量によって調整するといいです。
sudo vi /etc/php/7.0/apache2/php.ini
======
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300;
======
Apacheを再起動
sudo systemctl restart apache2.service
Let’s Encryptからの証明書取得
この記事の編集時点ではaptで取得できるクライアントのバージョンが古く、TLS-SNI-01 challengeが使用できない問題があるため、最新版を取得します。
cd /usr/local/bin
sudo wget https://dl.eff.org/certbot-auto
sudo chmod a+x certbot-auto
certbot-autoを実行し、画面の指示に従い対象とするドメインを選択して証明書の発行手続きと設定をします。
certbot-auto
Apacheを再起動
sudo systemctl restart apache2.service
また、定期的に自動更新するためにCRONに以下を登録すると便利です。
45 4 15 * * certbot-auto renew
Web画面からのインストール設定
Webブラウザからアクセス公開したドメインにアクセスすると、インストールページにリダイレクトされます。
言語を選択
インストールの必要条件をチェックする画面となるので、ERRORの表示がある場合は設定を変更するなどしてから再読込し、ERRORがなくなった後に次へ進みます。
データベースを設定します
「MySQLのホスト名」はlocalhostを指定し、アカウントとしてrootとインストール時に指定したパスワードを入力。
「Create Database User」はrootと別にデータベースユーザを作成するもので、多少面倒ですがrootユーザを乗っ取られるリスクを低減できるためオンにすることをおすすめします。
Webパスはディレクトリがルートディレクトリでない場合に、ルートとの差分を記述してください。上記の設定のとおりにルートに置いている場合は空欄で問題ないです。
(例:https://(ドメイン名)/ampache/ -> ampache/)
「Installation type」は特定ユーザのみがアクセスできるようにする場合は「デフォルト」、家の中等のクローズドな環境で使用する場合は「Minimalist」、ユーザ登録した不特定多数からアクセス可能にするなら「Community」を選択します。
「トランスコーディング」はffmpegを選択。
「Players」は音楽プレーヤーのアクセス方法を選択します。後からWeb画面で設定変更することも可能です。
管理用アカウントを設定します。
この時点で更新があった場合、更新画面になります。
更新ができたら「Return to main page」でトップページに移動します。
トップページが表示できたら、管理者アカウントでログインし、詳細な設定やユーザの作成を行ってください。
各機能の設定
カタログの追加
カタログは音楽/動画ファイルのディレクトリまたはURLを指定するものです。
音楽/動画ファイルを追加する場合、カタログを指定してファイルをデータベースに追加する処理を行わないとAmpacheのリストに表示ができないです。
以下の例ではローカルディレクトリの「/var/www/ampache/catalog」を指定します。
カタログに追加するディレクトリを作成し、apacheユーザのアクセス権限を設定
sudo mkdir -p /var/www/ampache/catalog
sudo chown -R www-data:www-data /var/www/ampache/catalog
Web画面の 管理者-> カタログ -> カタログの追加 からディレクトリを指定して、カタログの追加を行います。
ファイル名・フォルダ名のパターンはWeb画面からのアップロードを行う際に使用されるもので、あまり単純すぎるとファイル名がブッキングする可能性もあるためご注意ください。
カタログで指定した場所へのファイルの置き方は、sambaやFTPなどによるファイル操作や、この後の解説によるWeb画面からのアップロードで行うといいと思います。
カタログの手動操作
カタログで指定したディレクトリ/URLにファイルを置いた後、Ampacheのリストに反映するには、カタログ情報を更新する処理が必要です。
Web画面の 管理者-> カタログ -> カタログの表示 から対象のカタログの操作を選択して、「GO」ボタンで処理を実行します。
各操作の意味は以下のとおりです。
- 追加(Add)
カタログの指定先で新しく追加されているファイルをAmpacheのデータベースに追加します。 - 確認(Verify)
Ampacheに登録されているファイルのタグを検証し、異なっていたらデータベースに反映します。 - クリーン(Clean)
Ampacheのデータベースから元となるファイルのなくなったアルバムやアーティストの情報を削除します。 - 更新(Update)
クリーン、確認、追加の順で実行します。 - アート収集(Gather Art)
config/ampache.cfg.php内の設定で指定した先からアルバムアートを収集します。 - 削除
カタログを削除します。
ファイル数が特別多いわけでなければファイルの追加/削除の後に「更新」を実行すれば問題なく反映されると思われます。
ファイル数が多い場合は「更新」の処理が重たくなるため、高い頻度で実行することを避けるか、処理を使い分けることをおすすめします。
カタログの定期自動操作
カタログはCLIから操作するインタフェースも用意されているため、CRONで自動的に更新させることも可能です。
操作方法の詳細については以下からご確認ください。
https://github.com/ampache/ampache/wiki/CLI
CRONの登録例
以下のオプションではカタログのクリーン、確認、追加を行います。
0 1 * * * php /var/www/ampache/html/bin/catalog_update.inc (カタログ名) -c -v -a > /dev/null
Web画面からのアップロードを許可する
管理者-> サーバ設定 -> System を開く。
画面下の方にある「アップロード」の箇所を設定。
各設定の意味は以下のとおりです。
- Allow users to upload media
ユーザに音楽ファイルのWeb画面経由でのアップロードを許可します。 - Rename uploaded file according to catalog pattern
カタログで設定したファイルの名のパターンを使用してアップロードしたファイル名を変更します。 - Upload: allow users to edit uploaded songs
アップロードした音楽ファイルの登録データ編集をユーザに許可します。 - Upload: allow users to remove uploaded songs
アップロードした音楽ファイルの削除をユーザに許可します。(ただし、後述の削除許可の設定を追記しないと、この機能も有効になりません) - Upload: consider the user sender as the track’s artist
アップロードした音楽ファイルのトラックアーティスト情報をアップロードしたユーザにします。(自作曲をアップロードするサイト向け?) - Upload: create a subdirectory per user (recommended)
ユーザ毎にサブディレクトリを作成します。 - Upload: run the following script after upload (current directory = upload target directory)
アップロードされた後に実行するスクリプトを指定します。(特殊な操作をする場合以外は空欄で問題ないです) - アップロード先のカタログ
ここで選択したカタログで指定しているディレクトリにファイルが保存されます。
個人的に使う分には画像の設定と同様にすれば問題ないかと思います。
設定を反映すると ホーム -> Musicに「アップロード」という項目が増え、ここからアップロードが可能となります。
削除もWeb画面上から行いたい場合、Ampacheの設定ファイルに以下を追記する必要があります。
sudo vi /var/www/ampache/html/config/ampache.cfg.php
======
delete_from_disk = "true"
======
ちなみに、Web画面からアップロードした場合にもカタログの操作によるデータベースへの追加をしないとAmpacheからは見れないため、ご注意ください。
タグにSJISを使用していた場合の文字化けを解消する
文字化けしているファイルとデータベースの登録を削除し、以下の方法で対応してください。
クライアントの紹介
AmpacheのWeb画面は完成度が高いと個人的に思っていますが。
クライアントアプリケーションを利用してアクセスすることで、モバイル環境などでさらに快適に使用することができます。
AmpacheとしてのAPIだけでなく、SubSonic等のAPIにも対応しているため、それらに準拠している多数のクライアントからもアクセスが可能です。
特に、SubSonicに対応したクライアントは成熟度の高いものが多いため、私はそのようなものを使用することが多いです。
DSub for Subsonic (Android)
DSub for Subsonic (Google Play)
SubSonicクライアント
有料で日本語にも対応していませんが、操作がしやすく、Wifiとモバイル回線でのビットレートの変更などの細かい設定にも対応しているため、がっつり使う人にはおすすめできるクライアントです。
Jamstash (Chromeアプリ)
SubSonicクライアント
Chrome開けるなら通常のウェブ画面で操作すればいいことも多いですが、何かしらの理由でそうでない場合に使っています。
PC向けのミュージックプレイヤーでSubSonicに対応しているものは機能が複雑な印象ですが、こちらはシンプルで使いやすかったです。
コメント