Перейти к основному содержанию

Медиа сервер на базе Seafile + Emby

Seafile

Я уже давно пользуюсь домашним облаком Seafile, которое развёрнуто дома на виртуальном сервере Ubuntu 18.

Seafile — это личное хранилище для хранения данных в стиле Dropbox. Seafile — замечательный инструмент для создания личного, семейного или корпоративного файлового хранилища. Не очень сложен в установке и настройке. Бесплатен.

Seafile — личное хранилище

Продолжаю тему развёртывания домашнего медиа сервера на базе Seafile. Цепочка Seafile → Fuse → DLNA позволила настроить медиа сервер с пакетом MiniDLNA.

DLNA (Digital Living Network Alliance) — набор стандартов, которые позволяют передавать и воспроизводить в реальном времени фото, видео и аудио файлы по домашней сети. Поддерживается проводная (Ethernet) и беспроводная (Wi-Fi) связь.

Это решение обладало рядом недостатков и достоинств, подробнее здесь:

Медиа сервер на базе Seafile + MiniDLNA

Теперь я решил рассмотреть в качестве DLNA сервера бесплатный медиа сервер Emby.

seafile

Для настройки медиа сервера нужно решить две задачи:

  1. Получить доступ к данным Seafile как в обычной файловой системе.
  2. Поднять DLNA сервер.

По отдельности про решение этих двух задач можно почитать здесь:

  1. Seafile — расширение FUSE
  2. Медиа сервер Emby на Ubuntu 18

В Seafile данные не хранятся в виде файлов а разбиты на блоки. Это позволяет эффективно использовать механизм дедупликации данных. Но для предоставления данных серверу DLNA эти блоки нужно превратить в обычные файлы. Для этого используется расширение seaf-fuse. Seaf-fuse является реализацией виртуальной файловой системы FUSE. Этот скрипт монтирует всё содержимое Seafile в папку (которая называется "mount point"), так что мы получаем доступ ко всем файлам Seafile так же, как к обычной папке на сервере.

https://manual.seafile.com/extension/fuse/

Доступ к зашифрованным папкам с помощью seaf-fuse не предоставляется, поэтому библиотеку с фильмами не шифруем. Данные доступны только для чтения, это нам подходит. В debian/centos для монтирования папки FUSE пользователь должен быть в группе "fuse".

Как использовать seaf-fuse

Создаём точку монтирования, назначаем владельцем пользователя, от имени которого работает seafile:

mkdir /opt/seafile-fuse
chown sf\: /opt/seafile-fuse

У меня Ubuntu, поэтому для монтирования директории пользователь должен быть участником группы fuse. Создадим группу и добавим в неё пользователя:

groupadd fuse
usermod -aG fuse sf

seafile

Для проверки можно запустить скрипт seaf-fuse от имени пользователя, под которым работает seafile:

/opt/seafile-server-latest/seaf-fuse.sh start /opt/seafile-fuse

В папке /opt/seafile-fuse появится содержимое Seafile. Теперь мы можем получить путь к папке с фильмами, например:

/opt/seafile-fuse/user@example.com/5403ac56-5552-4e31-a4f1-1de4eb889a5f_Video

Для остановки монтирования:

/opt/seafile-server-latest/seaf-fuse.sh stop

По умолчанию доступ к содержимому имеет пользователь root, дадим доступ всем пользователям сервера. Редактируем файл /etc/fuse.conf. Раскомментируем опцию:

user_allow_other

seafile

Для проверки можно запустить скрипт seaf-fuse от имени пользователя, под которым работает seafile, с параметрами:

/opt/seafile-server-latest/seaf-fuse.sh start -o allow_other /opt/seafile-fuse

В папке /opt/seafile-fuse появится содержимое Seafile. Доступ к содержимому имеют все пользователи.

Автоматизируем запуск seaf-fuse

Запуск служб Seafile у меня уже автоматизирован:

Seafile — автозапуск

Добавим автозапуск seaf-fuse в systemd.

${seafile_dir} — измените переменную на путь к вашей директории Seafile. У меня /opt.
User и Group — измените на своего пользователя и группу.

Работаем под рутом. Создаём сервис seafile-fuse:

sudo vim /etc/systemd/system/seafile-fuse.service

Сервис будет запускаться после seafile и seahub. Содержимое:

[Unit]
Description=Seafile fuse
After=network.target seafile.service seahub.service

[Service]
Type=forking
ExecStart=${seafile_dir}/seafile-server-latest/seaf-fuse.sh start -o allow_other /opt/seafile-fuse
ExecStop=${seafile_dir}/seafile-server-latest/seaf-fuse.sh stop
LimitNOFILE=infinity
User=sf
Group=sf

[Install]
WantedBy=multi-user.target

Настраиваем автозагрузку:

systemctl daemon-reload
systemctl enable seafile-fuse

seafile

Проверяем:

systemctl start seafile-fuse
systemctl status seafile-fuse

seafile

Теперь после загрузки сервера папка с содержимым Seafile будет монтироваться автоматически.

Emby

Emby представлен в двух реализациях, бесплатной и Emby Рremiere. Платная версия поддерживает работу с мобильными клиентами, облачную синхронизацию, эфирное ТВ и ещё какой-то функционал. Помимо DLNA мы получим полноценный web GUI с возможностью просмотра фильмов через браузер.

Ссылки

https://emby.media

Установка Emby на Ubuntu 18

