Files
netrunner-landing/scripts/docs-content.ru.mjs
T
nineap f02124eb1d Наполнить /docs реальным контентом вместо визуальной заглушки
Раздел документации на сайте (documents_ru/documents_en в PocketBase)
содержал только два обрубленных стаб-документа. Добавлен полный набор
из 12 документов на русском и английском (Core/Security/Network/Legal),
технически сверенных с реальной реализацией протокола (NRXP, ChaCha20-
Poly1305, X25519, TLS-маскировка под JA3/JA4) и с моделью сессий
(HttpOnly-cookie, ротация refresh-токенов) — не маркетинговые обещания,
а описание того, что фактически работает в коде.

Юридические документы (Privacy/Terms/Refund) содержат явные плейсхолдеры
для реквизитов оператора сервиса — сервис ещё не зарегистрирован ни в
одной юрисдикции, поэтому не полагаться на них как на итоговый текст
без замены плейсхолдеров.

scripts/seed-docs.mjs — идемпотентный скрипт наполнения PocketBase
(upsert по title, с alias-картой под старые названия стабов); ничего не
записывает без --apply и без PB_ADMIN_EMAIL/PB_ADMIN_PASSWORD в
окружении — админ-доступ к CMS нигде не хардкожен.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-05 20:25:10 +07:00

