- Как установить и настроить DLNA miniDLNA Server в Linux
- Для чего нужен медиа-сервер DLNA?
- Серверы DLNA, которые мы можем использовать
- Установка и ввод в эксплуатацию MiniDLNA
- Настроить сервер miniDLNA
- Настроить брандмауэр сервера Linux
- Проверить статус сервера miniDLNA
- Воспроизведение содержимого нашего сервера DLNA
- DLNA-сервер за пять минут
- Домашний медиа сервер minidlna
- На кой черт это надо?
- Установка Linux
- Установка transmission-daemon
- Установка NGINX и настройка проксирования
- Настройка проксирования transmission-daemon через nginx
- Написание скрипта
- Установка медиа сервера
- Напоследок
Как установить и настроить DLNA miniDLNA Server в Linux
В настоящее время делиться мультимедийным контентом с устройствами в нашем доме проще, чем когда-либо, мы можем делиться контентом с нашего NAS-сервера или напрямую с Linux-на основе сервера, установка программы miniDLNA, которая позволит нам легко обмениваться контентом. Сервер DLNA позволит нам передавать аудио, видео и фотографии на телевизоры, смартфоны, планшеты и любые устройства с экраном. Этот контент можно воспроизводить на любом устройстве, совместимом с UPnP / DLNA. Сегодня в этой статье мы покажем вам, как настроить наш сервер DLNA на любом сервере Linux.
Для чего нужен медиа-сервер DLNA?
В настоящее время подавляющее большинство маршрутизаторов с USB-портом имеют медиа-сервер DLNA, это означает, что, если мы подключим внешний жесткий диск или флешку, мы сможем воспроизводить мультимедийный контент на любом устройстве, подключенном к домашней локальной сети, без необходимость ничего не делать. Однако возможно, что наш маршрутизатор недостаточно мощный для выполнения этой задачи, тем более, что для чтения фильма или сериала, который мы собираемся воспроизвести, используется много процессора, и, в зависимости от битрейта мультимедийного контента, он может не хватить. По этой причине наиболее распространенным является использование внешнего сервера DLNA на любом сервере на базе Linux, таком как Debian на NAS, Raspberry Pi или любое устройство.
Для всего этого нам будет служить DLNA-сервер на сервере с операционной системой Linux:
- Это позволяет нашему телевизору обнаруживать сервер и воспроизводить контент (аудио, видео и фотографии), который находится на сервере.
- Другие устройства, такие как смартфоны, планшеты и даже наша консоль, также могут обнаруживать его и воспроизводить содержимое сервера DLNA через Wi-Fi.
- Мы можем подключить другие устройства, например, совместимые колонки.
По логике вещей необходимо, чтобы все устройства были совместимы с сервером DLNA, который мы собираемся установить.
Серверы DLNA, которые мы можем использовать
Одним из наиболее широко используемых серверов DLNA является популярный miniDLNA , который совместим со многими операционными системами и практически со всеми устройствами. В нашем случае это тот, который всегда давал нам лучший результат, хотя есть и другие, такие как Fuppes, которые также работают очень хорошо (интегрированы в XigmaNAS-ориентированную операционную систему NAS). Другими широко используемыми серверами DLNA являются, например, Plex Media Server, который не только включает Plex, но и встроенный сервер DLNA для тех телевизоров, которые несовместимы с вашим приложением.
Основными характеристиками miniDLNA является то, что это сервер DLNA, который потребляет очень мало ресурсов, как на CPU / ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР и Оперативная память На уровне, все будет работать очень быстро, а загрузка процессора будет как раз при чтении мультимедийного содержимого внешнего диска. Этот сервер DLNA может быть установлен на любом Linux, независимо от оборудования, хотя по логике нам нужно, чтобы он был чем-то мощным, чтобы не было никаких проблем, и мы должны учитывать его потребление электроэнергии, потому что он будет активирован 24 часа в сутки. . Другие характеристики заключаются в том, что он имеет действительно простую конфигурацию, но очень важная деталь заключается в том, что он не позволяет перекодировать аудио и / или видео, таким образом, мы должны убедиться, что наш телевизор поддерживает различные существующие видеоформаты.
В этой статье мы использовали miniDLNA более 5 лет, и за все это время у нас не было никаких проблем с воспроизведением мультимедийного контента, за исключением тех старых телевизоров, которые не поддерживают новые видеокодеки, такие как H.265, но если ваш телевизор новый (относительно), у вас не должно возникнуть проблем. +
Установка и ввод в эксплуатацию MiniDLNA
Программа miniDLNA настолько хорошо известна, что у нас есть она доступна в официальных репозиториях основных дистрибутивов GNU / Linux, поэтому она будет у нас через диспетчер пакетов. В этом руководстве мы использовали Debian 10, но вы можете использовать любую версию, например Ubuntu, Linux Mint или любой другой дистрибутив, потому что все они работают одинаково.
Первое, что нужно сделать, это установить miniDLNA со всеми ее зависимостями:
sudo apt install minidlna
После установки запускаем службу miniDLNA:
sudo service minidlna start
Автоматически эта служба запускается вместе с операционной системой, нам не нужно делать абсолютно ничего другого, как вы можете видеть, когда мы добавляем:
sudo service minidlna status
Настроить сервер miniDLNA
Этот сервер DLNA настраивается с помощью одного файла конфигурации, который нам придется редактировать, поэтому он значительно облегчает его настройку и запуск, потому что нам не нужно будет редактировать несколько, а только один. Для его редактирования мы будем использовать любой текстовый редактор, обычно используется vim или nano, в нашем случае мы будем использовать nano.
sudo nano /etc/minidlna.conf
В самом файле конфигурации у нас будет вся необходимая документация для запуска сервера DLNA, но в этой статье мы подробно объясним, как его настроить, поскольку он поставляется на английском языке. Важной деталью является то, что у нас есть справочная страница (руководство) медиа-сервера miniDLNA, поэтому мы можем получить больше информации об операции.
Первое, что нам нужно узнать, это загрузить источники мультимедийного контента, в зависимости от того, есть ли у нас видео, аудио или фотографии, синтаксис будет следующим:
media_dir = P, / home / bron / multimedia / фотографии
media_dir = V, / главная / броня / мультимедиа / видео
Как видите, если мы хотим загрузить «A» — это звук, P — это фотографии, а V — видео, таким образом, на телевидении он будет выглядеть идеально классифицированным. Если мы хотим, чтобы появились видео и фотографии, мы также могли бы это сделать, что идеально подходит для камер, которые также записывают видео:
Еще одно предложение, которое мы должны настроить, — где хранить базу данных DLNA, в этом случае это делается раскомментированием следующей строки:
То же самое происходит с каталогом журналов или регистров, в случае какой-либо ошибки:
Остальные параметры конфигурации можно оставить таким образом:
У нас есть все операторы, уже написанные в файле конфигурации, но они прокомментированы, поэтому мы должны раскомментировать их, чтобы они активировались. После того, как мы его настроили, мы сохраняем файл конфигурации и приступаем к перезагрузке сервера DLNA, чтобы он правильно применил изменения.
sudo service minidlna restart
Как только мы все это сделаем, мы сможем получить доступ к нашему телевизору или смартфону и протестировать медиа-сервер DLNA.
Настроить брандмауэр сервера Linux
Во всех операционных системах Linux брандмауэр всегда работает, обычно на основе iptables, но по умолчанию у нас есть «разрешить все», поэтому вам не нужно создавать какие-либо дополнительные правила для доступа к медиа-серверу DLNA. Если вы настроили брандмауэр iptables в ограничительном режиме с «запретить все», вам придется ввести два правила для его правильной работы.
iptables -A INPUT -p tcp —dport 8200 -j ACCEPT
iptables -A INPUT -p udp –dport 1900 -j ПРИНЯТЬ
Мы предполагаем, что у вас есть только один сетевой интерфейс и одна подсеть, в случае, если вы хотите фильтровать по порту или подсети, вам нужно будет добавить это, это правило разрешает локальный доступ только к двум портам, определенным выше.
Если вы хотите, чтобы эти правила в брандмауэре сохранялись, вам нужно будет выполнить следующую команду:
Теперь мы можем проверить, все ли правильно работает с тем клиентом DLNA, который нам нужен, например телевизор, смартфон или планшет.
Проверить статус сервера miniDLNA
Если мы получим доступ к нашему локальному IP-адресу через Интернет или с любого компьютера и поместим порт 8200, мы получим доступ к веб-интерфейсу статуса miniDLNA. Здесь мы увидим только медиа-библиотеку, количество аудио-, видео- и графических файлов. Мы также сможем увидеть клиентов, которые в настоящее время подключены к медиа-серверу DLNA, с их IP-адресом, MAC-адресом и количеством подключений.
В нашем случае мы положили:
Воспроизведение содержимого нашего сервера DLNA
Теперь, когда мы все установили правильно, все, что нам нужно сделать, это найти сервер DLNA в локальной сети. В зависимости от того, какой клиент (устройство) вы используете, вам придется использовать ряд программ:
- ТВ: Во всех телевизорах распознавание медиа-серверов DLNA полностью автоматическое, оно будет отображаться в верхней или нижней части, где появляются съемные устройства хранения.
- ПК с Windows, Linux или MacOS: мы можем использовать KODI или VLC, два лучших варианта для всех платформ.
- Android: VLC или BubbleUPnP — два приложения, которые позволят нам искать сервер DLNA в среде и воспроизводить его.
- iOS: VLC
Во всех этих программах мы должны перейти к «Cеть”И найдите такую опцию, как UPnP или DLNA, и наш недавно настроенный сервер DLNA появится автоматически. Если он не отображается ни на одном устройстве, мы рекомендуем вам проверить брандмауэр iptables, а также, если он активирован.
Как вы видели, установка и настройка сервера DLNA на нашем NAS или сервере Linux очень проста, нам просто нужно установить его и настроить текстовый файл, что не вызовет особых трудностей.
Источник
DLNA-сервер за пять минут
DLNA — набор стандартов для быстрой передачи медиа-контента между устройствами. DLNA привлекает внимание простотой в использовании и широкой распространённостью: такие технологии как AllShare от Samsung, SmartShare от LG и AirPlay от Apple по сути своей являются реализациями DLNA со своими маркетинговыми названиями.
Разработкой стандартов занимается альянс DLNA. Он же проводит сертификацию устройств, проверяя их совместимость со стандартом. На устройствах прошедших такую сертификацию обычно размещается логотип альянса:
Далее будет показано как можно быстро развернуть на домашнем сервере DLNA-сервер для использования совместно с устройствами на базе Android.
Начальные условия: домашний сервер под управлением Ubuntu 16.04, коллекция фильмов, которую мы хотим смотреть на Smart TV под управлением Android, находится в директории /home/ubuntu/Films. По DLNA мы собираемся отдавать только видео-файлы.
Среди всего множества реализаций DLNA мы выберем minidlna от разработчиков из компании Netgear. Некоторое время назад он был переименован в ReadyMedia, однако в репозитории Ubuntu пакет пока ещё по прежнему называется minidlna. Одной из интересных особенностей minidlna является возможность работы сразу на нескольких сетевых интерфейсах, хотя это нужно далеко не всем. Установим пакет:
Далее открываем в редакторе файл /etc/minidlna.conf и приступаем к настройке. Первым делом надо указать директорию с медиа-файлами. Поскольку мы собираемся отдавать только видео то надо так же явно это обозначить:
Чтобы упростить клиентам навигацию укажем начальный путь обзора на сервере:
В параметре «network_interface» перечислим через запятую интерфейсы, на которых будет слушать наш сервер:
Ну и напоследок в параметре «friendly_name» укажем имя нашего сервера, которое будут видеть все клиенты:
На этом настройка сервера заканчивается и остаётся только перезапустить сервис для применения настроек:
Если что-то пойдёт не так то первым делом надо смотреть файл журнала «/var/log/minidlna.log». Статус сервера и список подключенных клиентов можно смотреть на веб-странице «http:// :8200». Выглядит эта страница примерно так:
С клиентскими устройствами так же всё должно быть просто. Многие устройства из коробки поддерживают протокол DLNA. Если у вас устройство на базе Android и штатного приложения для работы с DLNA у вас нет то можно поставить DLNA-браузер, коих очень много в Google Play. Например у автора этих строк хорошо зарекомендовали себя AnDLNA и GinkgoDlna.
Интересную задачку «подкинул» недорогой Smart TV от Akai (Akai LES-32А64М): он был подключен к локальной сети через Ethernet и не имел штатного DLNA-браузера. Казалось бы что задача решается просто: достаточно установить любой DLNA-браузер из Google Play, однако большинство из них (включая указанные выше AnDLNA и GinkgoDlna) работают только с WiFi-соединением и оказывались не способы «найти» DLNA-сервер через Ethernet соединение.
Перебор нескольких десятков приложений привёл к MediaHouse UPnP / DLNA Browser. Это приложение оказалось «всеядным» и спокойно заработало с DLNA-сервером, будучи подключенным к сети через Ethernet-порт:
Для просмотра видео почти все DLNA-браузеры используют внешний плеер. Как оказалось штатный плеер Android на большинстве устройств поддерживает ограниченный набор кодеков. Если возникает проблема при воспроизведении (нет звука и/или видео) то стоит установить сторонний плеер с большим набором кодеков. Хорошим выбором может быть MX Player.
Источник
Домашний медиа сервер minidlna
На кой черт это надо?
Так сложились обстоятельства, что мне удалось скоммуниздить старенький ПК, да и чтобы он просто не пылился, так как такое старье продавать за 5-7 тысяч (цена в моем регионе за подобную конфигурацию) мне стыдно, а получать за него 3 тысячи — ну такое. Я решил, сделаю дома небольшую библиотеку фильмов, музыки, да и у жены очень много фотографий, которые её очень дороги. Задумка была следующей.
Некий медиа сервер, который будет транслировать медиаконтент на телевизор.
Некое локальное хранилище для файлов, порой приходится с флешками побегать, а то жесткого диска на 500ГБ не хватает.
Торрент клиент, который будет качать все что я пожелаю.
Цели поставлены, осталось их реализовать. Вряд ли опытные пользователи найдут здесь что-то полезное для себя, наверное, только начинающие пользователи Linux, так как все действия очень простые в исполнении.
Установка Linux
То, как поставить линукс, я думаю, не стоит говорить. Я просто опишу что я сделал после установки. Во-первых, пока компьютер был возле меня, я настроил статический адрес в файле /etc/netplan/00-installer-config.yaml
Думаю, тут вроде понятно, что где что и как. Конечно, правильнее было бы привязать ip-адрес через роутер, но у меня роутер Xiaomi, и там все в иероглифах. Я просто сделал статический ip-адрес на компьютере. После этого я его отнес в подвал и подключил к роутеру и сел за рабочую машину. Теперь стоит создать пару ssh-ключей для удобства
Ну и отправил ключ на медиа сервер
Теперь настрою файл
И теперь для подключения достаточно написать ssh home ,и последний момент, которой наверное не стоит делать, это убрать ввод пароля при использовании sudo. Для этого достаточно добавить NOPASSWD в файл /etc/sudoerc что бы вышло так
Установка transmission-daemon
И так, начну с торрент-клиента transmiss-daemon.
Так обновятся все пакеты и установится transmiss-daemon. Вообще не рекомендуется ставить без ведома все подряд, но так как у меня система только что установленная, установятся только обновления системных пакетов, и вряд тли что-то сломается. После установки transmission-daemon нужно его выключить для того что произвести настройку.
Если править файл конфигурации /etc/transmission-daemon/settings.json в тот момент как демон работает, изменения не сохранятся. И так мне надо поправить несколько строк, но для начала создам папки куда будет все качаться. Я создам все папки для медиа контента в /media и будет /media/torrent/downloads для загружаемых файлов и /media/torrent/complete для файлов которые уже загрузились
сразу сменю владельца на папки для загрузки на debian-transmission
Теперь можно приступать к настройке transmission. Как уже говорилось, все настройки хранятся в файле /etc/transmission-daemon/settings.json . Нам необходимо поправить несколько строк, а именно
«download-dir»: «/var/lib/transmission-daemon/downloads» — указываем папку куда будут помещаться загруженные файлы, у меня в /media/torrent/complete Лучше указывать полный путь
«incomplete-dir»: «/var/lib/transmission-daemon/Downloads» — указываем папку в которой будут храниться не докачавшиеся файлы, у меня /media/torrent/downloads
«incomplete-dir-enabled»: false — указываем true что бы хранить скачавшиеся файлы отдельно
«rpc-authentication-required»: true — меняем на false для отключения авторизации по логину и паролю, это пожеланию
«rpc-host-whitelist-enabled»: true — меняем на false для отключения использования «белого списка ip-адресов»
«rpc-username»: «transmission» — указываем логин для авторизации
«rpc-whitelist-enabled»: true — опять-таки отключаем авторизацию по разрешенным ip-адресам меняя true на false соответственно
И запуск transmission
и захожу в web-панель transmission по ip-адресу и порту 9091, у меня это 192.168.31.5:9091
web-интерфейс transmission
transmission почти готов теперь настрою проксирование через NGINX
Установка NGINX и настройка проксирования
Я поставил весь nginx, но в теории достаточно и самого пакета nginx
После установки проверю, работает ли веб сервер зайдя на ip-адрес машины
Приветственное сообщение от Nginx
Теперь выполню настройку nginx. Все конфигурационные файлы находятся в /etc/nginx/* . Для начала я удалю все лишнее из файла /etc/nginx/nginx.conf и приведу его к такому виду
И создам файл /etc/nginx/sites-enabled/home.conf с базовым содержимым
Немного объясню файл. listen 80 указываем на каком порту будет слушаться сайт, root /var/wwww/home я создал папку от имени root и поместил туда простую страницу html взятую из интернета для проверки как будет все работать.
html страница скачанная из интернета
Так же я добавил строку 192.168.31.5 home.ru в рабочей машине в файл /etc/hosts для того что бы сайт мог открываться в браузере с рабочей машины по адресу home.ru что и указал в файле home.conf server_name home.ru
Настройка проксирования transmission-daemon через nginx
NGINX вообще мощная фигня, и для того что бы открывать web-панель transmisson через http://home.ru/transmission/ его будет более чем достаточно. Все правки я буду делать в файле /etc/nginx/sites-enabled/home.conf для начала добавлю новый location и в нём укажу что бы он проксировал запрос с home.ru/transmission/ на 127.0.0.1:9091
блок location для transmission
Перенаправление пошло, но вот только transmission жалуется на отсутствие хедера X-Transmission-Id . Немного поковырявши хедеры, так же добавив 2 блока location мне удалось завести transmission. Вот полный файл конфигурации
полный файл home.conf
Написание скрипта
Так сложилось, что у меня телевизор Samsung толком не воспроизводит видео в формате avi, а если и воспроизводит то как то криво. Нельзя перемотать, длительность фильма такая — что люди стока не живут, да и самое неприятное заключается в том что посреди фильма он может просто оборваться. А вот формат mkv он ест нормально. И поэтому я решил написать небольшой скрипт на bash который будет запускать сам transmission-daemon после загрузки файла. Немного подумав над логикой и посмотрев как качаются разные файлы, выстроил себе цепочку действий. Во-первых надо понять, скачалась папка или файл. Если папка, то создать такую же папку в директории для DNLA сервера, если файл, то пропускаем. Возвращаемся к папке, теперь смотрим на содержимое папки, если файлы avi то конвертируем их через ffmpeg в конечную папку, если в папке файлы mkv то просто перемещаю их, но если там то-то другое, просто кидаю в /tmp для дальнейшего анализа. Теперь возвращаемся к началу скрипта, если же это не папка, а файл то, смотрим на формат и при необходимости конвертируем. Вроде ничего сложного, вот сам скрипт
Скрипт далек от идеала, может потом его доработаю под собственные нужды, например что бы скачанные файлы .iso перемещались сразу в папку для шаринга. Так же он отправляет в телеграм уведомление о загруженном файле, и если есть ошибки, он тоже об этом сообщит. Скрипт писал на быструю руку, и он не проходит по вложенным папкам, если будет в этом необходимость то его поправлю. На данный момент он выполняет то что мне и надо. После того как скрипт написан, и я определился с конечными папками, перемещаю скрипт к transmission
даю скрипту права на исполнения
и меняю владельца
После останавливаю transmission-daemon
и меняю 2 параметра в /etc/transmission-daemon/setings.json
done-enabled перевожу на true, то-есть включаю активацию скрипта по окончанию загрузки, а done-file указываю полный путь к файлу, можно указать только название файла если файл лежит в папке transmission, но мне легче указать полный путь.
Установка медиа сервера
В качестве медиа сервера DNLA я выбрал minidlna. Ставится из репозитория ubuntu, прост в настройке.
Файл конфигурации находится /etc/minidlna.conf , я в нем внес несколько правок, а именно, указал где находятся медиаконтент
Указал где хранить базу данных файлов minidlna
Указал куда писать логи
и указал имя сервера
и в конце перезапустил сервер
И получил результат
Напоследок
Писать о том как я настроил временно samba не буду. Есть очень много мануалов в котором все описано куда лучше, чем смогу описать я, но хочу поделится несколькими мыслями на будущие) Целый комп для этого излишнее, тем более у меня есть роутер с прошивкой OpenWRT на котором можно все это реализовать, но жена мне раз дала идею сделать мониторинг цен. Я такое уже делал, написал небольшой скрипт на bash который парсил страницу, брал оттуда название товара, картинку и цену. Скрипт запускался через cron. Идея неплохая, но для каждого сайта необходимо делать свой шаблон. И скорее всего сайты по типу Wildberries при авторизации будут показывать другую цену. Идею думаю реализовать на C++, которые будут брать ссылку для просмотра из БД и смотреть на цену. Если цена записанная в БД будет больше, то отправлять сообщение в том же телеграме о том что на такой-то товар ценна изменилась. Да и для разных экспериментов и обучения можно поднимать сервере виртуальную машину и её ковырять. Так же есть идея реализовать некую запись телепередач. У нас нет обычного телевидения, есть всего 1 канал XD, и жена смотрит несколько передач. Думаю просто настроить запись их в тот же медиа сервер. Но все это планы, желание на исполнения не много.
Я впервые пишу такой длинный текст, и вообще в первые куда-то пишу по мимо личных сообщений. Не судите строго.
Источник