[2026-06-18] eagle: merge conflict — review needed

This commit is contained in:
Alexey Martemyanov
2026-06-18 09:00:07 +06:00
4 changed files with 72 additions and 9 deletions
+26
View File
@@ -0,0 +1,26 @@
# Vault Sync — 2026-06-17 17:40
## Результат
✅ Успешно (exit code 0)
Лог: `/tmp/vault-sync.log` (последняя запись от 17:40:55)
## Активность за день
С 08:10 до 17:40 — 46 успешных циклов синхронизации (каждые ~5-15 минут).
Все три этапа стабильны:
1. **Local changes** — стеш/коммит
2. **Syncthing pull** — коммит + merge
3. **Push to bare repo** — успешно
Единственная аномалия за день — на строке 135 лога:
`/usr/bin/bash: line 3: sudo: command not found`
Возникла в одном из ранних циклов (~12:26), не фатально — команда с sudo в скрипте не является обязательной (контейнер работает от root).
## Состояние
- Все три репозитория (`syncthing`, `taiga-vault`, `syncthing-out`) пушнуты
- Конфликтов не обнаружено
- Известная проблема `chmod on .../config.lock failed: Operation not permitted` — не проявилась в этом логе
+37 -4
View File
@@ -1,17 +1,24 @@
---
title: Jellyfin Config
created: '2026-05-23'
updated: '2026-05-23'
updated: '2026-06-17'
type: tech
namespace: family
tags: [jellyfin, infra, media, credentials]
tags:
- jellyfin
- infra
- media
- credentials
- api
related:
- "[[tech/arr-stack-kraken]]"
- '[[tech/arr-stack-kraken]]'
- '[[tech/router-py]]'
---
# Jellyfin Config
**URL:** `http://kraken:8096`
**API Base (внутри контейнера kraken):** `http://kraken:8096/jellyfin/`
(все API эндпоинты под префиксом `/jellyfin`)
## Users
@@ -31,3 +38,29 @@ Used by automation scripts (watchlist-sync, media-pipeline agents).
- **Before any DB operation:** `docker stop jellyfin` first
- Jellyfin runs as a Docker container on Kraken
- Config stored in `/opt/jellyfin/config/` (check docker-compose for exact path)
## API Endpoints (base: `http://kraken:8096/jellyfin/`)
Авторизация: заголовок `X-MediaBrowser-Token: <API_KEY>`
| Что | Endpoint | Метод |
|---|---|---|
| Инфо о сервере | `/System/Info` | GET |
| Библиотеки (виртуальные папки) | `/Library/VirtualFolders` | GET |
| Поиск по типу | `/Items?includeItemTypes=Series&recursive=true&searchTerm=...&fields=Path` | GET |
| Удалить item | `/Items/{id}` | DELETE |
| Полный рескан | `/Items/Refresh?Recursive=true&RefreshMode=FullRefresh` | POST (требует Content-Type: application/json) |
## Библиотеки
| Название | Путь | Назначение |
|---|---|---|
| Series | `/media/series` | Сериалы (симлинки от router.py из sonarr) |
| Movies | `/media/movies` | Фильмы |
| Cartoon Series | `/media/cartoons-series` | Мультсериалы |
| Cartoons | `/media/cartoons` | Мультфильмы |
| Documentaries | `/media/documentaries` | Документалки |
| Documentary Series | `/media/documentaries-series` | Документальные сериалы |
| Music | | Музыка |
> **Важно:** Прямые пути sonarr (`/media/series-sonarr/`, `/media/movies-radarr/`) **не должны быть** в библиотеках Jellyfin. Router.py создаёт симлинки из sonarr-папок в `/media/series/` и `/media/movies/`. Если symlink уже есть — дубли не появятся. Если есть старые дубли — удалить orphaned items через `DELETE /Items/{id}`.
@@ -204,7 +204,11 @@ Web UI: `http://192.168.1.15:9117`
### API — как Eagle ищет игру
```bash
# Поиск через Jackett Torznab API
<<<<<<< HEAD
curl "http://192.168.1.15:9117/api/v2.0/indexers/rutracker/results/torznab/?apikey=JACKETT_KEY&t=search&q=Donkey+Kong+Tropical+Freeze+Switch&cat=8000"
=======
curl "http://192.168.1.15:9117/api/v2.0/indexers/rutracker/results/torznab/?apikey=***&t=search&q=Donkey+Kong+Tropical+Freeze+Switch&cat=8000"
>>>>>>> nas/main
# Возвращает XML/JSON с magnet-ссылками и метаданными
```
+5 -5
View File
@@ -127,7 +127,7 @@ media-pipeline (~/Developer/media_files_db, ветка kraken-agent)
3. `ProviderSearchStrategy.facts()` теперь эмитит `NFOMetadataFact` с жанрами провайдера (раньше genres терялись, в граф не писались).
**После деплоя:** нужно переместить существующие 106 неправильных entries из `library/movies` в `library/cartoons` (отдельный скрипт). Новые sync'и будут класть правильно.
- Настроить библиотеки в Jellyfin (http://192.168.1.14:8096)
- Настроить библиотеки в Jellyfin (http://192.168.1.15:8096)
- NFO файлы готовы (716 шт.), Jellyfin должен их подхватить
#### 4. 🟢 Hermes cron на Кракене
@@ -273,12 +273,12 @@ docker run --rm ... media-pipeline:kraken \
| | |
|--|--|
| HTPC | `bazzite@192.168.1.86`, Data: `/run/media/bazzite/Data/`, WoL: `B0:6E:BF:60:6D:64` |
| Кракен | `kraken@192.168.1.14`, HDD: `/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/` |
| Jellyfin | http://192.168.1.14:8096 |
| Transmission | http://192.168.1.14:9091 |
| Кракен | `kraken@192.168.1.15`, HDD: `/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/` |
| Jellyfin | http://192.168.1.15:8096 |
| Transmission | http://192.168.1.15:9091 |
| Исходники | `~/Developer/media_files_db/`, ветка `kraken-agent` |
| Docker образ | `media-pipeline:kraken` (arm64, Colima 24GB) |
| kraken | `ssh kraken` → LAN (`192.168.1.14`) или VPN (`10.99.1.2`) через DNS-резолв |
| kraken | `ssh kraken` → LAN (`192.168.1.15`) или VPN (`10.99.1.2`) через DNS-резолв |
| docker deploy | `docker save img -o /tmp/img.tar && scp /tmp/img.tar kraken:/tmp/ && ssh kraken "docker load -i /tmp/img.tar && rm /tmp/img.tar"``docker save \| ssh` зависает через WireGuard tunnel |
| Transmission RPC | Токен: `curl -D /tmp/hdrs ... > /dev/null`, затем `grep X-Transmission-Session-Id /tmp/hdrs \| awk '{print $2}' \| tr -d '\r\n'`. Payload с base64 торрента — писать в файл (`-d @file`), не аргументом (иначе "Argument list too long") |