Files
obsidian-vault/personal/tech/skill-arr-media-stack-setup-additions.md
T

96 lines
5.2 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: Skill — arr-media-stack-setup (дополнения 2026-09-26)
created: '2026-09-26'
updated: '2026-09-26'
type: tech
namespace: personal
tags:
- skill
- arr
- prowlarr
- dns
- truenas
- blocked
- pitfalls
related:
- '[[personal/plans/lidarr-taiga-and-indexer-unblock]]'
- '[[family/projects/media-toolbox-taiga]]'
---
# Skill `arr-media-stack-setup` — дополнения 2026-09-26
> Зеркало патча скилла. Что добавлено после разведки на Тайге (задача «Lidarr + музыка + синк с Jellyfin»).
> Полный скилл: `~/.hermes/hermes-whale/skills/devops/arr-media-stack-setup/SKILL.md`
## 1. Индексеры недоступны: DNS-фильтр провайдера (НЕ Cloudflare, НЕ Pi-hole)
**Новый класс проблемы**, ранее не описанный в скилле. Задокументированы были только
«Cloudflare 403 на `indexers.prowlarr.com`» и «RuTracker Turnstile». Здесь **DNS не отдаёт IP вообще**.
```bash
# InitialFailure показывает НАЧАЛО проблемы, а не «сейчас»
GET /api/v1/indexerstatus → initialFailure: "2026-05-20T05:4x:xx" ← день деплоя
→ disabledTill: +24 ч карантин
# Резолв проверять ДВУМЯ резолверами
nslookup rutracker.org 192.168.2.2 # роутер
nslookup rutracker.org 8.8.8.8 # внешний
# NXDOMAIN на ОБОИХ → фильтр на стороне аплинка/провайдера
# NXDOMAIN на роутере → Pi-hole/локальный DNS
```
**Быстрый чек всех индексеров** — `wget -S` на каждый домен из контейнера prowlarr:
`wget: bad address '<domain>'` = DNS-провал, `HTTP/1.1 200 OK` = домен жив.
**Фикс:** SOCKS5-прокси, но сперва убедиться, что прокси-контейнер виден целевой сети
(`docker network inspect media_net --format '{{range .Containers}}{{.Name}} {{end}}'`).
После `docker network connect` — **добавить сеть в compose**, иначе потеряется при пересоздании.
Затем `POST /api/v1/indexer/testall` снимает `disabledTill`.
## 2. `disabledTill` НЕ виден в Radarr/Sonarr
`GET /api/v3/indexer` отдаёт `"status": {}` — пусто. Карантин смотреть **только** в Prowlarr
(`/api/v1/indexerstatus`, `/api/v1/health`). Не делать вывод «индексеры свободны» по Radarr.
## 3. TrueNAS: `python3` ЕСТЬ, `curl` и `sqlite3` — НЕТ
**Исправление распространённой ошибки в доке** («нет curl и python3»). Факт 2026-09-26:
`python3` на хосте работает (использовался для разбора JSON). Нет **`curl`** и **`sqlite3`**.
**Рабочий паттерн API = `wget` в контейнере + хостовый `python3`:**
```bash
ssh truenas_admin@HOST \
"docker exec prowlarr sh -c 'wget -qO- --header=\"X-Api-Key: <KEY>\" http://localhost:9696/api/v1/health'"
```
- busybox-`wget`: только `-qO-` / `-S` / `--header` / `--timeout`.
**`-e use_proxy=yes` НЕ поддерживается** (GNU-опция) → прокси-тест изнутри linuxserver-контейнера
этим способом невозможен.
- Экранирование JSON через ssh ломается на кавычках в `--header` → надёжнее писать вывод
в файл (`> /tmp/x.json`) и разбирать отдельным вызовом.
- `jq` с дефисами: `.["download-dir"]`, не `.download-dir`.
## 4. `/etc/resolv.conf` контейнеров = `127.0.0.11`
Docker embedded DNS. В linuxserver-образах **нет `getent`** → использовать `nslookup`/`wget`.
## 5. RemotePathMapping: health жалуется при «задокументированном» маппинге
```
RemotePathMappingCheck error
"download client Transmission places downloads in /storage/Downloads/radarr
but this directory does not appear to exist inside the container"
```
Проверять **фактический** download-dir, а не предполагаемый:
```bash
docker exec transmission sh -c 'cat /config/settings.json' # → "download-dir": "/mnt/storage/Downloads"
```
Если download-dir **плоский** (без подкаталога категории) — сам маппинг не спасёт: подкаталога нет.
Плюс Transmission монтирует `/mnt/storage`, Radarr — `/storage` (один хост-путь под двумя именами).
**Всегда проверять наличие записей в API** (`GET /api/v3/remotepathmapping`), а не то, что записано в доке.
## Связанные заметки
- [[personal/plans/lidarr-taiga-and-indexer-unblock]] — план, из которого выросли эти находки
- [[family/projects/media-toolbox-taiga]] — состояние стека на Тайге