Ubuntu

Ubuntu18.04 iTunes Serverを立ててみる

日頃、メインPC(Windows)でiTunesを使って音楽ファイルを管理しているのだが、これはiPhoneを使っていた頃の名残。持ち出して聴きたい曲は、メインPCの保管されているMP3を、手でAndroidにコピーしている。これで特に困ることはなかった。

ところが、家庭内にiPhone&MacBook Air使いが現れて曲の管理が億劫になってきた。また、Android使いも、PCにある曲をコピーするのが億劫なようだ。
そこで、どう使えるのか分からないけれど、iTunes Serverを立ててみることにした。



広告


結論からすると、iTunesサーバーを立てることで、問題の半分は解決。
iPhoneからアクセスすることはできないが、MacBook Airからはアクセスができた。

Windowsにある曲をサーバーと同期

メインPCで曲を取り込むスタイルはそのままに、サーバーから曲を聴けるようにする…となると、メインPCにあるファイルをサーバーに同期すればいいかな、と考えた。昔はとてつもないように思えたサイズだったけれども、今となっては些細な量に感じられるし、万が一、ディスクが壊れたときにバックアップがあるのは安心だから。

同期を取るとなって、最初に思いついたのがrobocopyコマンドだった。
/MIRオプションでミラーリングするのだが、コピー元とコピー先を間違えたら大変なことになる(ファイル消失!?)から、注意深く設定。

>ROBOCOPY D:\Music \\hogehoge\share\Music /MIR

※hogehogeというサーバーにファイルをコピー。

なお、エクスプローラーによるコピーについては、夕食前に仕掛けておいたところ、就寝直後の残り3時間のところで「ネットワーク エラー」で停止していた。Linkstation側が一気に大量のファイルを受け取らない感じに見えていたりする。起床後に、再試行ボタンを押して再開したが、寝ている間にコピー完了!とはならなかった。コピー中にネットワークエラーが発生する環境に問題はあるけれども、期待通りに動いてくれない感じがある。

iTunes Serverの構築

2種類あったが、forked-daapd → OwnToneの順で試し、OwnToneでサービス提供することにした。

OwnTone

forked-daapdは既に開発が終了しているらしく、manにあるURLは存在していなかった。
最新のものを探してみたところ、OwnToneという名前で開発が続けられているようだった。
Github / owntone / owntone-server

Ubuntuのパッケージにはなかったので、ソースをダウンロードしてコンパイルする。
Github / owntone / owntone-server/ INSTALL.md

$ sudo apt-get install \
  build-essential git autotools-dev autoconf automake libtool gettext gawk \
  gperf bison flex libconfuse-dev libunistring-dev libsqlite3-dev \
  libavcodec-dev libavformat-dev libavfilter-dev libswscale-dev libavutil-dev \
  libasound2-dev libmxml-dev libgcrypt20-dev libavahi-client-dev zlib1g-dev \
  libevent-dev libplist-dev libsodium-dev libjson-c-dev libwebsockets-dev \
  libcurl4-openssl-dev libprotobuf-c-dev

$ mkdir work
$ cd work
$ git clone https://github.com/owntone/owntone-server.git
$ cd owntone-server/
$ autoreconf -i
$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-install-user
$ make
$ sudo make install

設定ファイルを編集。
/etc/owntone.conf

