Base is hotfix/oflx-encrypted-logging-context; in every place both trees touched the same code, the hotfix version wins (3-level logger, heard-first routing + MarkStalled, replay window, boards JSON API, robust SOCKS5 auth). Brought over from meepo161/openfluxfork@fork-main (the mobile/ Android bridge is intentionally left in the Android fork): - provision/ + node_wizard.go + --node-wizard: SSH VDS exit-node install. - deploy/node-install.sh + .github/workflows/node-release.yml: pinned, hash-verified node release. - netbind/ + tun_windows.go + --inbound=tun on Windows (Wintun): full tunnel with the core's own sockets bound to the real interface; dial sites in direct/boards/vyandex/cupsonline/mailru/yandex now dial bound. - transport/yandex/cookies.go + --yandex-cookies-file: Netscape cookie import into the shared vyandex jar (sessions and single-transport alike). - yandex: CheckVolgaDocument (doc suitability for the wizard) and the PoW captcha fix (a rejected challenge is a captcha, not a bad document). - --http-proxy: HTTP CONNECT proxy over the same tunnel as SOCKS5. - ipcStatusLoop: per-second IPC Status frame with the active carrier (Session.LiveTransports / ActiveTransport). Builds for darwin, windows and linux; go vet and the full test suite pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.8 KiB
Подключение через Яндекс Документы
Эта инструкция относится к vyandex в данном форке: одна exit-нода на Linux VPS и один клиент на Android или ПК. Сначала настройте один канал и проверьте его. Для каждого одновременно работающего устройства создавайте отдельный документ Яндекса, отдельный ключ и отдельную exit-ноду; один документ для нескольких клиентов может приводить к потере ответов.
Что подготовить
- Linux VPS с Docker и Compose, доступом к Яндекс Документам и возможностью запускать контейнер с
NET_RAWиNET_ADMIN. - Новый документ Яндекса с доступом на редактирование у используемого аккаунта. Сохраните его полную ссылку вида
https://docs.yandex.ru/edit/d/...только в локальном.env. - Netscape
cookies.txt, экспортированный из браузерной сессии этого аккаунта. Если без cookies ваш документ доступен и CAPTCHA не появляется, файл всё равно требуется в приведённых шаблонах; для анонимного варианта удалите строку--yandex-cookies-fileи соответствующийvolumesиз обоих шаблонов. - Секретный ключ канала. На Linux:
openssl rand -hex 32 > channel.key. Содержимое файла должно совпадать на клиенте и VPS. Для Android введите этот текст в поле ключа.
Cookie-файл даёт доступ к Яндекс-аккаунту, а ссылка на документ и ключ — к каналу. Не добавляйте их в Git, не публикуйте QR с ключом и ограничьте права локальных файлов (chmod 600 channel.key yandex-cookies.txt .env на Linux).
1. Exit-нода на VPS
git clone https://github.com/meepo161/openfluxfork.git
cd openfluxfork
docker build -t openflux:local .
mkdir -p ~/openflux-phone-1
cp deploy/vyandex-exit.compose.yml ~/openflux-phone-1/compose.yml
cd ~/openflux-phone-1
printf 'DOC_URL=%s\n' 'https://docs.yandex.ru/edit/d/ВАШ_ID_ДОКУМЕНТА' > .env
openssl rand -hex 32 > channel.key
# Положите сюда свой экспорт браузера: yandex-cookies.txt
chmod 600 .env channel.key yandex-cookies.txt
docker compose up -d
docker compose logs --tail 30
Убедитесь, что в журнале есть Running as EXIT NODE. Сохраните channel.key для клиента и передавайте его только защищённым способом. Cookie-файл клиента также должен содержать действующую сессию Яндекса. Сборка образа сама по себе не подтверждает работу канала: проверьте реальный запрос с клиента ниже.
2а. Android
Используйте приложение из Android-форка с arm64-бинарником OpenFlux. Установите APK поверх предыдущей версии, если подпись совпадает. Откройте приложение, добавьте профиль вручную и укажите:
| Поле | Значение |
|---|---|
| Транспорт | vyandex / Yandex Volga |
| Ссылка | тот же URL документа, что в .env exit-ноды |
| Ключ шифрования | точное содержимое channel.key |
| Legacy codec | выключен на обеих сторонах |
| Debug | выключен для обычной работы |
После сохранения нажмите «Подключить». При первом запуске выберите yandex-cookies.txt в системном окне выбора файла и разрешите создание VPN. Если сессия Яндекса позже истечёт, откройте меню профиля и выберите «Импорт сессии Яндекса» для нового cookie-файла. Откройте на телефоне https://api.ipify.org: должен отобразиться IP вашей VPS.
2б. ПК через SOCKS5
На ПК с Docker соберите тот же образ из этого репозитория. Создайте отдельную папку клиента и скопируйте туда deploy/vyandex-client.compose.yml как compose.yml, .env с тем же DOC_URL, channel.key и свой yandex-cookies.txt. Запустите docker compose up -d. По умолчанию SOCKS5 доступен только на 127.0.0.1:1081. Другой локальный порт задаётся строкой SOCKS_PORT=1082 в .env; это не создаёт новый канал без отдельного документа и exit-ноды.
Укажите в браузере SOCKS5 127.0.0.1:1081 и включите DNS через прокси. Проверка в PowerShell:
curl.exe --max-time 30 --proxy socks5h://127.0.0.1:1081 https://api.ipify.org
Результатом должен быть IP VPS. SOCKS5 направляет через OpenFlux только программы, настроенные на этот прокси.
Если сайт не открывается
Проверьте docker compose ps и журналы exit-ноды, затем одинаковую ссылку, ключ и кодек на обеих сторонах. 401, CAPTCHA или ошибка авторизации означают, что сессию Яндекса нужно обновить. Если статус клиента «Работает», но сайты не открываются, выполните запрос к api.ipify.org и посмотрите, растёт ли счётчик полученных пакетов. Транспорт автоматически обновляет авторизацию при переподключении WebSocket, планово меняет сессию и пытается восстановить канал после 60 секунд без ответа на пользовательский пакет. Это не заменяет ручное обновление истёкших cookies.