Dlna сервер для linux debian

Налаштовуємо домашній DLNA-сервер на базі MiniDLNA, він же ReadyMedia в Linux Debian або Ubuntu Server.

установка MiniDLNA

Найпростішим способом установки є, установка пакета зі сховищ вашого дистрибутива:

Якщо у вашому дистрибутиві пакет відсутній, MiniDLNA можна встановити з початкових кодів.

У репозиторії Debian 7 доступний пакет з версією 1.0.24, версія хоча і не найсвіжіша, але цілком робоча. На момент написання цих рядків, з ключових змін, у версії 1.1.1 була реалізована підтримка динамічних мережевих інтерфейсів. Якщо потрібно підняти DLNA-сервер на Wi-Fi інтерфейсі, або при запуску виникає помилка: "No IPaddress automatically detected!". Значить, необхідно встановити останню версію MiniDLNA з початкових кодів.

У разі успішного встановлення пакета, переходимо до розділу: "Налаштування MiniDLNA", інакше Новомосковськ далі.

установка Sudo

Якщо у вашій системі відсутній команда sudo, бажано її встановити. Sudo нам буде потрібно в процесі настройки, для тестування прав доступу до папок з медіа-файлами.

Додаємо користувача в групу sudo:

Виходимо з системи і входимо заново, щоб зміна групи вступило в силу.

Установка MiniDLNA з початкових кодів

Встановлюємо складальні залежності:

Якщо при установці залежностей виникає помилка: "Неможливо знайти пакет з вихідним кодом для 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, створеного на попередньому кроці:

Задаємо шлях до лог-файлу:

Налаштування MiniDLNA

Правимо файл конфігурації:

Як мінімум, потрібно задати шлях до папки з медіа-файлами, параметр: "media_dir". Також можна задати ім'я сервера, що відображається клієнтом, параметр: "friendly_name".

У разі якщо наш DLNA-сервер за сумісництвом є інтернет-шлюзом, також необхідно задати внутрішній мережевий інтерфейс, параметр: "network_interface".

Перевіряємо параметри init-скрипта / etc / default / minidlna:

Зазвичай коригування не потрібно. Якщо файл відсутній, при первинній установці з початкових кодів, копіюємо лістинг:

Оскільки служба працює під користувачем з обмеженими правами, що публікуються папки і файли повинні бути доступні на читання для всіх користувачів, отже, мати дозволу 644: "rw- r-- r--", для файлів і 755: "rwx rx rx", для папок.

Перевіряємо доступність для кожної папки, заданої в 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 додамо рядки:

Або копіпастом команди:

Зміна параметра вступить в силу після перезавантаження системи.

Налаштування DLNA / UPnP-AV сервера завершена.

Якщо замість повідомлень і папок-контейнерів MiniDLNA відображаються знаки питання, відключаємо локалізацію.

Якщо був встановлений пакет:

При установці з вихідних:

Перезапускаємо MiniDLNA з повторним скануванням бібліотеки:

Сканування медіа-бібліотеки MiniDLNA

При появі помилок в каталозі, необхідно виконати повторне сканування файлів.

При використанні наведеного вище init-скрипта, щоб почати інсталяцію медіа-бібліотеки використовуємо команду:

Служба при цьому буде перезапущено, підключені клієнти будуть відключені.

У системах на базі systemd зазначена вище команда більше не працює. Найпростішим способом поновлення бібліотеки залишається ручне видалення бази даних і перезапуск служби:

Для сканування медіа-бібліотеки при кожному старті системи можна задати ключ запуску: "-R" в параметрі DAEMON_OPTS в файлі / etc / default / 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-серверів і клієнтів в Вікіпедії.

Доброго дня. Проблема полягає в тому, що при завантаженні системи (завжди) або при перезапуску мінідлна (не завжди) в бібліотеці немає файлів, хоча вони там присутні. в балці відсутня "сканування" при запуску сервісу (як я зрозумів при додаванні опції DAEMON_OPTS = "- R" відбувається сканування при запуску). будь-які помилки в балці також відсутні. force-reload не допомагає. inotify включено, період зробив 30 сек. помітив, сканування відбувається тільки в разі зміни змісту бібліотеки (як я розумію це спрацьовує саме inotify)

Ніколи не стикався з подібною проблемою. Але подібна скарга не перша.

У мене Inotify працював справно на Debian 6, далі на Debian 7, тепер перейшов на Gentoo, і тут ніяких проблем. Крім Глюка з перейменуванням.

Який дистрибутив використовуєте? Яка версія дистрибутива? На який файлової системі зберігаються медіа-файли? Спробую затестіть на віртуальній машині.

Перевірив в виртуалке на чистій Ubuntu 14.04 Server.

Inontify працює, проблеми не бачу.

Шукайте мани по налаштуванню і тестуванню inotify. Перевірте, чи працює inotify в інших програмах.

Поставте в виртуалку чисту систему і MiniDLNA, потім переносите настройки з робочого сервера, шукайте, після яких змін виникає проблема.

minidlna.c: 367: fatal: Failed to clean old file cache! Exiting.
Що б це могло означати? Minidlna запускається тільки через команду "minidlna -d -f /conf/minidlna.conf" при цьому не залишаючи ніяких записів в балці, запуск же з автозавантаження і через команди "sudo service minidlna force-reload" і
"Sudo systemctl restart minidlna" призводить до такого запису в балці, відповідно minidlna не починається. Видалення БД і Art_cache не допомогло