OxPulse Partners
ИНФРАСТРУКТУРА

Звонки твоих пользователей не падают в сложных сетях.

Стандартный WebRTC отказывает у 20–40% реальных пользователей: корпоративные firewall, мобильный CGNAT, ограниченный bandwidth. Запусти relay-узел, и эти звонки доходят. Получаешь брендированный мессенджер на своём домене и место в распределённой сети.

СЕТЬ СЕЙЧАС 4 узлов 3 регионов 0.8 TB за 30 дней

Где обычный WebRTC ломается

UDP блокируется на edge. Корпоративные firewall и часть мобильных операторов фильтруют UDP трафик целиком. Без TCP fallback media-слой WebRTC просто не устанавливается. Реальная база — около 20% корпоративных сетей в 2025–2026.

Carrier-grade NAT. Мобильные пользователи за CGNAT не могут установить direct peer соединение — public endpoint не известен ни одной стороне. Около 40% mobile-only сессий требуют relay.

Географическая задержка. Без ближайшего relay media маршрутизируется через дальний TURN — это +150–300ms p99 RTT. Восприятие "тормозит" возникает уже на 200ms.

Что делает узел

TURN-relay узел в составе федерации OxPulse.

  1. 01 TURNS-on-:443. TURN через TCP/TLS на 443-м порту — для пользователей у которых UDP заблокирован. Внешне выглядит как обычный HTTPS трафик.
  2. 02 Mesh-нагрузка. Узел подключается к pool — нагрузка распределяется между всеми операторами сети. Один узел в обслуживании ≠ пользователи отключены.
  3. 03 Твой бренд. call.твой-домен с твоей палитрой, лого, языковым default. Пользователи видят твой бренд, не наш.

Что получает оператор

Брендированный мессенджер на своём домене

JSON-конфиг: лого, palette, hero copy, OG-карточка, языковые defaults. Server-side инжекция через Host header — без FOUC. Контроль конфига через PR в open-source репо или через operator console.

Резервирование за счёт федерации

Если твой узел уходит в обслуживание — траффик мягко переключается на другие узлы сети. Для конечных пользователей — zero perceived downtime. Это работает в обе стороны: ты тоже резервируешь других.

Снижение поддержки

Тикеты "звонок не подключился у части пользователей" падают: peer-to-peer + multi-region relay автоматически закрывают edge-кейсы. Меньше эскалаций, чище SLA.

Что нужно от тебя

ПараметрМинимумРекомендуется
ОСDebian 12 / Ubuntu 22+Ubuntu 24.04 LTS
CPU1 vCPU2 vCPU
RAM1 GiB2 GiB
Диск10 GiB20 GiB
Public IPIPv4IPv4 + IPv6
Открытые порты80, 443, 3478 UDP/TCP+ 5349 TCP, 49152-65535 UDP
DNSA-record controlwildcard A-record
Время30 min setup5 min/mo ongoing

Hosting-провайдер влияет на качество в сложных сетях. Гайд по выбору ASN и регионов лежит в документации архитектуры узла. Hetzner / DigitalOcean / Cloudflare для российского трафика дают деградацию — это не про политику, а про инженерную ситуацию (rate limiting на этих ranges).

Установка

01

Получи install-токен

После приглашения из waitlist оператор пришлёт одноразовый токен. Используется один раз в bootstrap-скрипте.

02

Запусти bootstrap на своём сервере

Один curl-команда. Скрипт ставит docker, поднимает 3 контейнера (caddy + xray-client + coturn), просит ACME сертификат у Let's Encrypt, рендерит конфиги.

curl -fsSL https://github.com/anatolykoptev/oxpulse-partner-edge/releases/latest/download/partner-edge-installer.sh \
  | sudo bash -s -- \
      --domain=call.<your-domain> \
      --partner-id=<id> \
      --token=ptkn_<hex>
03

Добавь A-record в DNS

