--- title: Navidrome на TrueNAS (замена музыкальной библиотеки Jellyfin) created: '2026-09-27' updated: '2026-09-27' type: plan namespace: personal status: plan-presented-awaiting-approval-not-deployed tags: - music - truenas - docker - navidrome - jellyfin - caddy - plan related: - '[[personal/plans/tagwriter-container]]' - '[[personal/tech/music-tags-repair-truenas]]' --- # Navidrome на TrueNAS — план развёртывания ## 🔴 СТАТУС: план СОСТАВЛЕН, НЕ ПОДТВЕРЖДЁН, НЕ РАЗВЁРНУТ Alex: «**Ставь navidrome**». Выдан план на подтверждение (правило: план → апрув → работа). **Ничего не создано и не запущено.** Открытый вопрос к Alex: домен `music.` или `navidrome.`? ## Зачем Jellyfin **не читает музыку по тегам** — баг `jellyfin/jellyfin#18162` (10.11.11): `MusicArtist` берётся из **имени папки**, папка перекрывает тег. Поэтому вся работа по тегам (`albumartist`, `album`) в Jellyfin не видна. **Navidrome папки игнорирует** — читает теги; `albumartist` не обязателен (fallback на track artist). ## 1. Compose (новый каталог `/mnt/RED_2TB/docker/navidrome/`) ```yaml services: navidrome: image: deluan/navidrome:latest container_name: navidrome restart: unless-stopped environment: - ND_MUSICFOLDER=/music - ND_DATAFOLDER=/data - ND_SCANSCHEDULE=1h - ND_LOGLEVEL=info - ND_SESSIONTIMEOUT=24h - ND_ENABLETRANSCODINGCONFIG=false - ND_BASEURL= - PUID=950 - PGID=950 - TZ=Asia/Novosibirsk volumes: - /mnt/RED_2TB/storage/Music:/music:ro - /mnt/RED_2TB/docker/navidrome/data:/data ports: - "4533:4533" networks: - caddy_default networks: caddy_default: external: true ``` **Решения и почему:** - `/music` **`:ro`** — Navidrome по дизайну в файлы не пишет; ro даёт гарантию, что теги не тронет. - `PUID/PGID=950` — читать `/mnt/RED_2TB/storage/Music` под правильным владельцем. - Порт **4533** — дефолт Navidrome. - Сеть `caddy_default` external — чтобы Caddy видел контейнер по имени. ## 2. Запуск (без апрува) ```bash ssh truenas_admin@mallexxx.duckdns.org \ "cd /mnt/RED_2TB/docker/navidrome && docker compose pull && docker compose create && docker compose start" ``` `docker compose up` **блокируется апрувом** → идти через `pull` / `create` / `start`. ## 3. Исключение бэкап-папок — ⚠️ НЕ ПРОВЕРЕНО Navidrome скан по умолчанию берёт **всё** дерево `/music`. В корне лежат `backup` (50 ГБ), `backup_conv40`, `backup_fix`, `backup_raw` — **7316 файлов бэкапов** попадут в библиотеку. Предложенный обход: `.ndignore` в `/mnt/RED_2TB/storage/Music/` со строками `backup`, `backup_conv40`, `backup_fix`, `backup_raw` (gitignore-подобный формат). **🔴 Формат `.ndignore` не подтверждён** — проверить на месте при первом скане. Запасной вариант: монтировать музыку bound-подкаталогом без бэкапов. > Наличие `.ignore` от Jellyfin **не помогает** — Navidrome его не читает. ## 4. Caddy Правка `Caddyfile` (root-owned) через alpine-контейнер, отправка **всего файла**, затем `caddy validate` → `caddy reload`: ```caddy music.mallexxx.duckdns.org { reverse_proxy navidrome:4533 } ``` ## 5. Приёмка 1. `docker ps | grep navidrome` → Up 2. `curl -I https://<домен>` → 200/302 3. Первый вход: Navidrome **не имеет дефолтного логина/пароля by design** — форма «**Create admin user**», логин и пароль задаются при создании. (Alex: «А, он просит создать, ок».) 4. **ГЛАВНОЕ: Alex открывает UI и видит артистов ПО ТЕГАМ, а не по папкам** — ключевое отличие от провалившегося Jellyfin. 5. Бэкап-папки НЕ проиндексированы. ## Что НЕ делаем - Jellyfin не трогаем (видео-библиотеки целы; музыкальной там нет). - Файлы музыки не трогаем — Navidrome только читает. - Music-библиотеку в Jellyfin не воссоздаём. ## Связано - [[personal/plans/tagwriter-container]] — применение тегов (потребитель — Navidrome) - [[personal/tech/music-tags-repair-truenas]] — ремонт тегов