Centos8 + Universal Media Server で家庭内音楽サーバを作成 

# 構成
* [サーバ] Centos8 + Universal Media Server (UMS)
* [クライアント]
    * 古い Android 携帯 + foobar2000 mobile + 古いミニコンポ (音楽を聴く) 
    * iPhone + foobar2000 mobile (音楽を聴く)
    * DLNA対応テレビ (REGZA) (動画を見る)

# 仮想マシン作成
~~~
$ sudo dnf install virt-manager
$ systemctl is-enabled libvirtd
enabled
~~~
gui で仮想マシンマネージャー起動
新しい仮想マシンを作成

ローカルのインストールメディア(ISOイメージまたはCDーROMドライブ)
 -> こちら[^1]からダウンロードしたisoイメージ選択 (CentOS-8.2.2004-x86_64-dvd1.iso)

* Memory: 2048
* CPU: 2
* 仮想マシン用にディスクイメージを作成する -> 必要な容量を指定
* ネットワークの選択
    * ホストデバイス xxxxxx (enp6s0 など) : macvtap
    * ソースモード: Bridge
* インストール先
    * 手動パーティション設定
        * swap : 2 GiB
        * /boot : 1024 MiB
        * / : のこり全部
* ネットワーク設定
    * Ethernet: オン
    * IPv4設定
        * メソッド: 手動
        * 固定IPを指定 ex)192.168.xxx.xxx

# 仮想マシンに UMS インストール

## dependencies インストール [^2]
~~~
$ sudo dnf install epel-release
$ sudo dnf install java-1.8.0-openjdk
~~~

mediainfo 入れるには PowerTools レポジトリ有効化必要

~~~
$ dnf repolist all
repo id                        repo の名前                                状態
AppStream                      CentOS-8 - AppStream                       有効化
AppStream-source               CentOS-8 - AppStream Sources               無効化
BaseOS                         CentOS-8 - Base                            有効化
....
PowerTools                     CentOS-8 - PowerTools                      無効化
....

$ sudo vi /etc/yum.repos.d/CentOS-PowerTools.repo 
~~~
~~~vi:CentOS-PowerTools.repo
....
#enabled=0
enabled=1
....
~~~
~~~
$ dnf repolist all
repo id                        repo の名前                                状態
AppStream                      CentOS-8 - AppStream                       有効化
AppStream-source               CentOS-8 - AppStream Sources               無効化
BaseOS                         CentOS-8 - Base                            有効化
....
PowerTools                     CentOS-8 - PowerTools                      有効化
....

$ sudo dnf install mediainfo
~~~

オプションの DCRaw, VLC, tsMuXeR, P7Zip は内容もわからないので保留。なにか問題が起きたら考える。

## UMS インストール[^3]

