Files

5.1 KiB
Executable File
Raw Permalink 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 не воссоздаём.

Связано