Сервис идёт live примерно через минуту после того, как Caddy получает сертификат. Wildcard A-record рекомендуется для упрощения onboarding и будущих TURNS subdomain.

call.<your-domain>     A    <vm-public-ip>
*.<your-domain>        A    <vm-public-ip>

Что говорят операторы

Подключение узла заняло около 20 минут — DNS, bootstrap, branding JSON. Наши пользователи видят один консистентный VPN+мессенджер surface. Тикеты по разрывам звонков упали на 60% за первый месяц.
DevOps lead, VPN-провайдер, EU
Локальное СМИ — нашим читателям нужен private channel который не падает когда блокируется привычный мессенджер. Узел в RU-domestic hosting, latency для local users <30ms.
Editorial team, региональное СМИ, RU
Поставили node ради резервирования основного канала связи. Теперь это часть нашего стандартного DR-плана. Раз в квартал делаем drill — graceful failover отрабатывает чисто.
IT lead, NGO, EU

Безопасность и соответствие

Шифрование
ML-KEM-768 hybrid PQ + Reality TLS
Сертификаты
Let's Encrypt ACME HTTP-01
Аудит
Третья сторона — pentest запланирован Q4 2026. SOC 2 Type II в работе.
Air-gap
Поддерживается, документация по запросу.

Частые вопросы

Какой объём трафика ожидать?

Зависит от пользовательской базы. Маленькая (<1k DAU): ~50–200 GB relay в месяц. Средняя (1–10k): ~0.5–2 TB. Signaling — пренебрежимо.

Сам peer-to-peer трафик через узел не идёт — только когда прямое соединение невозможно (NAT, firewall).

Какова экономика хостинга?

Small VPS: $5–20/мес. Bandwidth — по нагрузке выше. Никаких выплат от/к нам. Это не affiliate и не revenue-share.

Имеет смысл если у тебя уже есть инфраструктура и аудитория, для которой звонки — часть продукта или сервиса.

Какие регуляторные риски?

Зависит от юрисдикции. EU/UK: GDPR ответственность за хост — TURN не хранит content (peer-to-peer media), но IP-логи технически возможны. По умолчанию access-логи отключены.

RU: consult с локальным юристом. Анти-цензурная риторика на лендинге намеренно отсутствует — это инфраструктура для resilience против обычных сетевых проблем (CGNAT, firewall).

US: Telecom relay neutrality в большинстве штатов. Наша сторона — open-source, никаких third-party data sharing.

Какой контроль над брендом?

Полный. JSON-конфиг определяет: лого SVG, цвета (primary/secondary/accent/on-primary), favicon, OG image, hero copy на 4 языках, CTA label.

Server-side инжекция через Host header — пользователь видит твой бренд с первого paint, без FOUC.

Можно остановить когда угодно?

Да. systemctl stop oxpulse-partner-edge или координированный drain через operator console (приоритет узла поднимается до 999, новых сессий не поступает, через ~10 мин последний звонок завершается).

Privacy моих пользователей?

Media — peer-to-peer, мы не видим content. Signaling — encrypted (E2EE keys через DC id:1 sframe-keys). IP-адреса временно видны coturn для NAT traversal — это inherent для любого WebRTC TURN.

Нет аккаунтов, нет phone-номеров, нет phone-home трекинга.

Как обновляется?

Systemd timer ежедневно дёргает update.sh. Pulls latest container images, re-renders templates from /api/partner/node-config. Branding и secrets сохраняются. Rolling restart per service — zero-downtime для текущих звонков.

Что если что-то сломается?

Issues: github.com/anatolykoptev/oxpulse-partner-edge/issues. Operator escalation: partnerships@oxpulse.chat. Healthcheck скрипт делает 9 проверок при инсталле и в любой момент on-demand.

Запросить место в очереди

Email сохраним, чтобы написать, когда откроется следующая волна онбординга. Никакой автоматической рассылки кроме этого письма.

Открытый код: github.com/anatolykoptev/oxpulse-partner-edge · Разговор перед commit: partnerships@oxpulse.chat