…
general {
…
trusted_networks = { "localhost", "192.168.55", "fd" } ← 多分、fdはIPv6のULA(ユニークローカルアドレス)を示しているものと思われる。
…
library {
…
directories = { "/path/to/music/files" } ← 音楽ファイルが入ったディレクトリを指定する。
…

設定を反映。

$ sudo systemctl restart owntone

ポートを開放。3688だけで良さそうだったのだけれど、設定ファイルを見たところ3689も使ってる?ということで、開けてみた。

$ sudo ufw allow to any port 3688:3689 proto tcp from 192.168.55.0/24 comment "DAAP Server"

これでサービスが開始していた。

forked-daapd

既に開発は終了しているようだけれども、標準のリポジトリからインストールできる手軽さがいい。

iTunes Serverと書いているけれども、これはDAAP(Digital Audio Access Protocol)サーバーということのようだ。mt-daapdとforked-daapdというのがあるようなので、軽く検索。

$ sudo apt search daapd
Sorting... Done
Full Text Search... Done
forked-daapd/bionic 25.0-2build4 amd64
  DAAP/DACP (iTunes) server, support for AirPlay and Roku devices

shairport-sync/bionic 3.1.7-1build1 amd64
  AirPlay audio player

forked-daapdというのをインストールしてみる。

$ sudo apt install forked-daapd

関係するファイルは、
/etc/forked-daapd.conf
/var/cache/forked-daapd
のようだった。

設定ファイルを編集。
/etc/forked-daapd.conf

…
library {
    directories = { "/path/to/music" }

設定を反映。

$ sudo systemctl restart forked-daapd

3689ポートを開放。

$ sudo ufw allow to any port 3689 proto tcp from 192.168.55.0/24 comment "DAAP Server"

これでサービスが開始していた。

iTunes Serverにある曲を再生

iTunes

WindowsでiTunesを使って再生するために、Bonjor サービスが動作している必要があった。
動作が気に入らなくてアンインストールしたり、無効化たりしている場合には、実行できるようにしておく。

これで、起動直後に「ミュージック」と表示されるドロップダウンリストにサーバーが現れ、曲が再生できるようになる。

MacBook Air

iTunesがないんだけど…といわれて、へーそうなのかーと調べてみたところ、4つのアプリケーションに分割されたとのこと。
色々と調べてみると、iTunesサーバーではなく、メディア共有ライブラリ、と呼ぶようだ。
で、実際の共有はというと…Apple MusicにApple IDでログインすると、自動的に使えるような仕掛けになっているようだった。

実際に試してもらったところ、ライブラリをすべて参照することができていた。

Ubuntu

Ubuntu desktopをインストールすると普通に入っているRhythmboxがDAAPに対応していて、これはとても快適に音楽を再生できている。

iPhone

Apple Musicでサブスクリプション契約までしているけれど、iTunesサーバーを探すことはしないらしい。画面を見せてもらったが、それらしきものナシ。
MacBook Airで取り込んでiPhoneと同期させて聴くようになるようなので、iTunesサーバーを立てても、何の影響も与えることはできなかった。

Android

iTunesサーバーを使えないことはないが、いい感じになるかというと、そうでもない。

Apple Music

インストールして手持ちのIDでログインしてみた。Windows版のiTunesで求められるのでサインインしているが、そこにあるライブラリが聴けるわけでもなく、ネットワーク上にあるiTunesサーバーを探しに行くこともない。デバイスの中にあるファイルさえも聴くこともできない。

色々と探してみると、どうやら、購入したCDやレンタルで借りてきたCDを取り込んだデーターは、毎月いくらかを支払うことで聴くことができるようになるらしい。
これはきっとクラウド利用料ということになるのだろう。

個人的には、自宅にいるときにファイルを同期して持ち歩いてもいいと思っている。音楽ファイルのサイズなんて、今となってはたかがしれている。今回立てたサーバーも、Apple Musicにはそれを受け取る方法がないようなので、何の影響も与えることはできなかった。
新たに料金を支払って、外出先で常にパケットを消費しながら音楽を聴くという感覚も今は持っていないので、この選択肢はナシ、だった。

その他のアプリケーション

アプリケーションを探してみると、

  • DAAP Media Player(最終更新2020年)
  • SharePlay(最終更新2015年)

が見つかった。

有料のものも2014年が最終更新だった。きっと、この頃からクラウドのデーターを再生するのが流行り始めて、自分でデーターを持たなくなったのかなー。DAAPサーバーもそうだし、こうしたクライアントもそう、開発状況や更新状況を見てそう思った。

DAAP Media Playerの方は、最初にサーバーを登録する必要がある。シンプルな表示だが、シークもできたりして、プレイヤーとしての一通りの機能を備えていた。
アルバム名が同じだったりすると、ごちゃ混ぜに表示されるケースがあったけれど、音楽データーの方に問題があるのかもしれない。

SharePlayの方は、サーバーを自分で探し出してくれるので、選択するだけ。表示順が独特なので、リストからの選択よりも検索の方が便利。音楽のシークはできないけれど、音楽の再生はできた。

起きたこと

iTunesが5分くらいでサーバーから切断される

音楽をいい感じで聞いていたら、サーバーからセッションを切断されて、音が聞こえなくなる。
なんだろう?と思っていたら、どちらかというと、自分から切断しているような感じ。Ubuntu側にはログが残っていない。

切断までは、早いと1分、長くても5分くらい。

Bonjourのエラー

イベントログに再び出始めた。

以前から問題になっていたのだけれど、使わない!ということで結論していた(サービスを無効にしていた)。
iTunesサーバーを利用したいならば、このサービスを有効にしておかないと、せっかくのサーバーがリストに現れない。

サービスを有効にすると、時々、VMwareやHyper-Vが作成するネットワークアダプタに何かをして自爆している模様。
このエラーが発生したときに、iTunesはiTunesサーバーとのセッションを切断しているように見えた。

Events, 100, エラー, Bonjour Service
mDNSCoreReceiveResponse: Received from 192.168.10.1:5353 21 1.10.168.192.in-addr.arpa. PTR hostname-2.local.
mDNSCoreReceiveResponse: Unexpected conflict discarding 19 1.10.168.192.in-addr.arpa. PTR hostname.local.

このIPアドレスは多分VMwareに割り当ててるヤツだ。なんでこんなもんが関係するんだっけ…というより、こんなのでいちいち止まるのってどうなんだろう?

仮想ネットワークインターフェースの無効化

仮想ネットワークインターフェースで何かしようとしてエラーが発生、切断する、というのがAppleのプログラムの特徴のようだった。
そこで、VMwareとHyper-Vが作成したネットワークアダプタをすべて無効にしてみたところ、エラーは発生しなくなり、iTunesが勝手にセッションを切断することもなくなった。

iTunesにだけこれらのネットワークアダプタを見せなくすることさえできれば…と思ったけれども、ウチの運用では、このPCがデーターソースになるので、ネットワークにわざわざデーターを取りに行く必要はない。技術的な興味はあるけれど、解決したとしても使うことがないものだから、割り切りとした。

Apple IDでログインすること

Apple IDでログインするために、毎度、iPhoneかiPadに電源を入れる必要があった。日頃使っていないデバイスの電源を入れるのは超面倒ではある。なので、メッセージが表示されないのでSMSを送信する、的な操作を行ってどうにかしてきた。

今回、Android版のApple Musicにログインしてみようと思い立ったから、ログインしようとしたら、SMSが送られてこない。デバイスの電源を入れる必要に迫られ、それなしでどうにかする方法を探してみた。

いま、Apple IDにiPhoneとiPadが登録されている。これは「信頼できるデバイス」とされており、ログイン時にはこのデバイスに6桁の番号が送信されることになっている。
これらのデバイスを削除することで、最初からSMSが送られてくるようになった。

もし、iPhoneやiPadを起動したら、そのときには改めてログインすればいい。そして、電源を落としたら、デバイスを削除すればいい。

…んー面倒くさい。信頼できるデバイスのフラグを落とすだけ、というのはないのかなー?と思ったけれど、ない。削除しか方法がないのだった。

さいごに

時代はクラウド。なので、料金を支払って便利さを享受すれば良いのだろう。
同じようなサービスをいくつも契約して、デバイスやアプリケーションによって使い分けるというわけ。

オレはもう少しだけ時代に取り残されておこう。いつかこれらのサービスが統合する日が来るかもしれない。

広告

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他