Files
obsidian-vault/family/how-to/navidrome-truenas-android.md
T

9.3 KiB
Executable File
Raw Blame History

Музыкальный плеер с TrueNAS на Android

Статус: 📋 Планируется — 🟢 блокер СНЯТ, вариант 1 (Navidrome) стал основным кандидатом Дата: 2026-05-10 Обновлено: 2026-09-27 (v3 — исправлено ошибочное утверждение о движке)

🔴 ИСПРАВЛЕНО 2026-09-27: Navidrome ≠ Jellyfin по поведению движка

Прежнее утверждение этой заметки: «Navidrome раскладывает библиотеку по тегам ТАК ЖЕ, как Jellyfin» — НЕВЕРНО. Проверено по официальной доке и GitHub Navidrome. Разница принципиальная, и она как раз в нашу пользу.

Jellyfin (баг #18162) Navidrome
Источник имени артиста имя папки перекрывает тег только тег
Структура папок требуется Artist/Album/Track игнорируется полностью
Наша структура категория/подпапка/файл ломает навигацию работает как есть
Интернет-метаданные артистов тянет из MusicBrainz → левые артисты не тянет
Пишет в файлы может никогда (by design)

Официальная дока Navidrome (Tagging Guidelines), прямая цитата:

«Navidrome organizes your music library entirely based on the metadata tags in your audio files. Unlike some music players, it does not use folder names or file names to group tracks.»

GitHub Navidrome #3355:

«Being tag-based means it does not care for the folder structure... You can even put your whole library in just one folder, and as long as the files are tagged properly, Navidrome will organize your library correctly.»

Почему это важно: именно баг Jellyfin #18162 сорвал приёмку Music-библиотеки 2026-09-27 (навигация по папкам: Letuchuj korabl, Vinni pooh). Navidrome этого бага не имеет. Разбор — personal/tech/jellyfin-tags-cp1251-unreadable.

Задача

Поднять стриминг музыки с TrueNAS (/mnt/RED_2TB/storage/Music/) на Android-устройства.

Варианты

✅ Вариант 1 — Navidrome + Symfonium (рекомендован, ОСНОВНОЙ)

  • Сервер: Navidrome — лёгкий музыкальный сервер, Docker-образ
  • Плеер Android: Symfonium — Subsonic API, офлайн-кэш, теги, обложки
  • Работает через интернет по порту, можно за nginx reverse proxy
  • Docker уже есть: /mnt/RED_2TB/docker/
  • Ключевое преимущество: читает теги, игнорирует папки — наша структура категорий не мешает

Вариант 2 — Jellyfin + Finamp

  • Сервер: Jellyfin (Docker) — универсален (видео, фото, музыка)
  • Плеер Android: Finamp — опенсорс
  • ⚠️ 🔴 ПРОВАЛЕНО 2026-09-27: музыкальная библиотека построена по папкам, не по тегам (баг #18162). Приёмка Alex не пройдена, библиотека удалена, БД восстановлена. Пока не исправлено в upstream — для музыки не годится.

Вариант 3 — SMB напрямую

  • Без сервера, VLC или Solid Explorer играют по SMB
  • Только для домашней сети — по интернету медленно и небезопасно
  • ✅ Запасной вариант: не зависит ни от тегов, ни от движка

✅ Блокер снят (был: «теги массово битые»)

🔴 Общий блокер для ВСЕХ вариантов (найдено 2026-09-26): Теги в Music/ массово битые — mojibake 2759, lost 662, empty 1026, partial 2920, clean только 537.

АКТУАЛЬНО 2026-09-27: ремонт тегов (волна 38) выполнен — artist/title/album заполнены, мойибаке нет, теги в UTF-16 с BOM. Цифры выше относятся к состоянию ДО волны 38 и устарели.

⚠️ Но выявлен новый пробел: в файлах отсутствует TPE2 (albumartist) — проверено 154/154. Его не было в плане правок (tag-fix-plan.csv не содержит колонки album_artist).

✅ ALBUMARTIST для Navidrome — НЕ обязателен (проверено 2026-09-27)

Не блокирует запуск. Мейнтейнер Navidrome deluan (обсуждение #5924):

«when an album artist tag is missing, Navidrome substitutes the track artist in its place»

Ситуация Результат
ALBUMARTIST у всех треков 1 альбом ✅
Нет ALBUMARTIST, сольный альбом 1 альбом ✅
Нет ALBUMARTIST, 4 фита 5 альбомов вместо 1 ❌
Нет ALBUMARTIST, сборник 18 треков до 18 альбомов ❌

Обход без правки файлов — конфиг:

PID.Album = "musicbrainz_albumid|albumartist,album,albumversion,releasedate"

🔑 Сырое albumartist, НЕ albumartistid (тот никогда не пуст). folder в спеку класть нельзя. ⚠️ Смена PID.Album → полный рескан + новые ID → бэкапить navidrome.db.

✅ Новые закачки тегирует Lidarr сам

Lidarr матчит по MusicBrainz release groups и пишет полные теги, включая Album Artist (действие Write Metadata Tags). Связка navidrome-lidarr-bridge — закачанное Lidarr'ом подхватывается Navidrome автоматически.

⚠️ Что реально стоит починить до запуска: СЕМАНТИКА artist

Файлы !Классика содержат семантически мусорные artist — формально валидные теги:

artist=Классика в современной обработке     ← это не артист
artist=Классика для детей П.И. Чайковский    ← это не артист
artist=Maria Makarova (organ)                ← исполнитель вместо композитора

Navidrome покажет их как артистов — надо смотреть и чистить.

Детали — personal/tech/jellyfin-tags-cp1251-unreadable §ИНВЕНТАРИЗАЦИЯ.

Следующие шаги

  • Сначала: ремонт тегов 7906 файлов → ✅ выполнен (волна 38)
  • 🔴 АКТИВНО (2026-09-27): ремонт artist + albumartist по 7861 файлу — правила Alex зафиксированы, идёт ручная разбивка по группам. План — personal/plans/music-artist-albumartist-repair - albumartist: сборник → Various Artists, детские → Детские песни, сказки → Сказки - artist: из скобок в имени файла, иначе искать в интернете - мойибаке 492 файла — расшифровывать CP1251→UTF-8, не маскировать
  • Аудит семантики artist — убрать «Классика в современной обработке» и подобное (поглощён задачей выше)
  • Собрать TPE2 по плану выше (нужен НОВЫЙ план правок с колонкой album_artist — в tag-fix-plan.csv её не было)
  • Поднять Navidrome в Docker на TrueNAS
  • Пробросить порт / настроить Caddy subdomain (Caddyfile root-owned → через alpine-контейнер)
  • Установить Symfonium на Android, подключить

Связанные заметки