Наверное, каждый, у кого имеется несколько устройств, способных воспроизводить мультимедиа-контент, задумывался о настройке стримингового сервиса в своей сети. В данной статье мы подробно рассмотрим, как можно это реализовать.
Введение
DLNA (Digital Living Network Alliance) — это стандарт, позволяющий в реальном времени транслировать любой мультимедиа-контент внутри локальной сети и отображать его на любых совместимых устройствах.
В настоящее время существует огромное количество реализаций DLNA серверов: как свободных, так и проприетарных. Мы же рассмотрим самый простой и быстрый на наш взгляд — minidlna.
Установка сервера
Для начала подключим репозитории RPM Fusion. Информацию о том, как это сделать, можно найти в данной статье.
Установим пакет minidlna:
sudo dnf install minidlna
Активируем и запустим его:
sudo systemctl enable --now minidlna.service
Настройка сервера
Все настройки расположены в файле /etc/minidlna.conf. Откроем его в любом текстовом редакторе с правами суперпользователя и внесём соответствующие правки:
sudoedit /etc/minidlna.conf
Воспользуемся примером уже настроенного и хорошо прокомментированного конфига:
# Порт для HTTP трафика (метаданные, служебная информация) port=8200 # Список сетевых интерфейсов, которые должен слушать сервер. # В закомментированном виде будет слушать все доступные. #network_interface=eth0 # Пользователь, от имени которого будет запущен сервер. user=minidlna # Каталоги с мультимедиа-библиотекой. Если их более одного, # необходимо добавить по одной на каждый. # Допускается через запятую указать тип мультимедиа-контента, # которое должно быть загружено из каждого каталога. Все прочие # в нём будут игнорироваться. # Допустимые типы контента: # * "A" - аудио-файлы; # * "V" - видео-файлы; # * "P" - изображения. # Разрешается их комбинировать, например "AV" - импортировать # из данного каталога аудио и видео, игнорируя изображения. media_dir=V,/media/storage/Video media_dir=A,/media/storage/Music media_dir=P,/media/storage/Wallpapers # Включение или отключения режима общей мультимедиа библиотеки # (содержимое всех каталогов из media_dir будет объединено в # один общий виртуальный). merge_media_dirs=yes # Название DLNA-сервера, которое будет отображаться # на устройствах клиентов. friendly_name=EasyCoding Home DLNA # Каталог для хранения кэшей мультимедиа и различных метаданных. db_dir=/var/cache/minidlna # Каталог для хранения журналов работы мультимедиа-сервера. log_dir=/var/log/minidlna # Уровень детализации журналов работы. log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn # Имена файлов с обложками аудио-файлов. Minidlna будет искать их # в каталогах с аудио и отображать на клиентах. Имена файлов # регистрозависимы, а в качестве разделителя используется прямой слэш ("/"). album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg # Включение или отключение мониторинга каталогов медиа-библиотеки. Новые # файлы будут добавляться в базу в реальном времени. inotify=yes # Включение или отключение режима стриминга .jpg и .mp3 файлов на TiVo # с поддержкой HMO. enable_tivo=no # Включение или отключение режима жёсткого следования стандартам. # Это может повлечь за собой пережатие контента в иной формат. strict_dlna=no # Страница сервера с MOTD в интрасети или Интернете (не обязательно). #presentation_url=http://www.mylan/index.php # Интервал опроса каталогов медиа-библиотеки если мониторинг включён. notify_interval=900 # Серийный номер и идентификатор модели виртуального устройства сервера, # который будет передаваться клиентам во время рукопожатия. serial=15AC0D6F2 model_number=1 # Путь к локальному сокету minidlna. minissdpdsocket=/var/run/minissdpd.sock # Переопределение корневого каталога в структуре медиа-библиотеки. # Допустимые значения: # + "." - стандартный контейнер; # + "B" - "просмотр каталога"; # + "M" - "музыка"; # + "V" - "видео"; # + "P" - "изображения". root_container=. # Включение или отключение режима принудительности сортировки файлов в # библиотеки вне зависимости от предпочтений клиентов. force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title # Максимальное количество одновременно подключённых клиентов. max_connections=50
По окончании настройки обязательно перезапустим сервис:
sudo systemctl restart minidlna.service
Настройка межсетевого экрана
Для своей работы DLNA-сервер использует стандартные порты 8200/tcp (передача метаданных и работа с клиентами; основан на HTTP) и 1900/udp (непосредственно стриминг мультимедийного контенета). Откроем их средствами Firewalld:
sudo firewall-cmd --add-service=minidlna --permanent
Применим новые правила Firewalld:
sudo firewall-cmd --reload
Теперь minidlna сервер должен быть доступен для всех подключённых устройств внутри локальной сети.
Настройка медиа-библиотеки
В дистрибутиве Fedora по умолчанию применяется мандатная система контроля доступа SELinux, которая настроена на ограничение по принципу «запрещено всё, что не разрешено», поэтому minidlna не получит доступ к медиа-библиотеке если она распложена в одном из домашних каталогов пользователей.
В качестве оптимального решения рекомендуется размещать её на отдельном разделе, смонтированном например как /media/storage.