9.3 KiB
Executable File
Музыкальный плеер с 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/массово битые —mojibake2759,lost662,empty1026,partial2920,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, подключить
Связанные заметки
- personal/tech/jellyfin-tags-cp1251-unreadable — 🔴 почему Jellyfin провалился (баг #18162), сравнение с Navidrome
- personal/tech/music-tags-repair-truenas — ремонт тегов (волна 38)
- family/plans/music-jellyfin-lidarr-taiga — план Music → Jellyfin + Lidarr (Jellyfin-ветка откачена)
- family/how-to/jellyfin-config — Jellyfin как альтернативный музыкальный сервер (Вариант 2)