公式サイト [Universal Media Server](https://www.universalmediaserver.com/)から UMS をダウンロード

展開、/optに配置

~~~
$ tar -zxvf UMS-9.8.0-x86_64.tgz ums-9.8.0/
$ sudo mv ums-9.8.0/ /opt/
~~~

シンボリックリンク

~~~
$ sudo ln -s /opt/ums-9.8.0/ /opt/ums
~~~

/etc/ums を作成してconfigファイルをコピー

~~~
$ sudo mkdir /etc/ums
$ sudo cp /opt/ums/UMS.conf /opt/ums/WEB.conf /etc/ums
~~~

ユーザ作成、ファイル所有者変更

~~~
$ sudo useradd -s /sbin/nologin ums
$ sudo chown -R ums:ums /opt/ums-9.8.0/
$ sudo chown -R ums:ums /etc/ums/
~~~

shared folder 作成、所有者変更

~~~
$ sudo mkdir /home/ums/Music
$ sudo mkdir /home/ums/Videos
$ sudo mkdir /home/ums/Picture
$ sudo chown -R ums:ums /home/ums/
~~~

サービス登録用ファイル

~~~
$ sudo vi /etc/systemd/system/ums.service
~~~
~~~vi:ums.service
[Unit]
Description=Universal Media Server

[Service]
Type=simple
Environment="UMS_PROFILE=/etc/ums/UMS.conf"
User=ums
Group=ums
ExecStart=/bin/bash /opt/ums/UMS.sh

[Install]
WantedBy=multi-user.target
~~~

configファイル編集

~~~
$ sudo vi /etc/ums/UMS.conf 
~~~
~~~vi:UMS.conf
# (4行だけ編集)
....
# (クライアントに表示する名前)
server_name = xxx xxx xxx  
....
minimized = true
....
# インタフェース名。enp1s0 など
network_interface = xxxxxx  
....
# 公開するフォルダ
folders = /home/ums/Music, /home/ums/Pictures, /home/ums/Videos  
....
~~~

サービス起動、登録

~~~
$ sudo systemctl start ums
$ sudo systemctl enable ums
~~~

ファイアウォールにサービスを登録。使う port は 5001, 9001。

~~~
$ sudo vi /usr/lib/firewalld/services/ums.xml 
~~~
~~~vi:ums.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>UMS</short>
  <description>Universal Media Server</description>
  <port protocol="tcp" port="5001"/>
  <port protocol="tcp" port="9001"/>
</service>
~~~
~~~
$ sudo firewall-cmd --add-service=ums --zone=public --permanent
$ sudo firewall-cmd --reload              
~~~


## 使いたいクライアント用の config ファイルを用意
### foobar2000 mobile 用の config ファイル
/opt/ums/renderers/ の中の適当なファイルをコピーして foobar2000_mobile.conf をつくる
細かいところは適当。問題が起きたら考える。

~~~
$ sudo cp /opt/ums/renderers/xxx.conf /opt/ums/renderers/foobar2000_mobile.conf
$ sudo vi /opt/ums/renderers/foobar2000_mobile.conf
~~~
~~~vi:foobar2000_mobile.conf
#----------------------------------------------------------------------------
# Profile for foobar2000 mobile.
# See DefaultRenderer.conf for descriptions of all the available options.
#

RendererName = foobar2000-mobile 
# Use the built-in factory icon
RendererIcon =

# ============================================================================
# This renderer has sent the following string/s:
#
# User-Agent: foobar2000-mobile/1.x
# ============================================================================
#

UserAgentSearch = foobar2000-mobile
UpnpDetailsSearch = foobar2000-mobile

Video = false
Audio = true
Image = false

#DefaultVBVBufSize = true
#H264Level41Limited = false
MediaInfo = true
#MuxDTSToMpeg = true
TranscodeAudio = WAV
#TranscodeFastStart = true

# Supported audio formats:
Supported = f:aiff                      m:audio/aiff
Supported = f:flac                      m:audio/flac
Supported = f:m4a|3ga   a:alac          m:audio/x-m4a
Supported = f:m4a|3ga   a:aac-lc|he-aac m:audio/x-m4a
Supported = f:m4a|mp4                   m:audio/mp4
Supported = f:mpc                       m:audio/x-musepack
Supported = f:mp3                       m:audio/mpeg
Supported = f:opus                      m:audio/opus
Supported = f:wav                       m:audio/wav
Supported = f:wavpack                   m:audio/x-wavpack
#Supported = f:adts      a:aac-lc|he-aac m:audio/aac
~~~
~~~
$ sudo chown ums:ums /opt/ums/renderers/foobar2000_mobile.conf
~~~

### regza 用configファイル

[https://sourceforge.net/projects/pmsforregza/files/Config/for%20UMS/]
(https://sourceforge.net/projects/pmsforregza/files/Config/for%20UMS/)
から REGZA.conf をダウンロードして renderers に配置

~~~
$ sudo mv Downloads/REGZA.conf /opt/ums/renderers/
$ sudo chown -R ums:ums /opt/ums/renderers/
~~~

[^1]: [The CentOS Project](https://www.centos.org/)
[^2]: [Linux install instructions · UniversalMediaServer/UniversalMediaServer Wiki · GitHub](https://github.com/UniversalMediaServer/UniversalMediaServer/wiki/Linux-install-instructions)
[^3]: [Centos7 Universal Media Server インストール – XEN blog](https://www.sakuraclass.com/archives/226/)