[2026-06-18] eagle: merge conflict — review needed
This commit is contained in:
@@ -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` — не проявилась в этом логе
|
||||
@@ -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-ссылками и метаданными
|
||||
```
|
||||
|
||||
|
||||
@@ -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") |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user