Уже более года в качестве медиацентра использую KODI. Начиналось всё с каких-то базовых вещей, но даже от такого функционала я был в полном восторге. Просмотр ТВ, фильмов и сериалов теперь не выглядит каким-то квестом, а все мои домашние также полюбили KODI, и я даже не представляю, как раньше могли справляться без него. Но я все больше погружался в его возможности и постепенно наращивал функционал. Реализовал, казалось бы, простые вещи, но, если сложить все мелкие детали воедино – понимаешь, насколько все комфортно, логично и продумано, а главное - функционально. Именно такую оценку я даю всему конечному результату. Для кого-то это будет вовсе не так, конечно, ведь у всех «свои фломастеры». Но после первых публикаций я получил массу положительных откликов от аудитории и гостей хабра, и понял, что кому-то пригодился мой опыт. Это приятно. Поэтому, хочется продолжать. Если вы пропустили предыдущие публикации – обязательно загляните в них, возможно и для вас найдется что-то интересное. Если в двух словах – установили и настроили с нуля ОС и KODI, настроили просмотр торрент-контента, YouTube, IPTV. Поговорили об управлении с других устройств, резервном копировании, анализе трафика и даже научили KODI запускать ретро-игры. К сожалению, объем одной публикации на хабре ограничен, потому всё, чем хотел бы поделиться никак не уместить в один пост. Разделил на несколько частей... В предыдущих и последующих публикациях было рассмотрено множество других «плюшек». Если пропустили - обязательно загляните...Часть 1. Аппаратная часть, подготовка ОС, базовая настройка сервера и KodiЧасть 2. YouTube, qBittorrent, управление Yatse и Kore, учет трафика VnStatЧасть 3. Ретро-игрыЧасть 4. Архив IPTVЧасть 5. Яндекс.МузыкаЧасть 6. MariaDB и синхронизация медиатекиЧасть 7. Управление iOS-устройствомЧасть 8. Telegram-бот для qBittorrentЧасть 9. SpotifyЧасть 10. IVI и NetflixЧасть 11. Kodi+Plex Среди медиаустройств, в моем домашнем обиходе – два телевизора. Основной – в гостиной работает с KODI, второй – на кухне под управлением Tizen OS. Мысль о том, что последнего также нужно посадить на KODI возникла спустя пару недель после запуска медиацентра на основном телевизоре. Но руки все никак не доходили… Каждый раз, переключая ужасного качества каналы кабельного ТВ на кухне, я вспоминал о своей затее. И вот пришло время воплотить ее в жизнь. Для этой задачи в поднебесной был заказан Raspberry Pi 3 и все та же аэромышь, как и для основного телевизора (подробнее о ней в первой части). Итого, в гостиной – KODI на базе неттопа с Kubuntu 20.04 на борту, на кухне – LibreELEC на базе третьей малинки. «Кухонный» медиацентр должен выполнять всего две задачи: просмотр IPTV. Буду использовать все тот же сервис ZeDom IPTV и дополнение PVR IPTV Simple Client. К слову, сервис позволяет использовать плейлист на двух устройствах без дополнительной платы за тариф. просмотр торрент-видео. Потому как локальной библиотеки фильмов и сериалов у меня нет. О том, как установить LibreELEC на малинку описывать, думаю, не стоит. А как подключить IPTV и Elementum для просмотра торрентов я рассказывал в другой публикации. Общее понимание архитектуры есть, причем же здесь MariaDB в заголовке? Представьте, вы смотрите фильм в гостиной, идете обедать на кухню и продолжаете просмотр ровно с того места, на котором остановились. Здорово, не правда ли? KODI позволяет реализовать синхронизацию медиатеки на разных устройствах. Для этого потребуется MySQL-сервер, на котором и будет храниться эта медиатека. Сервер может быть поднят на совершенно сторонней машине, хоть под управлением Windows. В моем случае, основной медиацентр работает 24/7, аппаратные ресурсы позволяют – сервером назначаем его, на нем и будем поднимать базу данных. Надеюсь, суть и прелести такой архитектуры домашних медиацентров понятна. Прочитав Wiki на официальном сайте KODI, решил, что все довольно просто и понятно – бери и делай. Но на практике оказалось все иначе – БД не наполняется моей медиатекой, в логах ошибки не поддаются пониманию или записей нет вообще, от того понять, что сделано не так – достаточно трудно. Второе устройство подключать к БД смысла нет – синхронизировать нечего. В комментариях к предыдущей публикации был затронут этот вопрос и @vyacheslavteplyakov дал понять, что Wiki не обновляется и информация, вероятно, устарела. Но и указал на основные подводные камни и как их обойти. Использовать MariaDB; Медиатека должна быть размещена в сетевом каталоге;  Все пути к медиатеке на всех устройствах должны быть абсолютные; Сетевые каталоги – NFS или SMB, если вынуждены использовать NTFS, то только с авторизацией по учетной записи с паролем; Версии KODI на всех устройствах должны быть одинаковы. С задачей и подводными камнями разобрались – приступаем к работе. Напомню, сервером у нас будет KODI на неттопе с Kubuntu 20.04. Устанавливаем сервер MariaDB Cледующим шагом является запуск встроенного скрипта безопасности. Этот скрипт меняет ряд наименее защищенных опций, используемых по умолчанию, для таких функций, как, например, удаленный вход для пользователя root и тестовые пользователи. Запускаем скрипт безопасности Откроется серия диалогов, где можно внести некоторые изменения в параметры безопасности установки MariaDB. Параметры установите, исходя из собственной безопасности. Учитывая, что моя БД будет наполняться лишь медиатекой и находится она в изолированной домашней сети – сделал так: Оставляем пользователя root без пароля. Ничего не вводим, нажимаем ENTER. Отклоняем (N). Удаляем анонимных пользователей (Y). Оставим возможность удаленного подключения для пользователя root. Отклоняем (N). Удаляем тестовую БД, она нам ни к чему (Y). Обновляем таблицу привилегий. Соглашаемся (Y). Теперь создадим пользователя, из-под которого будут работать с БД наши медиацентры. Для создания пользователя kodi с паролем kodi запускаем оболочку MariaDB и выполняем команду Разрешаем доступ с любого хоста ко всем базам данных на сервере для пользователя kodi Очищаем привилегии, чтобы они были сохранены и доступны в текущем сеансе Оболочку MariaDB можно закрывать, выполнив команду Для организации доступа вне локального хоста, необходимо указать порт 3306 и bind-address 0.0.0.0. Открываем конфигурационный файл MariaDB Раскомментировать параметр Для параметра bind-address установить 0.0.0.0 (вместо 127.0.0.1) Для применения изменений перезапускаем MySQL-сервер На данном этапе можно проверить, верно ли мы все сделали. Для этого лучше всего подключиться к нашему серверу со сторонней машины. Это гарантирует работоспособность доступа к БД вне локального хоста. Как вариант, можно использовать MySQL Workbench. Connection Method - Standart (TCP/IP)Hostname – 192.168.0.50 (заменить на адрес вашего сервера)Port – 3306Username – kodi (имя пользователя, если создавали своего) Нажимаем «Test Connection», вводим пароль и в случае, если все корректно – получаем соответствующее сообщение: Подключение к серверу также должно быть успешным. Вы должны увидеть «ничего». Это тоже хороший знак. Настройка сервера MariaDB завершена, сейчас мы займемся наполнением базы данных нашей медиатекой. Как и говорил выше, медиатека должна быть размещена в сетевом каталоге, так как она будет одна на все устройства. В моем случае библиотека фильмов и сериалов состоит не из локальных медиафайлов, а наполняется из торрент-трекеров дополнения Elementum. Библиотеку мы настраивали еще в первой части. Никуда ее не переносим, пути оставляем прежние:/mnt/kodi/library/Movies – библиотека фильмов/mnt/kodi/library/Shows – библиотека сериалов Необходимо лишь расшарить каталог /mnt/kodi/library. Конфигурируем samba В конец конфигурационного файла вставляем: И перезапускаем сервис samba Теперь наша библиотека будет доступна всем устройствам в домашней сети. Важно! В источниках медиатеки также необходимо указать абсолютный путь к директории с файлами библиотеки! Хоть она и находится локально на этом устройстве (сервере). Переходим в «Настройки/Медиа/Медиатека/Видео» и в существующих источниках Movies и Shows изменяем пути на нужные, выбрав «Добавить сетевой адрес». В качестве логина и пароля используйте данные вашей учетной записи в Kubuntu. После изменения путей, источники будут отображаться и в KODI, как сетевые.  Теперь дадим понять KODI, что мы хотим работать с базой данных. Для этого в файле advancedsettings.xml (/home/имя_пользователя/.kodi/userdata/) добавить: Если файл advancedsettings.xml отсутствует – создайте его вручную. Параметры изменить в соответствии с вашими настройками, где:Host – IP-адрес вашего MySQL-сервера;User – имя пользователя MariaDB;Pass – пароль пользователя MariaDB. На стороне сервера всё готово. Можно проверить. Перезапускаем KODI и, в зависимости от объема вашей медиатеки, ждем какое-то время, пока KODI ее обработает. Фильмов – 322Сериалов – 68Сезонов сериалов - 319Эпизодов сериалов - 2254Размер библиотеки - 380 КбОбщее количество файлов (nfo и strm) – 3826 Медиатека такого размера обрабатывалась порядка 10 минут. По завершении обновления, давайте посмотрим на нашу БД. Снова подключаемся к серверу с помощью MySQL Workbench. Как видим, KODI самостоятельно создал БД «MyVideos119» и наполнил ее всеми нашими фильмами и сериалами. Например, в таблице «Movie» - фильмы. Значит, мы все сделали правильно. После завершения импорта медиатеки в БД, можно еще оценить и ее ресурсопотребление. Моя медиатека заняла в ОЗУ чуть более 100 Мб. Это дает понять, что, даже значительный рост количества фильмов и сериалов, не скажется на производительности основного моего медиацентра. Настройки других устройств, которые необходимо синхронизировать с сервером, очень просты: advancedsettings – настраиваем, также как на сервере; добавляем источники в «Настройки/Медиа/Медиатека/Видео» также, как и на сервере, указывая абсолютные сетевые пути; если вы, как и я используете дополнение Elementum – в его настройках также изменить пути на абсолютные до сервера (путь к библиотеке и путь к торрент-файлам). Таким образом, где бы вы не начали смотреть (скачивать) фильм, сохранится он на сервере. Да и в моем случае, не рационально было бы для малинки иметь свое файловое хранилище. Для упрощения настройки своей малинки я просто перенес конфигурационные файлы с основного медиацентра: /home/kodi/.kodi/userdata/advancedsettings.xml/home/kodi/.kodi/userdata/sources.xml/home/kodi/.kodi/userdata/addon_data/plugin.video.elementum/settings.xml/home/kodi/.kodi/userdata/addon_data/script.elementum.burst/settings.xml По завершении настройки, перезапускаем KODI и наблюдаем, как пустая библиотека начинает наполняться и полностью соответствует библиотеке на основном медиацентре, вплоть до просмотренных или не просмотренных серий, а также просматриваемые сейчас и даже с временной меткой, на которой был остановлен просмотр. Все мои медиацентры работают только с библиотекой видео. Если у вас есть аудиобиблиотека, вы точно также можете синхронизировать и ее на всех устройствах. Для этого в файле advancedsettings.xml укажите параметры для musicdatabase Конфигурационный файл advancedsettings.xml достаточно гибко настраивается, например наша секция videolibrary может принять еще несколько параметров. Я их не использовал, но кому-то это может и пригодится - ссылка. Проделав этот путь, понимаешь, что все было так просто, но в тоже время – не так и очевидно с первого взгляда.  Надеюсь, кому-то мой опыт поможет избежать зря потраченных сил и времени. Если мой медиацентр обзаведется еще какими-то интересными возможностями - обязательно сделаю отчет в следующих публикациях. Всем хорошего времяпрепровождения с медиацентром KODI!