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 не допомогло