317 lines
34 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Контент раздела /ru/docs. Поля соответствуют схеме коллекции PocketBase
// `documents_ru`: title, category (Core|Security|Network|Legal),
// status (Encrypted|Public|Internal|Dynamic), content (обычный текст,
// рендерится через white-space: pre-wrap — без markdown-разметки).
//
// Технические детали (протокол NRXP, ChaCha20-Poly1305, X25519, TLS-маскировка,
// httponly-cookie сессии) сверены с реальной реализацией в netrunner-proxy и
// netrunner-backend на момент написания — не маркетинговые обещания.
//
// Разделы Legal содержат плейсхолдеры в квадратных скобках там, где нужны
// реальные реквизиты оператора сервиса (юрлицо/ИП, юрисдикция, e-mail) —
// на момент написания сервис ещё не зарегистрирован ни в одной юрисдикции.
// Замени плейсхолдеры перед тем, как полагаться на эти документы юридически.
export const DOCS_RU = [
// ───────────────────────────── CORE ─────────────────────────────
{
title: "С чего начать",
category: "Core",
status: "Public",
content: `НЕТРАННЕР // ПЕРВЫЙ ЗАПУСК
Регистрация e-mail или телефона не требуется — вход в аккаунт устроен так, чтобы связывать с вами как можно меньше данных.
СПОСОБ 1 — TELEGRAM
Откройте бота @ntrnr_vpn_bot и нажмите «Личный кабинет». Вход подтверждается официальным Telegram Login Widget — сервер проверяет криптографическую подпись Telegram, ваш пароль от Telegram серверу VPN никогда не передаётся.
СПОСОБ 2 — GHOST PROTOCOL (полностью анонимный)
Если не хотите привязывать аккаунт даже к Telegram — сгенерируйте seed-фразу прямо в личном кабинете. Seed — единственный ключ от аккаунта: он не хранится нигде, кроме как у вас, и не привязан к номеру телефона, e-mail или Telegram ID.
ВАЖНО: seed нельзя восстановить. Потеряли — потеряли аккаунт и всё, что на нём. Обязательно скачайте .txt с seed-фразой и сохраните офлайн (менеджер паролей, бумага — что угодно, кроме скриншота в общем облаке).
ДАЛЬШЕ
1. Скачайте клиент под свою платформу в разделе /download (Windows, Linux и Android доступны сейчас; macOS и iOS — в разработке).
2. В личном кабинете активируйте тариф — есть бесплатный триал для аккаунтов, привязанных к Telegram (анти-абуз: на Ghost-аккаунты триал не выдаётся, иначе его штампуют скриптами).
3. Подключение конфигурируется автоматически — вручную ничего прописывать не нужно.
EOF`,
},
{
title: "Тарифы, оплата и биллинг",
category: "Core",
status: "Public",
content: `ОПЛАТА // TON
Оплата принимается только в криптовалюте TON — без банковских карт и без привязки к платёжным системам, которые требуют паспортные данные.
КАК ЭТО РАБОТАЕТ
1. Выбираете тариф — сервер выставляет счёт (invoice) с точной суммой в TON по актуальному курсу на момент выставления.
2. Переводите указанную сумму на адрес мастер-кошелька с указанным в счёте комментарием (memo) — именно по нему платёж и опознаётся однозначно.
3. Сервер проверяет транзакцию в блокчейне TON напрямую: сверяет сумму (не меньше выставленной), адрес назначения и memo. Один и тот же tx hash не может быть засчитан дважды.
4. Статус меняется на «оплачено» автоматически, без ручной модерации.
ПОЧЕМУ ТОЛЬКО TON
Прозрачность и проверяемость: платёж подтверждается математически по данным блокчейна, а не по факту доверия к процессингу. Обратная сторона — переводы в блокчейне необратимы, см. «Политику возврата средств» в разделе Legal.
РЕФЕРАЛЬНАЯ ПРОГРАММА
Ссылка на приглашение доступна в личном кабинете. Самоприглашение (один и тот же человек как реферер и реферал) заблокировано на сервере технически, а не только на словах.
EOF`,
},
// ─────────────────────────── SECURITY ───────────────────────────
{
title: "Модель угроз и шифрование",
category: "Security",
status: "Encrypted",
content: `THREAT_MODEL.LOG
ОТ ЧЕГО ЗАЩИЩАЕТ NETRUNNER
- Пассивный перехват трафика на пути провайдер → сайт (Wi-Fi в кафе, оператор связи, транзитные сети).
- DPI-классификация и блокировка по протоколу (см. «Маскировка трафика и обход DPI»).
- Привязка активности к личности через классические каналы регистрации (e-mail/телефон) — за счёт Ghost Protocol.
ОТ ЧЕГО НЕ ЗАЩИЩАЕТ И НЕ МОЖЕТ ЗАЩИЩАТЬ НИ ОДИН VPN
- Компрометация самого устройства (вредоносное ПО, кейлоггер, физический доступ).
- Деанонимизация через сами посещаемые сервисы, если вы входите там под своим именем.
- Юридическую ответственность за содержание трафика — шифрование канала не делает законным то, что по нему передаётся.
КРИПТОГРАФИЯ ТУННЕЛЯ
Каждый кадр данных внутри туннеля защищён AEAD-шифрованием ChaCha20-Poly1305 — это одновременно шифрование и проверка целостности (auth tag): подмена или изменение хотя бы одного бита в пути обнаруживается, и кадр отбрасывается.
Обмен ключами — X25519 (эллиптическая криптография Диффи-Хеллмана), ключ для сессии генерируется заново при каждом установлении туннеля (ephemeral). Это даёт forward secrecy: даже если бы ключ одной сессии где-то утёк, это не расшифровывает ни прошлые, ни будущие сессии — у каждой свой одноразовый ключ. Финальные ключи шифрования выводятся из результата обмена через HKDF, а не используются напрямую.
Каждый кадр несёт HMAC-тег, построенный по принципу, похожему на TOTP (временная составляющая) — это защита от replay-атак: перехваченный и повторно отправленный кадр не пройдёт проверку.
Управляющие кадры дополняются случайным паддингом — это усложняет анализ трафика по длинам пакетов.
EOF`,
},
{
title: "Маскировка трафика и обход DPI",
category: "Security",
status: "Encrypted",
content: `STEALTH_LAYER.LOG
DPI (Deep Packet Inspection) — это то, чем провайдеры и цензурирующие системы отличают «обычный HTTPS» от VPN/прокси и блокируют второе. Большинство VPN-протоколов имеют узнаваемый отпечаток именно на этом уровне, а не в самом шифровании.
ЧТО МЫ ДЕЛАЕМ
Первый пакет туннеля выглядит как настоящее TLS-рукопожатие (ClientHello/ServerHello) — не приблизительно, а побайтово повторяя порядок и состав cipher suite'ов, TLS-расширений и GREASE-значений реального браузера (профиль JA3/JA4). Для DPI, который классифицирует трафик по отпечатку хендшейка, наш трафик неотличим от обычного захода в браузер на https-сайт.
Настоящий обмен ключами (X25519) физически спрятан внутри полей поддельного TLS-хендшейка — например, в расширении KeyShare и в поле session_id, которое по стандарту выглядит как случайные байты, а на деле несёт часть аутентификационного тега.
ЧЕСТНО О ГРАНИЦАХ ЭТОГО ПОДХОДА
Это не настоящий TLS: нет цепочки сертификатов, нет проверки подлинности сервера в смысле обычного HTTPS, потому что задача — не защитить веб-страницу, а спрятать сам факт туннелирования от систем классификации трафика. Реальная защита данных обеспечивается отдельным слоем (см. «Модель угроз и шифрование»), а не этим слоем маскировки.
Если соединение по какой-то причине не опознаётся сервером как легитимное (например, кто-то сканирует порт, пытаясь понять, что на нём висит), сервер незаметно «отражает» такую попытку на постороннее содержимое (stealth fallback) — снаружи это выглядит как обычный веб-сервер, а не как узел, который специфично отвечает на VPN-запросы и потому вычисляется сканированием.
EOF`,
},
{
title: "Аутентификация и хранение сессии",
category: "Security",
status: "Encrypted",
content: `SESSION.LOG
НИКАКОГО ТОКЕНА В LOCALSTORAGE
Сессия в личном кабинете и на сайте держится исключительно в HttpOnly-cookie — то есть в cookie, которую браузерный JavaScript в принципе не может прочитать (ни ваш скрипт, ни чужой инжектированный при XSS). Токен нигде не лежит в localStorage/sessionStorage: если бы он там лежал, украсть его мог бы любой скрипт, который вообще смог выполниться на странице.
Короткоживущий access-токен (15 минут) выдаётся вместе с ротируемым refresh-токеном (30 дней). При обращении к API с истёкшим access-токеном сессия обновляется автоматически в фоне, без повторного логина. В базе хранится не сам refresh-токен, а только его SHA-256-хеш — даже при утечке БД восстановить токен из хеша невозможно.
Если сервер видит попытку повторно использовать уже отозванный (ротированный) refresh-токен — это однозначный сигнал компрометации, и в ответ отзываются все сессии аккаунта, а не только эта.
ЗАЩИТА ОТ CSRF
Для запросов, которые меняют состояние (оплата, смена настроек и т.д.) и идут по cookie-сессии, сервер дополнительно сверяет заголовки Origin/Referer со списком разрешённых доменов — сторонний сайт не может незаметно от вашего имени дёрнуть API, даже если ваша cookie действительна.
ВХОД ЧЕРЕЗ TELEGRAM
Подпись данных от Telegram Login Widget проверяется по HMAC-SHA256 постоянным по времени сравнением (без утечки по таймингу через посимвольное сравнение) — так исключается и подделка данных виджета, и атака по времени отклика сервера.
EOF`,
},
{
title: "Что мы храним, а что нет",
category: "Security",
status: "Public",
content: `DATA_RETENTION.LOG
Коротко: мы храним ровно то, что нужно для работы аккаунта и биллинга, и не храним журнал вашей активности в интернете.
ЧТО ХРАНИТСЯ НА СЕРВЕРЕ
- Идентификатор аккаунта: Telegram ID (если вошли через Telegram) ИЛИ ничего личного вообще (если вошли через Ghost Protocol — там нет ни email, ни телефона, ни имени).
- Статус подписки и история платежей (сумма, tx hash в блокчейне TON, дата) — нужно для биллинга и разрешения споров по оплате.
- Хеш (не сам токен) активной сессии и время её создания — нужно для защиты от кражи сессии и выхода со всех устройств по требованию.
- Реферальная связь между аккаунтами (кто кого пригласил) — только для начисления бонусов.
ЧЕГО НЕТ
- Журнала посещённых через VPN сайтов, IP-адресов назначения, содержимого трафика — на уровне протокола туннеля (NRXP) нет кода, который писал бы подобное в базу данных.
- Истории «кто когда подключался к какой ноде» дольше, чем нужно для мгновенного health-check (жив ли сервер сейчас прямо сейчас) — это проверка состояния инфраструктуры, а не журнал активности пользователя.
ЧТО ВАЖНО ПОНИМАТЬ ЧЕСТНО
Серверные процессы, как у любого сервиса, в моменте пишут технический эксплуатационный лог — ошибки, старт/остановка соединений — для отладки инфраструктуры. Это не структурированная база данных вашей активности и не привязывается к личности, но было бы нечестно утверждать, что вообще ни один процесс в мире никогда не пишет ни одной строки в лог. Если для вашей модели угроз это принципиально — используйте Ghost Protocol и не публикуйте на сторонних ресурсах данные, которые можно связать с вашей учётной записью.
EOF`,
},
{
title: "Ответственное раскрытие уязвимостей",
category: "Security",
status: "Public",
content: `BUG_BOUNTY.LOG // RESPONSIBLE DISCLOSURE
Нашли уязвимость — в туннеле, в личном кабинете, в боте или в биллинге? Расскажите нам раньше, чем кому-то ещё.
ПРАВИЛА
1. Не эксплуатируйте находку дальше, чем нужно для доказательства (PoC) — никаких массовых выгрузок чужих данных, DoS, попыток вывода чужих средств.
2. Дайте нам разумное время на исправление, прежде чем публиковать детали публично.
3. Не трогайте чужие аккаунты и данные без явного согласия их владельцев.
КАК СООБЩИТЬ
Напишите в поддержку через Telegram-бота @ntrnr_vpn_bot с пометкой SECURITY в первом сообщении — это самый быстрый способ достучаться до тех, кто реально может исправить проблему.
[Отдельный e-mail для security-репортов и публичный PGP-ключ будут добавлены сюда после регистрации юридического лица — см. также раздел Legal.]
Мы не обещаем денежных вознаграждений (bug bounty в классическом смысле) на данный момент, но обещаем: разбор в приоритете, публичную благодарность (если сами захотите) и что вашу находку не проигнорируют.
EOF`,
},
// ─────────────────────────── NETWORK ───────────────────────────
{
title: "Архитектура туннеля",
category: "Network",
status: "Internal",
content: `ARCH.MAP // ВНУТРЕННЕЕ УСТРОЙСТВО
Три слоя, снизу вверх:
1. RAWCAST — локальный уровень на устройстве клиента. Реальные TCP/UDP-соединения приложений (браузер, мессенджер и т.д.) описываются компактным кадром с полями протокола, типа события, локального socket_id, адреса и порта назначения. Этот кадр — внутренний формат, наружу по сети он не ходит.
2. NRXP (Netrunner eXchange Protocol) — прикладной протокол внутри туннеля. RawCast-кадр упаковывается в кадр NRXP: 25-байтовый заголовок (auth tag, id потока, тип, длина полезной нагрузки, длина паддинга) + сама нагрузка. Множество независимых потоков (например, десяток одновременных соединений вашего браузера) мультиплексируются в одном туннеле — не нужно поднимать отдельное соединение на каждое; id потока в NRXP как раз и различает их.
3. ТРАНСПОРТ — каждый кадр NRXP шифруется (ChaCha20-Poly1305) и упаковывается как одна запись TLS ApplicationData внутри замаскированного TLS-хендшейка (см. «Маскировка трафика и обход DPI»). Снаружи — неотличимо от HTTPS-сессии браузера.
НА УСТРОЙСТВЕ
Клиент перехватывает трафик через TUN-интерфейс и собственный userspace-стек (smoltcp) — работает на уровне IP-пакетов, а не полагается на системные прокси-настройки ОС, которые не все приложения соблюдают.
НА СЕРВЕРЕ
Нода принимает входящее соединение, проверяет, что это легитимный NRXP-клиент (а не сканер порта или случайный HTTPS-запрос), и либо поднимает туннель, либо тихо «отражает» соединение как обычный веб-сервер (stealth fallback), не выдавая, что порт вообще что-то знает про VPN.
ВЫБОР НОДЫ
Список доступных серверов и параметры маршрутизации отдаются авторизованному клиенту сервером API по короткоживущему одноразовому токену — вручную ничего прописывать не требуется, а сама возможность получить список нод завязана на активную подписку.
EOF`,
},
{
title: "Клиенты и платформы",
category: "Network",
status: "Public",
content: `PLATFORMS.LOG
Ядро (движок туннеля) написано на Rust и переиспользуется целиком между платформами — криптография и протокол одни и те же везде, а не переписаны заново под каждую ОС со своими багами.
ГОТОВО И ДОСТУПНО СЕЙЧАС
- Linux — нативный клиент, TUN-интерфейс, требует cap_net_admin/cap_net_raw (или root).
- Windows — нативный десктопный клиент.
- Android — приложение на Kotlin поверх Rust-ядра, собранного через UniFFI/JNI под arm64/armv7/x86/x86_64.
В РАЗРАБОТКЕ
- macOS — десктопный клиент в работе.
- iOS — идёт бета-тестирование.
Актуальные версии и ссылки на скачивание — на странице /download; там же видно, какая платформа уже «активна», а какая ещё в разработке — статус не приукрашивается.
EOF`,
},
// ──────────────────────────── LEGAL ────────────────────────────
{
title: "Политика конфиденциальности",
category: "Legal",
status: "Public",
content: `ПОЛИТИКА КОНФИДЕНЦИАЛЬНОСТИ
Дата последнего обновления: [указать при публикации]
1. КТО МЫ
Оператор сервиса Netrunner VPN: [наименование юридического или физического лица — будет указано здесь после завершения регистрации; до этого момента настоящий документ носит информационный, а не окончательный юридический характер].
2. КАКИЕ ДАННЫЕ МЫ СОБИРАЕМ
- При входе через Telegram: Telegram ID и данные, которые сам Telegram Login Widget передаёт при авторизации (имя, username, фото — если применимо).
- При входе через Ghost Protocol: персональные данные не собираются — seed-фраза генерируется на вашей стороне и не привязана к личности.
- Данные платежей: сумма, идентификатор транзакции в блокчейне TON, дата — платежи в TON публичны в самом блокчейне независимо от нас.
Подробнее о том, что именно хранится и что не хранится на техническом уровне — см. документ «Что мы храним, а что нет» в разделе Security.
3. ДЛЯ ЧЕГО ИСПОЛЬЗУЮТСЯ ДАННЫЕ
Исключительно для предоставления сервиса: аутентификация, выдача доступа к VPN-нодам согласно активной подписке, обработка платежей, реферальные начисления, ответы в поддержке.
4. ПЕРЕДАЧА ТРЕТЬИМ ЛИЦАМ
Данные не продаются и не передаются третьим лицам для маркетинга. Технически необходимая передача происходит только через сеть Telegram (для входа через неё) и публичный блокчейн TON (для платежей) — оба этих канала работают по своим собственным правилам, не под нашим контролем.
5. ВАШИ ПРАВА
Вы можете запросить удаление аккаунта и связанных с ним данных через поддержку в Telegram-боте. Обратите внимание: запись о платеже в блокчейне TON удалить невозможно физически — блокчейн неизменяем по своей природе.
6. КОНТАКТЫ
Поддержка: Telegram-бот @ntrnr_vpn_bot.
Отдельный юридический адрес и e-mail для официальных запросов будут опубликованы здесь после регистрации оператора сервиса.
EOF`,
},
{
title: "Условия использования",
category: "Legal",
status: "Public",
content: `УСЛОВИЯ ИСПОЛЬЗОВАНИЯ
Дата последнего обновления: [указать при публикации]
1. ПРИНЯТИЕ УСЛОВИЙ
Используя сервис Netrunner VPN (сайт, бот, клиентские приложения), вы соглашаетесь с настоящими условиями. Если не согласны — не используйте сервис.
2. ДОПУСТИМОЕ ИСПОЛЬЗОВАНИЕ
Сервис предоставляется для законного использования в юрисдикции, из которой вы к нему обращаетесь. Запрещается использовать сервис для: атак на инфраструктуру третьих лиц (DDoS, брутфорс, сканирование без разрешения), рассылки спама, распространения вредоносного ПО, оборота материалов, запрещённых применимым законодательством, и обхода санкционных ограничений там, где это прямо запрещено законом.
Мы технически не читаем содержимое вашего трафика (см. «Что мы храним, а что нет»), но это не освобождает вас от ответственности за то, что вы делаете, — шифрование канала не делает законным незаконное действие внутри него.
3. АККАУНТ
Вы несёте ответственность за сохранность своих учётных данных — в первую очередь seed-фразы Ghost Protocol: она не восстанавливается, и её утеря равносильна потере аккаунта. Передача аккаунта третьим лицам не рекомендуется и осуществляется на ваш собственный риск.
4. ПОДПИСКА И ОПЛАТА
Оплата принимается в TON согласно действующим тарифам. Правила по возвратам вынесены в отдельный документ «Политика возврата средств».
Бесплатный триал-период (если доступен) предоставляется один раз на аккаунт, привязанный к Telegram; технические меры предотвращают повторное получение триала через создание новых анонимных аккаунтов.
5. ДОСТУПНОСТЬ СЕРВИСА
Мы прилагаем усилия для непрерывной работы нод, но не гарантируем 100% аптайм — сеть состоит из отдельных серверов, и отдельная нода может временно уйти в офлайн; в таком случае доступны остальные ноды сети.
6. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
Сервис предоставляется «как есть». Мы не несём ответственности за последствия использования сервиса в нарушение пункта 2, а также за действия третьих лиц (провайдеров, блокчейн-сети TON, Telegram) вне нашего контроля.
7. ИЗМЕНЕНИЯ УСЛОВИЙ
Мы можем обновлять настоящие условия; продолжение использования сервиса после публикации новой версии означает согласие с ней.
8. ОПЕРАТОР И ЮРИСДИКЦИЯ
[Наименование оператора и применимая юрисдикция будут указаны здесь после завершения регистрации юридического лица/ИП. До этого момента документ носит информационный характер.]
EOF`,
},
{
title: "Политика возврата средств",
category: "Legal",
status: "Public",
content: `ПОЛИТИКА ВОЗВРАТА СРЕДСТВ
Оплата принимается в криптовалюте TON. В силу природы блокчейна подтверждённые транзакции необратимы технически — ни мы, ни вы не можете «отменить» перевод после его подтверждения в сети.
КОГДА ВОЗВРАТ ВОЗМОЖЕН
- Ошибочная переплата (перевели больше суммы, указанной в счёте) — избыток возвращается вручную после обращения в поддержку.
- Технический сбой на нашей стороне, из-за которого оплаченный тариф не был активирован, а исправить это перевыставлением доступа невозможно.
Возврат в этих случаях выполняется вручную на указанный вами TON-адрес; комиссию сети оплачивает [сторона будет уточнена в финальной версии политики].
КОГДА ВОЗВРАТ НЕ ПРЕДУСМОТРЕН
- Вы передумали после активации тарифа и частичного использования периода.
- Аккаунт заблокирован за нарушение «Условий использования».
- Потеря доступа к аккаунту из-за утери seed-фразы Ghost Protocol — это не техническая ошибка сервиса, а особенность анонимной модели входа, о которой предупреждено при генерации seed.
КАК ЗАПРОСИТЬ ВОЗВРАТ
Обратитесь в поддержку через Telegram-бота @ntrnr_vpn_bot, указав tx hash транзакции и суть проблемы. Решение по нестандартным случаям — на усмотрение оператора сервиса.
EOF`,
},
];