DLNA сервер для Linux Debian / Ubuntu на базе MiniDLNA
Настраиваем домашний DLNA-сервер на базе MiniDLNA, он же ReadyMedia в Linux Debian или Ubuntu Server.
Содержание
Установка MiniDLNA
Простейшим способом установки является, установка пакета из репозитория вашего дистрибутива:
Установка Sudo
Если в вашей системе отсутствует команда sudo, желательно ее установить. Sudo нам потребуется в процессе настройки, для тестирования прав доступа к папкам с медиа-файлами.
Добавляем пользователя в группу sudo:
Выходим из системы и входим заново, чтобы изменение группы вступило в силу.
Настройка MiniDLNA
Правим файл конфигурации:
Как минимум, потребуется задать путь к папке с медиа-файлами, параметр: «media_dir». Также можно задать имя сервера, отображаемое клиентом, параметр: «friendly_name».
В случае если наш DLNA-сервер по совместительству является интернет-шлюзом, также необходимо задать внутренний сетевой интерфейс, параметр: «network_interface».
Параметры в комментариях файла конфигурации содержат значения по умолчанию.
Проверяем параметры init-скрипта /etc/default/minidlna:
Обычно корректировка не требуется. Если файл отсутствует, при первичной установке из исходников, копируем листинг:
Поскольку служба работает под пользователем с ограниченными правами, публикуемые папки и файлы должны быть доступны на чтение для всех пользователей, следовательно, иметь разрешения 644: » rw- r— r— «, для файлов и 755: » rwx r-x r-x «, для папок.
Проверяем доступность для каждой папки, заданной в minidlna.conf, командой:
Если папка недоступна, задаем права доступа:
Вышестоящие папки также должны быть доступны на чтение всем пользователям. Проверяем доступность на чтение каждой папки, указанной в пути. Для вышестоящих папок используем chmod без ключа -R, если не требуется сброс разрешений для всех дочерних файлов и папок.
В качестве альтернативы смене разрешений, можно запустить MiniDLNA от имени пользователя или группы-владельца файлов. Для этого необходимо задать параметры USER и GROUP в /etc/default/minidlna, и сменить владельца папки /var/lib/minidlna командой:
Запуск MiniDLNA
Проверяем, работает ли служба, также смотрим параметры запуска:
Проверяем, слушается ли порт:
В случае успешного старта, лог должен быть примерно следующим:
Если видим: » WARNING: Inotify max_user_watches [8192] is low. «, необходимо увеличить число дескрипторов слежения inotify до 100 000. Для этого в файл /etc/sysctl.conf добавим строки:
Или копипастом команды:
Изменение параметра вступит в силу после перезагрузки системы.
Открываем в браузере http://адрес.сервера:8200, видим количество файлов в библиотеке, начиная с версии 1.1.2, также отображается список подключенных клиентов.
Настройка DLNA/UPnP-AV сервера завершена.
Если вместо сообщений и папок-контейнеров MiniDLNA отображаются знаки вопроса, отключаем локализацию.
Если был установлен пакет:
При установке из исходников:
Перезапускаем MiniDLNA с повторным сканированием библиотеки.
Сканирование медиа-библиотеки MiniDLNA
При появлении ошибок в каталоге, необходимо выполнить повторное сканирование файлов.
Для этого удалим базу Minidlna и перезапустим службу:
Для сканирования медиа-библиотеки при каждом старте системы можно задать ключ запуска: «-R» в параметре DAEMON_OPTS в файле /etc/default/minidlna. Сканирование большой медиа-библиотеки существенно нагружает диск, что может замедлить загрузку системы.
Полное формирование каталога может занять несколько минут. Сканирование папок выполняется в порядке их объявления в конфиге. Файлы из небольших папок, объявленных в конфиге выше, появятся в каталоге в самом начале процесса сканирования. Крупные папки с редко воспроизводимым контентом имеет смысл размещать в конфиге последними.
Установка MiniDLNA из исходников
Дальнейший материал был написан во времена Debian 7 и не тестировался на современных версиях.
Как минимум, инит-скрипты и юнит-файлы берем из deb-пакета.
Устанавливаем сборочные зависимости:
Если при установке зависимостей возникает ошибка: «Невозможно найти пакет с исходным кодом для minidlna». Значит, пакет MiniDLNA отсутствует в вашей версии дистрибутива. В этом случае придется установить зависимости вручную:
Создаем папку для исходников в профиле пользователя и переходим в нее:
Сборка стабильной версии MiniDLNA
Загружаем исходники последней стабильной версии:
С ключом —trust-server-name, будет сохранено исходное имя файла: «minidlna-1.1.4.tar.gz», номер версии может отличаться. Если ключ не указан, файл будет сохранен под именем: «download».
Переходим в папку с исходниками:
Сборка текущей разрабатываемой версии MiniDLNA из Git-репозитория
Для сборки из Git-репозитория, потребуются дополнительные пакеты:
Переходим в папку с исходниками:
Создаем скрипт автоконфигурации:
Установка
Удаляем пакет, если он был установлен ранее:
Устанавливаем собранную версию:
При первичной установке, копируем minidlna.conf в папку /etc:
Если скрипт остался от оригинального пакета Debian, достаточно исправить путь к исполняемому файлу, выделенный красным. Если файл отсутствует, копируем следующий листинг:
Для дистрибутивов на базе Debian 6 в init-скрипте необходимо скорректировать параметр PIDDIR, для современных дистрибутивов корректировка не требуется.
Разрешаем запуск скрипта:
Активируем запуск init-скрипта в rc.d:
По умолчанию служба запускается под пользователем minidlna, создаем учетную запись:
Также, при первичной установке, потребуется создать файл параметров init-скрипта (/etc/default/minidlna), рассмотренный далее, в процессе настройки.
При установке из исходников, minidlna.conf требует дополнительной корректировки. В пакете Debian пути по умолчанию были изменены, теперь их необходимо прописать явно.
Задаем путь для хранения базы данных, используем домашнюю папку пользователя minidlna, созданного на предыдущем шаге:
Задаем путь к лог-файлу:
Отключение запроса способа отображения файлов: All Files, Folders
Настраиваем отображение содержимого папок Music, Pictures, Video без промежуточного запроса способа их отображения.
Частично вопрос можно решить установкой параметра: «root_container=B» в minidlna.conf. При этом сам запрос не отключается, но содержимое папок отображается непосредственно в корневом контейнере.
В случае если устройство, в качестве корневого контейнера, отображает свой собственный стартовый экран, корректировка файла конфигурации не даст результата. Для полного отключения запроса способа отображения файлов, придется внести изменения в код программы.
Отключение виртуальных папок в MiniDLNA версии 1.1.4 и выше
Для версии 1.1.4 применяем патч, и добавляем параметр disable_extended_directories=yes в minidlna.conf. Данный патч войдет в состав следующей версии MiniDLNA, для более поздних версий достаточно задать параметр в файле конфигурации.
Получаем и устанавливаем пакет с исходниками, как описано в разделе: «Установка или обновление MiniDLNA из исходников».
Переходим в папку с исходниками:
Загружаем и применяем патч:
Собираем и устанавливаем исправленную версию:
Редактируем файл конфигурации:
Перезапускаем службу с повторным сканированием медиа-библиотеки:
В системах на базе systemd для повторного сканирования потребуется удалить базу данных вручную:
Отключение виртуальных папок в MiniDLNA версии 1.1.3 и ниже
Получаем и устанавливаем пакет с исходниками, как описано в разделе: «Установка или обновление MiniDLNA из исходников».
Переходим в папку с исходниками:
Необходимые константы идентификаторов папок объявлены в scanner.h
Нам необходимо при запросе папок MUSIC_ID, VIDEO_ID и IMAGE_ID, перенаправить клиента в MUSIC_DIR_ID, VIDEO_DIR_ID и IMAGE_DIR_ID соответственно.
Обработка запросов клиента реализована в файле upnpsoap.c.
Сохраняем резервную копию файла:
Активируем поиск (F6), ищем процедуру: «BrowseContentDirectory».
В начале процедуры выполняется разбор SOAP/XML-запроса, затем его обработка и возврат результата.
Разбор запроса завершается формированием отладочного сообщения:
Далее реализован выбор корневого контейнера в зависимости от конфигурационного параметра root_container:
Сразу после этого блока и перед блоком с запросами к БД добавляем код перенаправления папок для видео, музыки и изображений:
В итоге правленный фрагмент должен выглядеть следующим образом:
Собираем и устанавливаем исправленную версию:
Проверяем результат. Папки должны открываться без запроса способа отображения.
Ссылки
Список DLNA-серверов и клиентов в Википедии.
Linux Mint Forums
Welcome to the Linux Mint forums!
Нужен DLNA сервер
Нужен DLNA сервер
Post by Mnogolik » Thu Jan 28, 2016 1:46 am
Доброго времени суток, прошу Вас помочь подобрать DLNA сервер для Linux Mint 17.3, необходим просмотр фильмов через локальную сеть.
На данный момент пользуюсь Twonky, но проблема в том, что телевизор Philips не видит папки и приходится все запускать с компьютера, но это не удобно.
Пробовал MediaTomb, но при попытке зайти в папку /media (там находятся диски) выпадает ошибка и я не могу расшарить файлы с других дисков.
Попробовал ps3 media server — все хорошо, телевизор его видит, но файлы медиа на теливизоре не запускаются или тормозят, видать из-за транскодирования контента, да на Винде он не дружил с моим телевизором.
Minidlna и Serviio media server мне просто не удалось поставить, т.к. не очень пока знаком с линукс.
Линуксом пользуюсь неделю, до этого 15 лет сидел на Windows.
Прошу подсказать какой dlna сервер, или рабочую инструкцию по установке и настройке.
Re: Нужен DLNA сервер
Post by darvin44in » Sat Feb 06, 2016 11:23 am
Добрый день! Minidlna — советую его — там дел на 3-5 минут. Один файл подправить и все работает — использую его из-за простоты.
Установить:
sudo apt-get install minidlna
Настроить:
sudo gedit /etc/minidlna.conf
.
media_dir=/ваша_директория_с_файлами
.
Сохранить и закрыть файл
Далее перезапуск сервиса:
sudo service minidlna force-reload
Если не отображается содержимое /ваша_директория_с_файлами
Установить разрешения:
sudo chmod 777 -R /ваша_директория_с_файлами
Re: Нужен DLNA сервер
Post by LeoPoldSl » Mon Feb 29, 2016 6:54 pm
Re: Нужен DLNA сервер
Post by DartVader » Fri Mar 11, 2016 7:45 pm
Re: Нужен DLNA сервер
Post by DartVader » Fri Mar 11, 2016 7:56 pm