Заходим на официальный сайт.

emby

Тыкаем по ссылкам (DOWNLOAD) и находим инструкцию для установки медиа сервера на Ubuntu.

https://emby.media/linux-server.html

Инструкция лаконична:

Ubuntu X64

  1. Download emby-server-deb_4.6.4.0_amd64.deb
  2. dpkg -i emby-server-deb_4.6.4.0_amd64.deb
  3. Open a web browser to http://localhost:8096

Я буду устанавливать последнюю стабильную версию Emby 4.6.4.0.

После установки веб-инретфейс для настройки доступен по адресу http://localhost:8096 или https://localhost:8920.

Скачиваю пакет:

cd /tmp
wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.6.4.0/emby-server-deb_4.6.4.0_amd64.deb

emby

Устанавливаю пакет:

dpkg -i emby-server-deb_4.6.4.0_amd64.deb

emby

Всё установилось без проблем. Проверяю работающий порт 8096:

netstat -tanu | grep 8096

emby

Порт работает, дальнейшую настройку можно производить в браузере:

http://localhost:8096

emby

Проходим квест по первоначальной настройке сервера.

emby

При создании библиотеки указываем путь к видео, который мы создали с помощью seaf-fuse, например:

/opt/seafile-fuse/user@example.com/5403ac56-5552-4e31-a4f1-1de4eb889a5f_Video

В итоге получаем работающий медиа сервер, который распознаёт фильмы и скачивает привьюшки.

emby

Фильмы отлично проигрываются в браузере.

emby

Emby по DLNA

Но меня больше интересует, что из себя представляем Emby в качестве DLNA сервера. За это отвечает встроенный DLNA плагин. Настройки DLNA.

emby

Здесь нужно выбрать пользователя по умолчанию, чьи библиотеки будут транслироваться по DLNA.

Стоит обратить внимание на вкладку "Profiles".

emby

Здесь можно выбрать профиль по умолчанию для DLNA сервера. Я выбрал LG Smart TV. Выбираем системный профиль, нажимаем OK. Далее настройки профиля можно переопределить.

Результат работы на телевизоре LG

Захожу в SmartShare.

seafile

Перехожу к устройствам. Обнаружен наш сервер.

seafile

Папки и файлы читаются.

emby

Очень радует наличие превьюшек. Дети быстро научились пользоваться Emby на телевизоре.

seafile

Фильм проигрывается. Субтитры есть. Аудиодорожки выбираются.

Результат работы на стареньком телевизоре Philips

И облом, не работает там ничего! Медиа сервер отображается, но папки выводятся в бесконечном цикле, памяти не хватает и телевизор перестаёт работать. Удалось поймать кадр:

emby

Я пытался использовать различные профили, но ничего не помогло. Нашёл на форуме такую же проблему у людей:

https://emby.media/community/index.php?/topic/71673-emby-dlna-play-to-philips-32pfs580312-not-working/page/2/

I have about the same issue on a Philips TV. I have 2 LGs and none have this problem.

When I activate DLNA in the TV, I can see the server, then I access the server and I see an infinite list of folders. I actually have only one Library, named "Joaqui" (my sons name) but in the list I see that name repeated infinitely, and that seems to crash the TV app. I have to power off and on the TV to see DLNA again.

Проблему скорее всего не исправят, это печально.

Результаты

На базе домашнего облака Seafile + Emby получилось сделать домашний медиа сервер. Работу фотографий и музыки я не тестировал.

Минусы

  • DLNA на Philips не заработало!
  • По умолчанию содержимое медиа библиотеки обновляется раз в 12 часов. Однако, содержимое папки можно обновить вручную через web GUI.
  • Иногда при входе в папку по DLNA на телевизоре не отображается содержимое, приходится выходить и снова входить.
  • Нет встроенной возможности запустить emby под нужным пользователем, так что seaf-fuse монтируем только с доступом на чтение всем пользователям.

Плюсы

  • Фильмы по DLNA заработали на телевизоре LG. Есть превьюшки.
  • Emby и Seafile не требовательны к ресурсам, процессор и память сильно не жрут.
  • Есть кодирование на лету. Вот тогда могут использоваться ресурсы.
  • Есть красивый web интерфейс с возможностью просмотра фильмов.
  • Содержимое папки можно обновить вручную через web GUI.
  • Потенциально можно настроить IP TV.
  • А ведь можно запустить несколько разных серверов DLNA, у меня вместе работает Emby и MiniDLNA.

Заметки

  • Фильмы высокого качества по Wi-Fi тормозят, нужно подключать телевизор к проводной сети Ethernet.
  • Часто фильмы не распознаются или распознаются неправильно, пришлось научиться распознавать фильмы.
  • Фильм DVD на телевизоре отобразился, но выбрать правильную аудио дорожку и субтитры не удалось.
  • Реклама Emby Premiere задолбала.

В целом впечатление от Emby хорошее. Связка Seafile + Emby + MiniDLNA (только для Philips TV) решила почти все поставленные задачи. Я буду пробовать и другие медиа серверы с поддержкой DLNA, ждите новый статей.

Теги

 

Похожие материалы

Seafile сервер для Linux версия 7.0.4

26 июля 2019 года вышла новая версия сервера Seafile для Linux — 7.0.4. Релиз доступен для скачивания. До этого был успешный релиз 7.0.3. На этот раз попробую обновиться дальше до версии 7.0.4.