Я уже давно пользуюсь домашним облаком Seafile, которое развёрнуто дома на виртуальном сервере Ubuntu 18.
Seafile — это личное хранилище для хранения данных в стиле Dropbox. Seafile — замечательный инструмент для создания личного, семейного или корпоративного файлового хранилища. Не очень сложен в установке и настройке. Бесплатен.
Продолжаю тему развёртывания домашнего медиа сервера на базе Seafile. Цепочка Seafile → Fuse → DLNA позволила настроить медиа сервер с пакетом MiniDLNA.
DLNA (Digital Living Network Alliance) — набор стандартов, которые позволяют передавать и воспроизводить в реальном времени фото, видео и аудио файлы по домашней сети. Поддерживается проводная (Ethernet) и беспроводная (Wi-Fi) связь.
Это решение обладало рядом недостатков и достоинств, подробнее здесь:
Медиа сервер на базе Seafile + MiniDLNA
Теперь я решил рассмотреть в качестве DLNA сервера бесплатный медиа сервер Emby.
Для настройки медиа сервера нужно решить две задачи:
- Получить доступ к данным Seafile как в обычной файловой системе.
- Поднять DLNA сервер.
По отдельности про решение этих двух задач можно почитать здесь:
В 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
Для проверки можно запустить скрипт 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
Для проверки можно запустить скрипт seaf-fuse от имени пользователя, под которым работает seafile, с параметрами:
/opt/seafile-server-latest/seaf-fuse.sh start -o allow_other /opt/seafile-fuse
В папке /opt/seafile-fuse появится содержимое Seafile. Доступ к содержимому имеют все пользователи.
Автоматизируем запуск seaf-fuse
Запуск служб 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
Проверяем:
systemctl start seafile-fuse
systemctl status seafile-fuse
Теперь после загрузки сервера папка с содержимым Seafile будет монтироваться автоматически.
Emby
Emby представлен в двух реализациях, бесплатной и Emby Рremiere. Платная версия поддерживает работу с мобильными клиентами, облачную синхронизацию, эфирное ТВ и ещё какой-то функционал. Помимо DLNA мы получим полноценный web GUI с возможностью просмотра фильмов через браузер.
Ссылки
Установка Emby на Ubuntu 18
Заходим на официальный сайт.
Тыкаем по ссылкам (DOWNLOAD) и находим инструкцию для установки медиа сервера на Ubuntu.
https://emby.media/linux-server.html
Инструкция лаконична:
Ubuntu X64
- Download emby-server-deb_4.6.4.0_amd64.deb
dpkg -i emby-server-deb_4.6.4.0_amd64.deb
- 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
Устанавливаю пакет:
dpkg -i emby-server-deb_4.6.4.0_amd64.deb
Всё установилось без проблем. Проверяю работающий порт 8096:
netstat -tanu | grep 8096
Порт работает, дальнейшую настройку можно производить в браузере:
http://localhost:8096
Проходим квест по первоначальной настройке сервера.
При создании библиотеки указываем путь к видео, который мы создали с помощью seaf-fuse, например:
/opt/seafile-fuse/user@example.com/5403ac56-5552-4e31-a4f1-1de4eb889a5f_Video
В итоге получаем работающий медиа сервер, который распознаёт фильмы и скачивает привьюшки.
Фильмы отлично проигрываются в браузере.
Emby по DLNA
Но меня больше интересует, что из себя представляем Emby в качестве DLNA сервера. За это отвечает встроенный DLNA плагин. Настройки DLNA.
Здесь нужно выбрать пользователя по умолчанию, чьи библиотеки будут транслироваться по DLNA.
Стоит обратить внимание на вкладку "Profiles".
Здесь можно выбрать профиль по умолчанию для DLNA сервера. Я выбрал LG Smart TV. Выбираем системный профиль, нажимаем OK. Далее настройки профиля можно переопределить.
Результат работы на телевизоре LG
Захожу в SmartShare.
Перехожу к устройствам. Обнаружен наш сервер.
Папки и файлы читаются.
Очень радует наличие превьюшек. Дети быстро научились пользоваться Emby на телевизоре.
Фильм проигрывается. Субтитры есть. Аудиодорожки выбираются.
Результат работы на стареньком телевизоре Philips
И облом, не работает там ничего! Медиа сервер отображается, но папки выводятся в бесконечном цикле, памяти не хватает и телевизор перестаёт работать. Удалось поймать кадр:
Я пытался использовать различные профили, но ничего не помогло. Нашёл на форуме такую же проблему у людей:
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, ждите новый статей.