[2026-06-16] kraken: family/how-to/htpc-emulators-setup.md family/how-to/kraken-access.md family/how-to/obsidian-sync.md family/how-to/openmediavault-rpi5.md family/how-to/switch-emulation-rom-infra.md family/how-to/truenas-infrastructure.md family/projects/media-toolbox-kraken.md
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
**Weekly → Кракен HDD** (`Persistent=true`):
|
**Weekly → Кракен HDD** (`Persistent=true`):
|
||||||
- `saves-sync-kraken.timer` (weekly)
|
- `saves-sync-kraken.timer` (weekly)
|
||||||
- Скрипт: `~/scripts/backup-saves-to-kraken.sh`
|
- Скрипт: `~/scripts/backup-saves-to-kraken.sh`
|
||||||
- Назначение: `kraken@192.168.1.14:/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/backups/htpc-saves/`
|
- Назначение: `kraken@192.168.1.15:/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/backups/htpc-saves/`
|
||||||
- ⚠️ Путь назначения **всегда на HDD** (`/srv/dev-disk-by-uuid-.../`), не в `~/` (SSD, маленький)
|
- ⚠️ Путь назначения **всегда на HDD** (`/srv/dev-disk-by-uuid-.../`), не в `~/` (SSD, маленький)
|
||||||
- Транспорт: rsync по LAN (SSH ключ bazzite→kraken авторизован)
|
- Транспорт: rsync по LAN (SSH ключ bazzite→kraken авторизован)
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ ssh -J root@91.207.28.205 kraken@127.0.0.1 -p 2223
|
|||||||
Кракен держит постоянный **reverse SSH tunnel** на VPS через autossh:
|
Кракен держит постоянный **reverse SSH tunnel** на VPS через autossh:
|
||||||
|
|
||||||
```
|
```
|
||||||
Кракен (RPi 5, 192.168.1.14)
|
Кракен (RPi 5, 192.168.1.15)
|
||||||
└── autossh → ssh -R 2223:localhost:22 root@91.207.28.205
|
└── autossh → ssh -R 2223:localhost:22 root@91.207.28.205
|
||||||
↓
|
↓
|
||||||
VPS (91.207.28.205)
|
VPS (91.207.28.205)
|
||||||
|
|||||||
@@ -94,11 +94,11 @@ mallexxx.duckdns.org:/mnt/RED_2TB/storage/git/obsidian-vault.git
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Проверить последний sync
|
# Проверить последний sync
|
||||||
ssh kraken@192.168.1.14 "tail -5 /tmp/vault-sync.log"
|
ssh kraken@192.168.1.15 "tail -5 /tmp/vault-sync.log"
|
||||||
ssh truenas_admin@mallexxx.duckdns.org "tail -5 /tmp/vault-sync.log"
|
ssh truenas_admin@mallexxx.duckdns.org "tail -5 /tmp/vault-sync.log"
|
||||||
|
|
||||||
# Запустить sync вручную
|
# Запустить sync вручную
|
||||||
ssh kraken@192.168.1.14 "bash ~/scripts/sync-vault.sh"
|
ssh kraken@192.168.1.15 "bash ~/scripts/sync-vault.sh"
|
||||||
ssh truenas_admin@mallexxx.duckdns.org "bash ~/sync-vault.sh"
|
ssh truenas_admin@mallexxx.duckdns.org "bash ~/sync-vault.sh"
|
||||||
|
|
||||||
# Посмотреть историю коммитов в bare repo
|
# Посмотреть историю коммитов в bare repo
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ tags:
|
|||||||
created: '2026-05-11'
|
created: '2026-05-11'
|
||||||
updated: '2026-05-12'
|
updated: '2026-05-12'
|
||||||
status: hermes-pending
|
status: hermes-pending
|
||||||
ip: 192.168.1.14
|
ip: 192.168.1.15
|
||||||
---
|
---
|
||||||
# OpenMediaVault на Raspberry Pi 5
|
# OpenMediaVault на Raspberry Pi 5
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ ip: 192.168.1.14
|
|||||||
| 2 — Первый запуск + обновление | ✅ | apt upgrade выполнен |
|
| 2 — Первый запуск + обновление | ✅ | apt upgrade выполнен |
|
||||||
| 3 — Установка OMV | ✅ | OMV 7 установлен |
|
| 3 — Установка OMV | ✅ | OMV 7 установлен |
|
||||||
| 4 — Первый вход в веб-интерфейс | ✅ | Пароль сменён |
|
| 4 — Первый вход в веб-интерфейс | ✅ | Пароль сменён |
|
||||||
| 5 — Сеть | ✅ | DHCP static lease `192.168.1.14` (eth0 MAC `2c:cf:67:64:03:f3`); WiFi включён (wlan0, ASUS5, 192.168.1.15, 2026-05-19) |
|
| 5 — Сеть | ✅ | DHCP static lease `192.168.1.15` (eth0 MAC `2c:cf:67:64:03:f3`); WiFi включён (wlan0, ASUS5, 192.168.1.15, 2026-05-19) |
|
||||||
| 6 — USB HDD | ✅ | 12TB Seagate ST12000NT001, EXT4, UUID `49e8f586-3839-4c5d-a1e1-58bfc3579ade`, смонтирован через OMV в `/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade` |
|
| 6 — USB HDD | ✅ | 12TB Seagate ST12000NT001, EXT4, UUID `49e8f586-3839-4c5d-a1e1-58bfc3579ade`, смонтирован через OMV в `/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade` |
|
||||||
| 7 — omv-extras + Docker | ✅ | omv-extras 7.0.6, Docker 29.4.3, kraken в группе docker |
|
| 7 — omv-extras + Docker | ✅ | omv-extras 7.0.6, Docker 29.4.3, kraken в группе docker |
|
||||||
| 8 — Контейнеры | ✅ | Все через отдельные docker compose, конфиги на HDD (см. ниже) |
|
| 8 — Контейнеры | ✅ | Все через отдельные docker compose, конфиги на HDD (см. ниже) |
|
||||||
@@ -137,7 +137,7 @@ network:
|
|||||||
В роутере (ASUS): добавить static lease в `dhcp_staticlist` через nvram:
|
В роутере (ASUS): добавить static lease в `dhcp_staticlist` через nvram:
|
||||||
```bash
|
```bash
|
||||||
ssh -i ~/.ssh/id_rsa admin@192.168.1.1 \
|
ssh -i ~/.ssh/id_rsa admin@192.168.1.1 \
|
||||||
"nvram set dhcp_staticlist='...<2C:CF:67:64:03:F3>192.168.1.14>kraken>' && nvram commit && service restart_dnsmasq"
|
"nvram set dhcp_staticlist='...<2C:CF:67:64:03:F3>192.168.1.15>kraken>' && nvram commit && service restart_dnsmasq"
|
||||||
```
|
```
|
||||||
|
|
||||||
Отключить WiFi навсегда (modprobe blacklist):
|
Отключить WiFi навсегда (modprobe blacklist):
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ services:
|
|||||||
ssh kraken "cd /srv/.../docker/jackett && docker compose up -d"
|
ssh kraken "cd /srv/.../docker/jackett && docker compose up -d"
|
||||||
```
|
```
|
||||||
|
|
||||||
Web UI: `http://192.168.1.14:9117`
|
Web UI: `http://192.168.1.15:9117`
|
||||||
|
|
||||||
### Настройка RuTracker
|
### Настройка RuTracker
|
||||||
1. Открыть Jackett Web UI → Add Indexer → поиск "rutracker"
|
1. Открыть Jackett Web UI → Add Indexer → поиск "rutracker"
|
||||||
@@ -204,7 +204,7 @@ Web UI: `http://192.168.1.14:9117`
|
|||||||
### API — как Eagle ищет игру
|
### API — как Eagle ищет игру
|
||||||
```bash
|
```bash
|
||||||
# Поиск через Jackett Torznab API
|
# Поиск через Jackett Torznab API
|
||||||
curl "http://192.168.1.14: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"
|
||||||
# Возвращает XML/JSON с magnet-ссылками и метаданными
|
# Возвращает XML/JSON с magnet-ссылками и метаданными
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
- **Web UI:** http://truenas.mallexxx.duckdns.org
|
- **Web UI:** http://truenas.mallexxx.duckdns.org
|
||||||
- **Portainer:** https://portainer.mallexxx.duckdns.org
|
- **Portainer:** https://portainer.mallexxx.duckdns.org
|
||||||
- **Host (local network):** `192.168.2.197` — ⚠️ ИСПОЛЬЗОВАТЬ `ssh truenas_admin@mallexxx.duckdns.org`. НЕ ИСПОЛЬЗОВАТЬ локальный IP для SSH доступа!
|
- **Host (local network):** `192.168.2.197` — ⚠️ ИСПОЛЬЗОВАТЬ `ssh truenas_admin@mallexxx.duckdns.org`. НЕ ИСПОЛЬЗОВАТЬ локальный IP для SSH доступа!
|
||||||
- ⚠️ Eagle (Mac, 192.168.1.x) и Kraken (192.168.1.14) находятся в **другой подсети**
|
- ⚠️ Eagle (Mac, 192.168.1.x) и Kraken (192.168.1.15) находятся в **другой подсети**
|
||||||
- ⚠️ Кра́кен и TrueNAS — **разные сети** (192.168.1.x vs 192.168.2.x). Доступ с Кракена на TrueNAS по локальному IP **не работает**
|
- ⚠️ Кра́кен и TrueNAS — **разные сети** (192.168.1.x vs 192.168.2.x). Доступ с Кракена на TrueNAS по локальному IP **не работает**
|
||||||
|
|
||||||
## Пользователи и группы (ключевые)
|
## Пользователи и группы (ключевые)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ tags:
|
|||||||
HTPC (Bazzite 192.168.1.86)
|
HTPC (Bazzite 192.168.1.86)
|
||||||
└── rsync → Kraken HDD /srv/.../media/
|
└── rsync → Kraken HDD /srv/.../media/
|
||||||
|
|
||||||
Kraken (RPi 5, 192.168.1.14)
|
Kraken (RPi 5, 192.168.1.15)
|
||||||
├── /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/media/
|
├── /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/media/
|
||||||
│ ├── movies/ ← фильмы (127 папок)
|
│ ├── movies/ ← фильмы (127 папок)
|
||||||
│ ├── cartoons/ ← мультфильмы (126 папок)
|
│ ├── cartoons/ ← мультфильмы (126 папок)
|
||||||
@@ -127,7 +127,7 @@ media-pipeline (~/Developer/media_files_db, ветка kraken-agent)
|
|||||||
3. `ProviderSearchStrategy.facts()` теперь эмитит `NFOMetadataFact` с жанрами провайдера (раньше genres терялись, в граф не писались).
|
3. `ProviderSearchStrategy.facts()` теперь эмитит `NFOMetadataFact` с жанрами провайдера (раньше genres терялись, в граф не писались).
|
||||||
|
|
||||||
**После деплоя:** нужно переместить существующие 106 неправильных entries из `library/movies` в `library/cartoons` (отдельный скрипт). Новые sync'и будут класть правильно.
|
**После деплоя:** нужно переместить существующие 106 неправильных entries из `library/movies` в `library/cartoons` (отдельный скрипт). Новые sync'и будут класть правильно.
|
||||||
- Настроить библиотеки в Jellyfin (http://192.168.1.14:8096)
|
- Настроить библиотеки в Jellyfin (http://192.168.1.15:8096)
|
||||||
- NFO файлы готовы (716 шт.), Jellyfin должен их подхватить
|
- NFO файлы готовы (716 шт.), Jellyfin должен их подхватить
|
||||||
|
|
||||||
#### 4. 🟢 Hermes cron на Кракене
|
#### 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` |
|
| 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/` |
|
| Кракен | `kraken@192.168.1.15`, HDD: `/srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/` |
|
||||||
| Jellyfin | http://192.168.1.14:8096 |
|
| Jellyfin | http://192.168.1.15:8096 |
|
||||||
| Transmission | http://192.168.1.14:9091 |
|
| Transmission | http://192.168.1.15:9091 |
|
||||||
| Исходники | `~/Developer/media_files_db/`, ветка `kraken-agent` |
|
| Исходники | `~/Developer/media_files_db/`, ветка `kraken-agent` |
|
||||||
| Docker образ | `media-pipeline:kraken` (arm64, Colima 24GB) |
|
| 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 |
|
| 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") |
|
| 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