Files
obsidian-vault/personal/plans/navidrome-truenas.md
T

5.1 KiB
Executable File
Raw Blame History

title, created, updated, type, namespace, status, tags, related
title created updated type namespace status tags related
Navidrome на TrueNAS (замена музыкальной библиотеки Jellyfin) 2026-09-27 2026-09-27 plan personal plan-presented-awaiting-approval-not-deployed
music
truenas
docker
navidrome
jellyfin
caddy
plan
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/)

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. Запуск (без апрува)

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:

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 не воссоздаём.

Связано