Files
obsidian-vault/family/projects/media-toolbox-taiga.md
T

179 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: '*arr Stack на Тайге — Setup & Config'
namespace: family
type: reference
tags:
- taiga
- radarr
- sonarr
- prowlarr
- jellyfin
- arr
- media
created: '2026-05-20'
updated: '2026-05-20'
status: planned
---
# *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 ключи
| Сервис | Полный ключ |
|--------|-------------|
| Radarr | TBD после деплоя |
| Sonarr | TBD после деплоя |
| Prowlarr | TBD после деплоя |
| Jellyfin | TBD после деплоя |
Получить: `docker exec <svc> grep ApiKey /config/config.xml`
## 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-версии с изменёнными путями:
```python
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
```
Запуск вручную (авто-хука нет):
```bash
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 (при необходимости) |
## История
- **2026-05-20** — первоначальный деплой