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

Thank you for reading this post, don't forget to subscribe!

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

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

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

Это реше­ние обла­да­ло рядом недо­стат­ков и достоинств

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

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

  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

Для про­вер­ки мож­но запу­стить скрипт 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. Содер­жи­мое:

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

systemctl daemon-reload

systemctl enable seafile-fuse

Про­ве­ря­ем:

systemctl start seafile-fuse

systemctl status seafile-fuse

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

Emby

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

Ссылки

https://emby.media

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

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

Тыка­ем по ссыл­кам (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_am

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

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.

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

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

Результаты

На базе домаш­не­го обла­ка 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) реши­ла почти все постав­лен­ные задачи.