[2026-09-28] eagle: personal/plans/flaresolverr-taiga-deploy.md personal/tech/flaresolverr-taiga.md
This commit is contained in:
1 parent
a2732b9fb3
commit
fe5dc880a2
2 files changed
+110
-18
No files matched your search
@@ -16,7 +16,12 @@
|
||||
> Капча-солвер невозможен (`CAPTCHA_SOLVER` официально non-functional), cookie в Prowlarr
|
||||
> не вписать → единственный путь: **ручной вход в Chrome внутри FS**. Собран образ
|
||||
> `flaresolverr-vnc:latest` (Xvfb+fluxbox+x11vnc+noVNC), профиль Chromium на persistent
|
||||
> volume, порт `6080` для noVNC. **Развёрнуто и работает.** См. раздел «РЕШЕНИЕ».
|
||||
> volume, порт `6080` для noVNC. **Развёрнуто и работает.**
|
||||
> 🔴 **ДОСТУП ОТКРЫТ (2026-09-29): `https://vnc.mallexxx.duckdns.org/vnc.html`**,
|
||||
> логин `admin` / пароль `vnc-taiga`, роут в Caddy (TLS выпущен, **проверен → 200**).
|
||||
> Порт `6080` наружу НЕ проброшен — доступ через Caddy, роутер не нужен.
|
||||
> **Alex вошёл и видит Chrome** (проверено). Осталась его часть: логин + капча RuTracker,
|
||||
> затем проверка выживания cookies. См. раздел «РЕШЕНИЕ».
|
||||
> **Radarr/Sonarr/Lidarr** — health чистый; warning-и про индексе́ры живут в БД **Prowlarr**, не у них.
|
||||
> **Lidarr** — SkyHook работает, `musicCategory=lidarr` применён, поиск релизов отдаёт **43** FLAC.
|
||||
> ⚠️ Открыто: **RuTracker** — автоматический логин невозможен (нужен Alex, см. ниже);
|
||||
@@ -456,13 +461,58 @@ noVNC: http://localhost:6080/vnc.html → 200
|
||||
|
||||
### Как пользоваться (процедура «ручная капча»)
|
||||
|
||||
1. Alex открывает `http://mallexxx.duckdns.org:6080/vnc.html` (или через ssh-туннель,
|
||||
если порт не проброшен наружу через NAT — **не проверено**).
|
||||
2. Внутри видит рабочий стол fluxbox и Chrome.
|
||||
3. Заходит на `rutracker.org`, вводит логин/пароль, решает капчу.
|
||||
4. Cookies ложатся в `/config/chromium-profile` → **переживают рестарт контейнера**.
|
||||
1. Открыть `https://vnc.mallexxx.duckdns.org/vnc.html` → логин `admin`, пароль `vnc-taiga`
|
||||
(роут в Caddy, **проверен 200**). Альтернатива — ssh-туннель на `6080`.
|
||||
2. Внутри — рабочий стол fluxbox с Chrome (⚠️ Chrome надо **запустить**, см. питфолл ниже).
|
||||
3. Зайти на `rutracker.org`, ввести логин/пароль, решить капчу.
|
||||
4. Cookies лягут в `/config/chromium-profile` → **переживают рестарт контейнера**.
|
||||
5. FS переиспользует профиль при следующих сессиях → автологин проходит без капчи.
|
||||
|
||||
### 🔴 ПИТФОЛЛ: «cannot set background» + чёрный экран в noVNC
|
||||
|
||||
Симптомы, увиденные Alex: подключение проходит, fluxbox ругается `cannot set background`,
|
||||
меню есть, **окна нет — чёрный экран**.
|
||||
|
||||
**Причина.** fluxbox/Xvfb **работают штатно** — это безвредный шум (`Failed to read:
|
||||
session.screen0.*`, `Missing charsets in String to FontSet conversion`). Реальная причина
|
||||
пустого экрана: **FS запускает Chrome только на время запроса и убивает его.**
|
||||
Между запросами в `:99` **нет ни одного окна** — смотреть нечего.
|
||||
|
||||
**Проверка (на хосте Тайги):**
|
||||
```bash
|
||||
# X-сервер жив?
|
||||
docker exec flaresolverr sh -c 'ls -la /tmp/.X11-unix/'
|
||||
# → srwxrwxrwx X99 ✅
|
||||
|
||||
# Chrome запущен?
|
||||
docker exec flaresolverr sh -c 'ps aux | grep chromium | grep -v grep | wc -l'
|
||||
# → 0 ← вот причина чёрного экрана
|
||||
```
|
||||
|
||||
**Фикс — запустить Chrome вручную в том же display и оставить жить** (`-d` = detached,
|
||||
иначе убьётся вместе с exec):
|
||||
```bash
|
||||
docker exec -d -e DISPLAY=:99 flaresolverr sh -c \
|
||||
"chromium --no-sandbox --disable-gpu --disable-dev-shm-usage \
|
||||
--user-data-dir=/config/chromium-profile/chromium \
|
||||
--window-size=1280,900 --start-maximized rutracker.org > /tmp/chrome-manual.log 2>&1"
|
||||
sleep 12
|
||||
docker exec flaresolverr sh -c 'ps aux | grep chromium | grep -v grep | wc -l' # → 12
|
||||
```
|
||||
После этого в noVNC видно окно Chromium. **Alex подтвердил:** «ок, вижу хром».
|
||||
|
||||
⚠️ `--user-data-dir` указывать **точно как у FS** (`/config/chromium-profile/chromium`) —
|
||||
иначе профиль раздвоится и куки осядут в другом месте.
|
||||
|
||||
**Сопутствующий шум (НЕ ошибки):**
|
||||
```
|
||||
ERROR:dbus/object_proxy.cc Failed to call method: org.freedesktop.DBus.NameHasOwner
|
||||
ERROR:dbus/bus.cc Failed to connect to the bus: /run/dbus/system_bus_socket
|
||||
WARNING:zygote_communication_linux.cc Failed to send GetTerminationStatus message
|
||||
```
|
||||
dbus/zygote ругань есть в любом контейнере без dbus — на работу Chrome в Xvfb не влияет.
|
||||
Отличить «Chrome упал» от «Chrome жив» по `EXIT=124` от `timeout`: **124 = жив** (таймаут сработал).
|
||||
|
||||
### План (оставшиеся шаги)
|
||||
|
||||
| # | Шаг | Статус |
|
||||
@@ -1092,19 +1142,50 @@ ssh truenas_admin@mallexxx.duckdns.org 'docker network connect media_net caddy'
|
||||
```
|
||||
vnc.mallexxx.duckdns.org {
|
||||
basic_auth {
|
||||
admin $2a$14$.1IkoISmRXHCFi1KZld2ROa7E93cVZFNO3vomCVZYruLhO1l0hB1i
|
||||
admin $2a$14$tcfG4J1HSonHGX1rb3rsPeTkDWPmo7rpSbg/TAHhV3sRbWztWmqVa
|
||||
}
|
||||
reverse_proxy flaresolverr:6080
|
||||
}
|
||||
```
|
||||
|
||||
> 🔴 `basic_auth` **обязателен**: noVNC без пароля = открытый рабочий стол с залогиненным
|
||||
> RuTracker в интернете. Хэш тот же, что у `books`/`library` (`books-admin` → логин `admin`).
|
||||
> RuTracker в интернете.
|
||||
>
|
||||
> 🔴 **ПИТФОЛЛ: не переиспользовать чужой bcrypt-хэш.** В первой версии блока был скопирован
|
||||
> хэш от `books-admin` — тот же, что у `books`/`library`. Это дало **401 даже с паролем**,
|
||||
> потому что логин в паре с этим хэшем — `books-admin`, а не `admin`: `basic_auth` сверяет
|
||||
> **пару (логин, пароль)**, а не хэш отдельно. Лечится генерацией своего:
|
||||
> ```bash
|
||||
> docker exec caddy caddy hash-password --plaintext "vnc-taiga"
|
||||
> # → $2a$14$tcfG4J1HSonHGX1rb3rsPeTkDWPmo7rpSbg/TAHhV3sRbWztWmqVa
|
||||
> ```
|
||||
> Правильные креды: логин **`admin`**, пароль **`vnc-taiga`**.
|
||||
> ⚠️ Пароль хэшируется **до** заливки Caddyfile; в `caddy reload` ошибок не будет — просто 401.
|
||||
|
||||
**Бэкап:** `~truenas_admin/Caddyfile.bak-20260928-novnc` (2124 B).
|
||||
⚠️ `cp Caddyfile.bak-...` рядом с оригиналом → **Permission denied** (каталог root).
|
||||
Копировать в `~`.
|
||||
|
||||
### ✅ РЕЗУЛЬТАТ: роут проверен, работает
|
||||
|
||||
Порядок, который дал рабочий результат:
|
||||
1. `docker network connect media_net caddy` — **до** reload, иначе DNS не резолвится.
|
||||
2. `scp` нового Caddyfile → `docker exec caddy caddy validate --config /etc/caddy/Caddyfile`
|
||||
→ `Valid configuration`.
|
||||
3. `docker exec caddy caddy reload --config /etc/caddy/Caddyfile`.
|
||||
|
||||
Проверка (с Mac, снаружи):
|
||||
```bash
|
||||
curl -s -o /dev/null -w "%{http_code}\n" --max-time 25 \
|
||||
-u admin:vnc-taiga https://vnc.mallexxx.duckdns.org/vnc.html
|
||||
# → 200
|
||||
```
|
||||
|
||||
⚠️ **Первый curl может вернуть `000` (exit 35, TLS-ошибка)** — это не провал:
|
||||
Caddy в этот момент ещё выпускает сертификат. Сертификат **выпустился успешно**
|
||||
(`grep -i acme` → `authorization finalized`, `authz_status: valid`, `tls-alpn-01`),
|
||||
`000` был из-за гонки с выпуском. **Повторить curl через 10–20 с.**
|
||||
|
||||
### Два способа доступа (оба без правок роутера)
|
||||
|
||||
| Способ | Команда / адрес | Когда |
|
||||
|
||||
Reference in new issue
Block a user