先日Fedora 28をインストールしたIntel NUC。
Nextcloudサーバとして利用していますが、少し暇そうです。
HDDの空き容量もありますので。
Embyをインストールして、動画や音楽ファイルのストリーミング(ダウンロード不要で再生可能な)サーバにしてみようと思います。
なお自宅サーバに構築しますが、VPNや専用アプリを使うと外出先で動画や音楽を聞くこともできるようです。
目次
Embyメディア・サーバ・インストール手順 Fedora 28 docker-compose版
メディアサーバは、ストリーミングに対応しつつ、インターネット認証が不要なEmbyを使わせて頂こうと思います。
Ubuntuの場合、dpkgでインストールが可能のようですが、Fedoraはパッケージが提供されていないようです。
ここはDockerで動かしてみようと思います。
Dockerインストール
rootでログインして設定しました。sudoは省略しています。
- Fedoraの場合、dnfでDockerをインストールします。
dnf in docker docker-compose
- cockpitから管理できるように、dockerモジュールをインストールしました。
dnf in cockpit-docker
- dockerサービスを有効にします。
systemctl enable docker systemctl start docker
Docker-composeでembyサーバ起動
- 動作環境用のフォルダを作成します。
mkdir -p docker/emby cd docker/emby
- docker-compose.yamlファイルを作成します。
vi docker-compose.yaml
次のような内容です。
version: '2' services: emby: image: emby/embyserver volumes: # SELinux :zラベルを忘れずに - ./config:/config:z - ./share1:/mnt/share1:z - ./share2:/mnt/share2:z ports: - "8096:8096" - "8920:8920" - "1900:1900/udp" - "7359:7359/udp"
SELinux対応のため、Volumesにラベルを付けています。これがないとembyサーバに自動ログインできませんでした。
- embyで使用するポートのファイアウォール設定を変更します。
firewall-cmd --add-port=8096/tcp --permanent firewall-cmd --add-port=8920/tcp --permanent firewall-cmd --add-port=1900/udp --permanent firewall-cmd --add-port=7359/udp --permanent
- 初期設定中は、SELinuxを一時的に無効にしました。
setenforce 0
- embyサーバを起動します。
docker-compose up -d
最初コンテナが終了してしまいましたが、もう一度起動したところ、継続的に動作するようになりました。
Embyサーバ初期設定
- Webブラウザでポート番号8096にアクセスします。
http://<NUCのIPアドレス>:8096
- 初期設定画面が表示されます。Japaneseを選択して次へ。
- 名前を入力、オプションでEmbyアカウントも入力できます。
- メディアフォルダの設定は初期設定後に行います。
- 言語を選択して次へ。
- リモートアクセスの設定は、チェックを外すと先へ進みませんでした。そのまま次へ。
- I acceptを選択して次へ。
- 初期設定完了です。
- SELinuxの設定を戻しておきました。
setenforce 1
メディアフォルダの追加
インストールは完了しましたが、ホーム画面は空っぽかと思います。次はフォルダを登録しようと思います。
- 右上の歯車アイコンをクリックして設定画面へ。
- Library→Add Media Libraryをクリックします。
- Content typeとして「Mixed content」を選択すると、任意の動画・音楽ファイルを認識するようです。
- Display nameに表示名を入力します。
- Foldersへフォルダを登録します。docker-compose.yamlのvolumes欄に、/mnt/share1と/mnt/share2を登録しておきましたので、そのあたりを追加します。
ファイルの転送
既にPCに動画や音声が入っていれば、そのパスをdocker-compose.yamlのVolumesに指定すれば良さそうです。
他のPCから転送したい場合、SCPやSFTP等のSSHファイル転送対応プロトコルで、NUCへファイルを転送できそうです。
Windowsの場合、WinSCP等で転送が可能のようです。
NUCの/root/docker/emby/share1へファイルを転送してみました。転送後、Emby設定画面の「Scan All Libraries」ボタンをクリックすると、転送されたファイルが認識されます。
動画・音楽のストリーミング再生
ホーム画面に戻ると、転送したファイルが認識されています。Webブラウザでストリーミング再生が可能のようです。
iPhoneの場合、Embyアプリをインストールしてサーバを登録、動画や音楽の一覧が表示されますが、アプリによるストリーミング再生は有償のようです。iPhoneのWebブラウザからEmbyサーバへアクセスする場合、問題なくストリーミング再生することができました。
DLNAにご注意?
既定の設定では、DLNAサーバ機能が有効になっているようです。
同じLANに接続された、DLNA対応のテレビやゲーム機(PS4, PS3)等で動画や音楽の一覧が表示されて再生可能になっているかと思います。
テレビでストリーミング再生ができて便利な一方、プライベートなコンテンツを置きたい場合は、ご注意されたほうが宜しいかと思います。
※試していませんが、docker版の場合、DLNAで使用するポート番号をすべて、docker-compose.yamlのports欄に書き足す必要がありそうです。
NUC再起動後にdocker-compose自動起動
Linuxのdocker-composeは、再起動すると自動でupされないのですね・・・(Docker for Mac、Docker for Windowsはコンテナも再起動してくれます)
次のようなsystemd設定を作成して、PCの再起動後にEmbyサーバが起動するようにしてみました。
vi /etc/systemd/system/docker-emby.service
[Unit]
Description=Docker Emby container.
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker-compose -f /root/docker/emby/docker-compose.yaml up --no-recreate
ExecStop=/usr/bin/docker-compose -f /root/docker/emby/docker-compose.yaml stop
[Install]
WantedBy=local.target
systemdに登録することで、再起動後にembyサーバが自動起動するようになりました。
cd /root/docker/emby
docker-compose down
systemctl daemon-reload
systemctl enable docker-emby
systemctl start docker-emby
docker-compose ps
mp4ファイルやmkvファイルなど、ストリーミング再生や全画面表示など問題なく行えています。
動画や音楽の検索機能のほか、タイトル等のタグ編集の専用画面もあり、たいへん実用的な印象です。
手持ちの動画ファイルを入れてみましたが、Content typeに「Mixed content」を設定したせいか、無関係なタイトルやサムネイルが付加される場合がありました。
このあたりの設定を微調整すれば、機能・速度ともに十分なストリーミングサーバとして利用できそうな感じです。