Files
obsidian-vault/family/projects/media-toolbox-taiga.md
T
2026-05-30 08:03:40 +00:00

8.0 KiB
Raw Blame History

title, namespace, type, tags, created, updated, status
title namespace type tags created updated status
*arr Stack на Тайге — Setup & Config family reference
taiga
radarr
sonarr
prowlarr
jellyfin
arr
media
2026-05-20 2026-05-20 deployed

*arr Stack на Тайге — Setup & Config

Архитектура

Prowlarr (9696) → Radarr (7878) + Sonarr (8989) → Transmission (9091) → Jellyfin (8096)

Staging папки (radarr/, sonarr/) невидимы в Jellyfin. Router скрипт создаёт симлинки из staging → категоризированные библиотеки по NFO (genre + mpaa).

Transmission → /mnt/storage/Downloads
   Radarr импортирует → /storage/radarr/<Title>/
   Sonarr импортирует → /storage/sonarr/<Title>/
         router.py (--apply)
   movies/          cartoons/         series/
   cartoons-series/ documentaries/    documentaries-series/
         ↓
       Jellyfin

Web UI (HTTPS через Caddy)

Сервис URL
Radarr https://radarr.mallexxx.duckdns.org
Sonarr https://sonarr.mallexxx.duckdns.org
Prowlarr https://prowlarr.mallexxx.duckdns.org
Jellyfin https://jellyfin.mallexxx.duckdns.org
Transmission https://transmission.mallexxx.duckdns.org (уже был)

Caddy: subdomain-based роутинг, без URL Base. Let's Encrypt автоматически.

Docker

Compose: /mnt/RED_2TB/docker/arr/docker-compose.yml Config dirs: /mnt/RED_2TB/docker/arr/{prowlarr,radarr,sonarr,jellyfin}/ PUID/PGID: 921/921 (user transmission, тот же что владеет /storage/)

Сети

Контейнер Сети
prowlarr media_net + caddy_default
radarr media_net + caddy_default
sonarr media_net + caddy_default
jellyfin caddy_default
transmission transmission_default + media_net (подключён вручную)
vless-proxy hermes_taiga_net + media_net (подключён вручную)

media_net — внешняя сеть, создана вручную: docker network create media_net

Хранилище

Host: /mnt/RED_2TB/storage/ → внутри контейнеров: /storage/ Transmission mount: /mnt/RED_2TB/storage//mnt/storage/

Папки

Папка Назначение Jellyfin
radarr/ Radarr root (staging)
sonarr/ Sonarr root (staging)
Movies/ Фильмы (симлинки + старый контент) Movies
Cartoons/ Мультики (симлинки + старый контент) Cartoons
series/ Сериалы Series
cartoons-series/ Мультсериалы Cartoon Series
documentaries/ Документалки Documentaries
documentaries-series/ Документальные сериалы Documentary Series
Downloads/ Торренты (Transmission)

Все папки: uid=921, gid=921, NFSv4 ACL через midclt.

API ключи

Сервис Prefix
Radarr 51e201f2
Sonarr b1eb9cdd
Prowlarr 35c8b3f4
Jellyfin eaglesetup2026taiga

Получить полный ключ: docker exec <svc> grep ApiKey /config/config.xml Jellyfin token создан вручную через sqlite — хранится в /mnt/RED_2TB/docker/arr/jellyfin/data/data/jellyfin.db.

Remote Path Mapping (Radarr + Sonarr)

Transmission монтирует /mnt/RED_2TB/storage//mnt/storage/ Radarr/Sonarr монтируют /mnt/RED_2TB/storage//storage/

Маппинг в каждом:

  • host: transmission
  • remotePath: /mnt/storage/Downloads/
  • localPath: /storage/Downloads/

Prowlarr — прокси для заблокированных индексеров

vless-proxy доступен в media_net как vless-proxy:1080 (SOCKS5).

Настройка в Prowlarr: Settings → Indexers → Add Proxy:

  • Type: SOCKS5
  • Host: vless-proxy, Port: 1080
  • Tags: [proxy]

Индексеры с тегом proxy: RuTracker (заблокирован в РФ), остальные — по усмотрению.

Индексеры (те же что на Кракене)

Имя Примечание
RuTracker через прокси
RuTor
Byrutor enableRss: false
NoNaMe Club
Kinozal
Kinozal (M) магнет, без grab limit — предпочтительный

preferMagnetUrl: true для всех → нет дневного лимита на .torrent.

router.py

Скрипт: /mnt/RED_2TB/docker/arr/media-pipeline/router.py Адаптация kraken-версии с изменёнными путями:

MEDIA_BASE = Path("/mnt/RED_2TB/storage")
SOURCES = [
    ("movie",  MEDIA_BASE / "radarr"),
    ("series", MEDIA_BASE / "sonarr"),
]
TARGETS = {
    "movies":               MEDIA_BASE / "Movies",
    "series":               MEDIA_BASE / "series",
    "cartoons":             MEDIA_BASE / "Cartoons",
    "cartoons-series":      MEDIA_BASE / "cartoons-series",
    "documentaries":        MEDIA_BASE / "documentaries",
    "documentaries-series": MEDIA_BASE / "documentaries-series",
}
JELLYFIN_URL = "http://jellyfin:8096"  # или по IP

Запуск вручную (авто-хука нет):

ssh truenas_admin@mallexxx.duckdns.org "python3 /mnt/RED_2TB/docker/arr/media-pipeline/router.py"
# проверить, затем:
ssh truenas_admin@mallexxx.duckdns.org "python3 /mnt/RED_2TB/docker/arr/media-pipeline/router.py --apply"

Отличия от Кракена

Kraken Taiga
Reverse proxy nginx path-based (/sonarr) Caddy subdomain-based
HTTPS нет автоматически (Let's Encrypt)
PUID/PGID 1000/1000 921/921 (transmission)
Staging папки movies-radarr/, series-sonarr/ radarr/, sonarr/
Прокси для индексеров нет vless-proxy SOCKS5 (hermes_taiga_net)
Авто-синк (watchlist) (был, убрали) нет
Jellyfin users alex + lisa только alex
PGS→SRT pgsrip + cron TBD (при необходимости)

Pitfalls (задокументировано при деплое)

  • d--------- на папках в ls — это норма для NFSv4 ACL на TrueNAS. Реальные права через midclt call filesystem.getacl
  • Не трогать ACL существующих папок (Movies, Cartoons, Downloads) — только новые
  • После alpine chown NFSv4 ACE слетают — нужно повторно применять через midclt filesystem.setacl
  • indexers.prowlarr.com отдаёт 403 Cloudflare с IP Тайги → Prowlarr не может скачать Cardigann definitions. Решение: скопировать /config/Definitions/ с Кракена (549 yml-файлов)
  • После старта Prowlarr /indexer/schema недоступен ~2-3 мин (HTTP timeout к indexers.prowlarr.com). Ждать
  • POST /indexer зависает при добавлении Cardigann через API (capability check). Решение: import через SQLite напрямую с Кракена
  • Jellyfin 10.11: name в POST /Library/VirtualFolders должен быть в query string (?name=Movies&collectionType=movies), не в body
  • Transmission whitelist задаётся через env var WHITELIST в compose — settings.json перезаписывается при старте
  • Transmission compose location: /mnt/RED_2TB/docker/transmission/docker-compose.yml
  • На Тайге нет curl и python3 в PATH хоста (zsh) — только внутри контейнеров. Скрипты запускать через docker exec или python3-файлами через scp

История

  • 2026-05-20 — первоначальный деплой