[2026-09-27] eagle: family/how-to/jellyfin-config.md family/how-to/navidrome-truenas-android.md family/projects/media-toolbox-taiga.md
This commit is contained in:
1 parent
4d62d8608f
commit
128679eb62
3 files changed
+291
-6
No files matched your search
@@ -16,6 +16,12 @@ related:
|
||||
---
|
||||
# Jellyfin Config
|
||||
|
||||
> ✅ **ОБНОВЛЕНО 2026-09-27 (v6): МУЗЫКА УШЛА В NAVIDROME — Jellyfin только для ВИДЕО.**
|
||||
> Navidrome **развёрнут и работает**: `https://music.mallexxx.duckdns.org` (порт 4533),
|
||||
> читает ТЕГИ, папки игнорирует, скан **8043 трека**. Разбор — [[family/how-to/navidrome-truenas-android]] §v4.
|
||||
> **Музыкальную библиотеку в Jellyfin НЕ создавать** — провал из-за бага #18162 подтверждён.
|
||||
> Jellyfin: 6 библиотек (видео), Audio=0, MusicArtist=0, музыкальной библиотеки нет.
|
||||
|
||||
> ✅ **ОБНОВЛЕНО 2026-09-27 (v5): ОТКАТ И ВОССТАНОВЛЕНИЕ ЗАВЕРШЕНЫ.**
|
||||
> Music-библиотека удалена, БД восстановлена на версию до импорта.
|
||||
> Итог: **6 библиотек**, **Audio=0**, **MusicArtist=0**, Music отсутствует, Jellyfin работает.
|
||||
|
||||
@@ -1,8 +1,267 @@
|
||||
# Музыкальный плеер с TrueNAS на Android
|
||||
|
||||
**Статус:** 📋 Планируется — 🟢 **блокер СНЯТ, вариант 1 (Navidrome) стал основным кандидатом**
|
||||
**Статус:** ✅ **РАЗВЁРНУТ 2026-09-27** — Navidrome на TrueNAS, работает, скан завершён (8043 трека)
|
||||
**Дата:** 2026-05-10
|
||||
**Обновлено:** 2026-09-27 (v3 — исправлено ошибочное утверждение о движке)
|
||||
**Обновлено:** 2026-09-27 (v4 — фактический деплой)
|
||||
|
||||
---
|
||||
|
||||
# 🚀 v4: NAVIDROME РАЗВЁРНУТ (2026-09-27)
|
||||
|
||||
> ✅ **Живой сервис: `https://music.mallexxx.duckdns.org`** — HTTP/2, сертификат Let's Encrypt.
|
||||
> Navidrome **v0.64.2**, поднят за **12 минут** от нуля.
|
||||
> **Скан завершён: 8043 трека** (цель 7861 + бэкап-папки исключены — расхождение объяснено ниже).
|
||||
|
||||
## Команда Alex и решение
|
||||
|
||||
Alex: «**Ставь navidrome**» → затем **«Монтируй в rw на всякий»** → **«Поехали»**.
|
||||
Изменение против исходного плана: **музыка монтируется `rw`, не `ro`** (явное решение Alex).
|
||||
|
||||
## Факты живого контейнера
|
||||
|
||||
| Параметр | Значение |
|
||||
|---|---|
|
||||
| Контейнер | `navidrome` (образ `deluan/navidrome:latest`, v0.64.2) |
|
||||
| Compose | `/mnt/RED_2TB/docker/navidrome/docker-compose.yml` |
|
||||
| Порт | `4533:4533` |
|
||||
| Сеть | `caddy_default` |
|
||||
| Данные | `/mnt/RED_2TB/docker/navidrome/data/` (владелец 950:950) |
|
||||
| Музыка | `/mnt/RED_2TB/storage/Music` → `/music` (**`rw`**) |
|
||||
| Домен | `music.mallexxx.duckdns.org` → `reverse_proxy navidrome:4533` |
|
||||
| PUID/PGID | 950/950, `TZ=Asia/Novosibirsk` |
|
||||
| ENV | `ND_MUSICFOLDER=/music`, `ND_DATAFOLDER=/data`, `ND_SCANSCHEDULE=1h`, `ND_SESSIONTIMEOUT=24h` |
|
||||
| Логин/пароль | **НЕТ по умолчанию** — Navidrome при первом входе требует создать админа (форма «Create admin») |
|
||||
|
||||
## ✅ `.ndignore` — механизм исключения бэкап-папок ПОДТВЕРЖДЁН
|
||||
|
||||
**Файл `/mnt/RED_2TB/storage/Music/.ndignore`** (43 байта):
|
||||
```
|
||||
backup
|
||||
backup_conv40
|
||||
backup_fix
|
||||
backup_raw
|
||||
```
|
||||
|
||||
**Формат подтверждён НЕ докой, а строками в бинаре** (`docker exec navidrome strings /app/navidrome`):
|
||||
```
|
||||
Scanner: Error opening .ndignore file
|
||||
Scanner: Error reading .ndignore file
|
||||
Scanner: Ignoring entry matching .ndignore
|
||||
Scanner: .ndignore file is empty, ignoring everything
|
||||
Ignoring change in folder matching .ndignore pattern
|
||||
Scanner: Error marking DB analysis pending
|
||||
```
|
||||
> 🔑 **Приём проверки**: `strings <бинарник> | grep -i ndignore` — быстрее и надёжнее,
|
||||
> чем искать доку. `strings`-вывод подтверждает, что фича вкомпилирована в эту сборку.
|
||||
> ⚠️ **Пустой `.ndignore` = «игнорировать ВСЁ»** (не «не игнорировать ничего») — сообщение
|
||||
> `Scanner: .ndignore file is empty, ignoring everything`. **Не создавать пустым.**
|
||||
|
||||
## ПЛАН ДЕПЛОЯ (выполнен по шагам)
|
||||
|
||||
### Шаг 1 — каталог `/mnt/RED_2TB/docker/navidrome/`
|
||||
|
||||
🔴 **ПИТФОЛЛ: `/mnt/RED_2TB/docker` — root-owned (`drwxr-xr-x root root`), `truenas_admin` не пишет.**
|
||||
`mkdir` через ssh → `Permission denied`. Обход — **`midclt call filesystem.mkdir`** (`truenas_admin` = FULL_ADMIN).
|
||||
|
||||
🔴 **ПИТФОЛЛ: `filesystem.mkdir` НЕ создаёт промежуточные каталоги.** Попытка сразу создать
|
||||
`.../navidrome/data` → `FileNotFoundError: [Errno 2] No such file or directory`.
|
||||
**Порядок: сначала `<svc>`, потом `<svc>/data`.**
|
||||
|
||||
```bash
|
||||
# 1. создать каталог через midclt (от root)
|
||||
ssh truenas_admin@mallexxx.duckdns.org \
|
||||
"midclt call filesystem.mkdir '{\"path\":\"/mnt/RED_2TB/docker/navidrome\",\"options\":{\"mode\":\"755\"}}'"
|
||||
# 2. отдать владение 950:950 полным dacl-массивом (шаблон «эталон рабочего OWNER-ACL»)
|
||||
ssh truenas_admin@mallexxx.duckdns.org \
|
||||
"midclt call filesystem.setacl '{\"path\":\"/mnt/RED_2TB/docker/navidrome\",\"uid\":950,\"gid\":950,\"acltype\":\"NFS4\",\"dacl\":[...],\"options\":{\"recursive\":true,\"traverse\":true}}'"
|
||||
# 3. проверить, что пишет
|
||||
ssh truenas_admin@mallexxx.duckdns.org \
|
||||
"mkdir -p /mnt/RED_2TB/docker/navidrome/data && touch /mnt/RED_2TB/docker/navidrome/.wtest && echo WRITE_OK && rm -f /mnt/RED_2TB/docker/navidrome/.wtest"
|
||||
```
|
||||
- `midclt` возвращает **job id** (асинхронно) — проверять `midclt call core.get_jobs`.
|
||||
- Без `setacl` каталог останется `root root` и дальше писать не получится.
|
||||
|
||||
### Шаг 2 — compose
|
||||
|
||||
```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:rw # 🔴 rw по решению Alex (в плане было ro)
|
||||
- /mnt/RED_2TB/docker/navidrome/data:/data
|
||||
ports:
|
||||
- "4533:4533"
|
||||
networks:
|
||||
- caddy_default
|
||||
|
||||
networks:
|
||||
caddy_default:
|
||||
external: true
|
||||
```
|
||||
|
||||
⚠️ **Питфолл лимита ресурсов (наблюдение, не ошибка):** в `navidrome.db` файлы принадлежат
|
||||
`root:950` — контейнер стартует как **root**, `PUID/PGID` в образе `deluan/navidrome`
|
||||
на NFSv4 ACL влияют не так, как в linuxserver-образах. **Чтение/запись работают фактом**
|
||||
(скан 8043 файла прошёл), но при будущих проблемах с правами смотреть сюда.
|
||||
|
||||
### Шаг 3 — запуск (не `up`)
|
||||
|
||||
```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` работает**.
|
||||
В логе немедленно: `----> Navidrome server is ready!` (`startupTime=2.35s`).
|
||||
|
||||
### Шаг 4 — Caddy
|
||||
|
||||
**Caddyfile 88 строк** (root-owned). Диф ровно 4 строки в **конец** файла:
|
||||
```caddy
|
||||
music.mallexxx.duckdns.org {
|
||||
reverse_proxy navidrome:4533
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
# 1. вытащить текущий
|
||||
ssh truenas_admin@mallexxx.duckdns.org "docker exec caddy cat /etc/caddy/Caddyfile" > /tmp/caddyfile-current.txt
|
||||
# 2. добавить блок ЛОКАЛЬНЫМ скриптом-файлом (write_file + python3 /tmp/x.py) — НЕ sed
|
||||
# 3. сверить диф: diff /tmp/caddyfile-current.txt /tmp/caddyfile-new.txt → только добавленные 4 строки
|
||||
# 4. залить ЦЕЛИКОМ через alpine
|
||||
cat /tmp/caddyfile-new.txt | ssh truenas_admin@mallexxx.duckdns.org \
|
||||
"docker run --rm -i -v /:/host:rw alpine:latest sh -c 'cat > /host/mnt/RED_2TB/docker/caddy/Caddyfile && echo WRITE_OK'"
|
||||
# 5. validate → reload
|
||||
ssh truenas_admin@mallexxx.duckdns.org "docker exec caddy wc -l /etc/caddy/Caddyfile && docker exec caddy caddy validate --config /etc/caddy/Caddyfile 2>&1 | tail -3 && docker exec caddy caddy reload --config /etc/caddy/Caddyfile"
|
||||
```
|
||||
|
||||
**Результат:** `Valid configuration`, ID подтверждён на `music.mallexxx.duckdns.org`.
|
||||
|
||||
⚠️ **TLS-сертификат выпускается НЕ сразу (≈10 сек).** Сразу после reload `curl -I https://music...`
|
||||
даёт **`exit=35` (TLS handshake failure)** — это НОРМАЛЬНО, не поломка. Проверять прогресс:
|
||||
```bash
|
||||
ssh truenas_admin@mallexxx.duckdns.org "docker logs caddy --tail 25 2>&1 | grep -iE 'acme|certificate|error'"
|
||||
```
|
||||
Ждать строк `certificate obtained successfully` (challenge `tls-alpn-01`). После — `HTTP/2 405` на HEAD-запрос.
|
||||
|
||||
### Шаг 5 — `.ndignore`
|
||||
|
||||
```bash
|
||||
scp /tmp/ndignore.txt truenas_admin@mallexxx.duckdns.org:/mnt/RED_2TB/storage/Music/.ndignore
|
||||
ssh truenas_admin@mallexxx.duckdns.org "docker restart navidrome"
|
||||
```
|
||||
|
||||
## 🔴 ПОДТВЕРЖДЕНИЕ: Navidrome читает ТЕГИ, а не папки
|
||||
|
||||
**Выборка из лога скана — артист/альбом берутся из тегов:**
|
||||
```
|
||||
folder="!Rock&Folk/ДДТ/2004 - ДДТ - Город без окон (Выход)" tracksImported=14
|
||||
folder="!Рэп/НТЛ/2003 - Выход" tracksImported=17
|
||||
folder="z Другое, Enigma, Ленинград/Красная Плесень/misc" tracksImported=28
|
||||
folder="!Pop, Club, Любэ/Дискотека Авария/Москва пьёт пиво" tracksImported=19
|
||||
```
|
||||
Ни одного случая «артист = имя папки» (`!Rock&Folk`, `z Другое, Enigma, Ленинград`) — **баг Jellyfin #18162 здесь отсутствует**. Это и есть цель перехода.
|
||||
|
||||
## 🔴 НАХОДКА: `album` в скобках — мусор В ТЕГАХ, не подстановка Navidrome
|
||||
|
||||
**Вопрос Alex:** «Откуда альбомы в скобках взялись? Типа `Дискотека Авария` — для корня,
|
||||
а `(Авария)` — откуда??»
|
||||
|
||||
**Проверено фактом (`ffprobe` по живому файлу):**
|
||||
```
|
||||
/music/!Pop, Club, Любэ/Дискотека Авария/Смелей вперёд.mp3
|
||||
TAG:title=Смелей вперед
|
||||
TAG:artist=Дискотека Авария
|
||||
TAG:album=(Авария) ← 🔴 реальный тег в файле
|
||||
TAG:genre=Disco
|
||||
TAG:comment=This File from http://rmp.ru ← маркер mp3-граббера
|
||||
TAG:album_artist=Дискотека Авария
|
||||
```
|
||||
**`(Авария)` — не фантазия Navidrome. Он честно показал то, что записано в файле.**
|
||||
Причина — **mp3-граббер** (`rmp.ru`): часть файлов в папке артиста получила `album='(Авария)'`
|
||||
вместо реального названия альбома. Папка `Дискотека Авария` содержит треки **минимум трёх
|
||||
разных альбомов** (`Четверо парней`, `Москва пьёт пиво`, `Старые хиты`) **сваленных в корень
|
||||
без подпапок** — различить их можно ТОЛЬКО по тегам.
|
||||
|
||||
### Масштаб (БД Navidrome, `media_file`)
|
||||
|
||||
| Что | Треков |
|
||||
|---|---:|
|
||||
| `album` начинается со скобки | **306** |
|
||||
| `album` содержит скобку | 695 |
|
||||
| `album_artist = 'Various Artists'` | 1225 |
|
||||
| `album` пустой | **0** |
|
||||
| `media_file` всего | **8043** |
|
||||
|
||||
### ⚠️ КОНФЛИКТ ПРАВИЛА: `album = имя папки` ломает эту категорию
|
||||
|
||||
Правило Alex (v8 плана ремонта): «`album` для сборников и unsorted → **ИМЯ ПАПКИ**».
|
||||
**Для таких папок правило неверно:** `Дискотека Авария` — папка ОДНОГО артиста с несколькими
|
||||
альбомами в корне. Применить «имя папки» → все три альбома сольются в один `Дискотека Авария`,
|
||||
а `albumartist` станет `Имя артиста` (не сборник). **Нужно решение Alex.**
|
||||
|
||||
**Возможные подходы (не выбраны):**
|
||||
| # | Вариант | Оценка |
|
||||
|---|---|---|
|
||||
| A | Восстановить реальные названия альбомов по внешним источникам (MusicBrainz) | точно, но много ручной работы |
|
||||
| B | Разложить файлы по подпапкам-альбомам и `album` = имя подпапки | меняет структуру на диске |
|
||||
| C | Оставить `album` = имя папки артиста | три альбома сливаются в один ❌ |
|
||||
| D | Обнулить `album` у таких файлов | Navidrome покажет по имени файла — мусор ❌ |
|
||||
|
||||
**Артефакт для просмотра (запрошен у Alex, ещё не выгружен):** CSV `путь + текущий album + title`
|
||||
по **306** файлам со «скобочным» album, топ-20 для глазной вычитки.
|
||||
|
||||
## Остаточные дефекты после деплоя
|
||||
|
||||
| # | Что | Статус |
|
||||
|---|---|---|
|
||||
| 1 | `album` в скобках, 306 файлов | 🔴 выявлено, ждёт решения Alex |
|
||||
| 2 | Семантика `artist` в `!Классика` | 🔴 не начато (см. ниже) |
|
||||
| 3 | `TPE2`/`albumartist` — ремонт по 7861 файлу | 🔴 активная задача ([[personal/plans/music-artist-albumartist-repair]]) |
|
||||
| 4 | Symfonium на Android | ⏳ не установлен |
|
||||
| 5 | Lidarr | ⏳ не начат (отложен) |
|
||||
|
||||
## ⚠️ Расхождение счётчика: 8043 в Navidrome vs 7861 mp3 на диске
|
||||
|
||||
**Гипотеза требует проверки фактом** (не подтверждена): `.ndignore` применён ПОСЛЕ первого
|
||||
старта — сканирование началось сразу при запуске контейнера, до создания файла. Возможно,
|
||||
часть файлов бэкап-папок успела проиндексироваться.
|
||||
|
||||
**Как проверить (следующая сессия):**
|
||||
```bash
|
||||
# есть ли в БД пути из бэкап-папок
|
||||
ssh truenas_admin@mallexxx.duckdns.org "docker exec navidrome sh -c \
|
||||
'echo \"SELECT COUNT(*) FROM media_file WHERE path LIKE \\\"backup%\\\";\" | sqlite3 /data/navidrome.db'"
|
||||
```
|
||||
Если `> 0` — `Скан` → очистить БД-записи (перескан после `.ndignore` их не удаляет автоматически;
|
||||
Navidrome помечает missing только при полном рескане с `ND_SCANONSTARTUP`).
|
||||
|
||||
## Питфоллы (выучено на живом деплое)
|
||||
|
||||
- **`/mnt/RED_2TB/docker` root-owned** → `mkdir` через ssh запрещён, нужен `midclt call filesystem.mkdir`.
|
||||
- **`filesystem.mkdir` не создаёт промежуточные каталоги** → создавать по одному уровню.
|
||||
- **`filesystem.setacl` возвращает job id асинхронно** → проверять `core.get_jobs`, не считать успехом.
|
||||
- **`docker compose up` блокируется апрувом** → `pull` + `create` + `start`.
|
||||
- **TLS-сертификат выпускается ~10 сек** → `curl exit=35` сразу после reload = норма.
|
||||
- **`.ndignore` пустой = игнорировать ВСЁ** (проверено строкой в бинаре).
|
||||
- **`strings <бинарь> | grep ndignore`** — быстрый способ подтвердить фичу без чтения доки.
|
||||
- **`docker exec navidrome sqlite3`** есть внутри контейнера — БД читается напрямую (в отличие от Jellyfin).
|
||||
- **Navidrome не имеет дефолтного логина** — первый вход = форма «Create admin», это не поломка.
|
||||
|
||||
---
|
||||
|
||||
## 🔴 ИСПРАВЛЕНО 2026-09-27: Navidrome ≠ Jellyfin по поведению движка
|
||||
|
||||
@@ -106,6 +365,12 @@ artist=Maria Makarova (organ) ← исполнитель вмес
|
||||
|
||||
## Следующие шаги
|
||||
- [x] ~~Сначала: ремонт тегов 7906 файлов~~ → ✅ выполнен (волна 38)
|
||||
- [x] ~~Поднять Navidrome в Docker на TrueNAS~~ → ✅ **ВЫПОЛНЕНО 2026-09-27** (см. v4 выше)
|
||||
- [x] ~~Пробросить порт / настроить Caddy subdomain~~ → ✅ `music.mallexxx.duckdns.org`,
|
||||
сертификат Let's Encrypt выпущен
|
||||
- [x] ~~Исключить бэкап-папки~~ → ✅ `.ndignore` (формат подтверждён строками в бинаре)
|
||||
- [ ] 🔴 **Выгрузить CSV по 306 файлам со «скобочным» `album`** → решение Alex по подходу
|
||||
- [ ] 🔴 **Проверить, не проиндексировались ли бэкап-папки** (8043 vs 7861) — запрос к БД
|
||||
- [ ] 🔴 **АКТИВНО (2026-09-27): ремонт `artist` + `albumartist` по 7861 файлу** —
|
||||
правила Alex зафиксированы, идёт ручная разбивка по группам.
|
||||
План — [[personal/plans/music-artist-albumartist-repair]]
|
||||
@@ -116,9 +381,8 @@ artist=Maria Makarova (organ) ← исполнитель вмес
|
||||
(поглощён задачей выше)
|
||||
- [ ] Собрать `TPE2` по плану выше (нужен **НОВЫЙ** план правок с колонкой `album_artist` —
|
||||
в `tag-fix-plan.csv` её не было)
|
||||
- [ ] Поднять Navidrome в Docker на TrueNAS
|
||||
- [ ] Пробросить порт / настроить Caddy subdomain (Caddyfile root-owned → через alpine-контейнер)
|
||||
- [ ] Установить Symfonium на Android, подключить
|
||||
- [ ] **Создать админа Navidrome при первом входе** (дефолтного логина НЕТ — форма «Create admin»)
|
||||
- [ ] Установить Symfonium на Android, подключить к `https://music.mallexxx.duckdns.org`
|
||||
|
||||
## Связанные заметки
|
||||
- [[personal/tech/jellyfin-tags-cp1251-unreadable]] — 🔴 почему Jellyfin провалился (баг #18162), сравнение с Navidrome
|
||||
|
||||
@@ -18,6 +18,19 @@ status: deployed
|
||||
---
|
||||
# *arr Stack на Тайге — Setup & Config
|
||||
|
||||
> ✅ **STATE 2026-09-27 (v6, ночь): NAVIDROME РАЗВЁРНУТ — музыкальный сервер для `Music/`.**
|
||||
> Контейнер **`navidrome`** (v0.64.2) на порту **4533**, домен **`https://music.mallexxx.duckdns.org`**
|
||||
> (Caddy, Let's Encrypt). Compose — `/mnt/RED_2TB/docker/navidrome/docker-compose.yml`.
|
||||
> Музыка смонтирована **`rw`** (`/mnt/RED_2TB/storage/Music` → `/music`) по явному решению Alex.
|
||||
> **Скан завершён: 8043 трека.** Бэкап-папки исключены через `/storage/Music/.ndignore`.
|
||||
> ✅ **Главное: Navidrome читает ТЕГИ, папки игнорирует** — артисты `ДДТ`, `Красная Плесень`
|
||||
> из тегов, а не `!Rock&Folk` / `z Другое`. Баг Jellyfin #18162 здесь отсутствует.
|
||||
> План и все питфоллы деплоя — [[family/how-to/navidrome-truenas-android]] §v4.
|
||||
> **Jellyfin остаётся для ВИДЕО** (6 библиотек, музыка там не создаётся).
|
||||
|
||||
> ⚠️ **Jellyfin-библиотека музыки НЕ создаётся:** попытка 2026-09-27 провалена (баг #18162,
|
||||
> навигация по папкам) → полный откат, БД восстановлена. Музыка → только Navidrome.
|
||||
|
||||
> ✅ **STATE 2026-09-27 (v5, вечер): Music-библиотека УДАЛЕНА, БД Jellyfin ВОССТАНОВЛЕНА.**
|
||||
> Контейнеры **живы** (prowlarr/radarr/sonarr/jellyfin/transmission, uid 950, media_net на месте).
|
||||
> **Индексеры: 3/6 рабочих** (RuTor/Byrutor/NoNaMe ✅; RuTracker/Kinozal — Cloudflare).
|
||||
@@ -35,6 +48,7 @@ status: deployed
|
||||
## Архитектура
|
||||
|
||||
Prowlarr (9696) → Radarr (7878) + Sonarr (8989) → Transmission (9091) → Jellyfin (8096)
|
||||
Navidrome (4533) ← `/storage/Music` — ✅ развёрнут 2026-09-27, читает ТЕГИ (не папки)
|
||||
⏳ Lidarr (8686) — не установлен, план Фаза 2.
|
||||
|
||||
Staging папки (`radarr/`, `sonarr/`) невидимы в Jellyfin.
|
||||
@@ -59,6 +73,7 @@ Transmission → /mnt/storage/Downloads
|
||||
| Sonarr | https://sonarr.mallexxx.duckdns.org |
|
||||
| Prowlarr | https://prowlarr.mallexxx.duckdns.org |
|
||||
| Jellyfin | https://jellyfin.mallexxx.duckdns.org |
|
||||
| **Navidrome** | **https://music.mallexxx.duckdns.org** — ✅ **развёрнут 2026-09-27** (музыка) |
|
||||
| Transmission | https://transmission.mallexxx.duckdns.org (уже был) |
|
||||
|
||||
| Lidarr | https://lidarr.mallexxx.duckdns.org — ⏳ **НЕ установлен** (план, Фаза 1) |
|
||||
@@ -118,7 +133,7 @@ Caddy: subdomain-based роутинг, без URL Base. Let's Encrypt автом
|
||||
| `cartoons-series/` | Мультсериалы | ✅ Cartoon Series |
|
||||
| `documentaries/` | Документалки | ✅ Documentaries |
|
||||
| `documentaries-series/` | Документальные сериалы | ✅ Documentary Series |
|
||||
| `Music/` | Музыка (7890 аудиофайлов, 8 категорий) | ⏳ **библиотеки ещё нет** — план 2026-09-26 |
|
||||
| `Music/` | Музыка (8043 трека в Navidrome, 9 категорий) | ✅ **Navidrome** (не Jellyfin!) |
|
||||
| `Downloads/` | Торренты (Transmission) | ❌ |
|
||||
|
||||
Все папки: uid=921, gid=921, NFSv4 ACL через midclt.
|
||||
|
||||
Reference in new issue
Block a user