Skip to content

Contour Node — обзор

Аудитория: DevOps / системный администратор, выполняющий установку on-prem узла обработки медиа (Contour Node) на инфраструктуре компании-клиента, и администратор NeuroCast, который регистрирует узел в студии.

Статус: раздел описывает интеграционный контракт между студией NeuroCast (server/) и внешним Contour Node. Сам код Contour Node в этом репозитории не лежит — это отдельный on-prem компонент. Здесь зафиксировано, что узел обязан предоставлять, как он подключается к сети и как регистрируется в студии.

Что такое Contour Node и зачем он нужен

Contour Node — это вынесенный на сервер компании узел, который:

  • хранит медиафайлы компании в собственном MinIO (S3-совместимое объектное хранилище);
  • выполняет тяжёлые задачи обработки видео: сжатие (compression) и наложение водяного знака (watermark);
  • выдаёт presigned-ссылки на загрузку/скачивание напрямую в/из MinIO;
  • по завершении задач шлёт webhook-колбэки обратно в студию.

Модель связи — один узел на одну компанию (MVP). Узел создаётся автоматически вместе с компанией и не может существовать отдельно от неё.

Схема взаимодействия

┌────────────────────────┐         Tailscale VPN (100.64.0.0/10)          ┌──────────────────────────┐
│   Студия NeuroCast      │                                               │   Сервер компании         │
│   (backend, server/)    │                                               │   Contour Node            │
│                         │  ── HTTP: /api/v1/* (apiPort, по умолч. 8000) ─▶│  ┌─────────────────────┐ │
│  HttpContourApiRepo ────┼───────────────────────────────────────────────┤  │ Contour API         │ │
│                         │                                               │  ├─────────────────────┤ │
│  ◀── webhook ───────────┼── POST /api/contour/webhook/{compression|     │  │ MinIO (minioPort,   │ │
│      (по IP узла)        │        watermark}  на APP_BASE_URL            │  │  по умолч. 9000)    │ │
│                         │                                               │  └─────────────────────┘ │
└────────────┬────────────┘                                               └──────────────────────────┘

   (опц.) nginx MinIO reverse-proxy: https://<домен>/storage/<ip>/<port>/<bucket>/<object>

        Браузер пользователя ── presigned upload/download ──▶ MinIO узла

Разделы документации

  • Развёртывание — требования, сетевой контур (Tailscale), регистрация узла в студии, health-check, чек-лист.
  • API-контракт узла — спецификация HTTP-эндпоинтов /api/v1/* и webhook-колбэков, которые обязан реализовать разработчик Contour Node.
  • MinIO reverse-proxy — публичный доступ к MinIO узла через nginx.
  • Типовые проблемы — диагностика «симптом → причина → где смотреть».