124 lines
5.1 KiB
Markdown
Executable File
124 lines
5.1 KiB
Markdown
Executable File
---
|
||
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]] — ремонт тегов
|