179 lines
6.3 KiB
Markdown
179 lines
6.3 KiB
Markdown
---
|
||
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** — первоначальный деплой
|