Skip to content

Управление порталами

Портал — это независимый брендированный домен с собственным набором абонентов, каналов и пакетов в системе Catena. Порталы позволяют управлять несколькими IPTV-сервисами с различными брендами на одной инфраструктуре.

Что такое портал

Портал в Catena — это изолированное пространство для отдельного IPTV-сервиса со своими настройками, абонентами и контентом. Каждый портал представляет собой независимый брендированный сервис с собственным доменом, логотипом и визуальным оформлением.

Ключевая концепция:

Catena инфраструктура
  ├── Портал "Netflix-подобный сервис" (myiptv.com)
  │   ├── Абоненты: 10,000
  │   ├── Каналы: 200
  │   └── Брендинг: красный логотип, современный дизайн
  ├── Портал "Региональный провайдер" (region-tv.ru)
  │   ├── Абоненты: 5,000
  │   ├── Каналы: 150
  │   └── Брендинг: синий логотип, классический стиль
  └── Портал "Спортивный сервис" (sport-tv.com)
      ├── Абоненты: 3,000
      ├── Каналы: 50 (только спорт)
      └── Брендинг: зелёный логотип, динамичный дизайн

Основные характеристики портала:

  • Независимый домен — каждый портал доступен по своему URL
  • Собственный брендинг — логотип, название, описание, визуальное оформление
  • Изолированные данные — абоненты одного портала не видны в другом
  • Отдельный контент — свой набор каналов, пакетов, EPG
  • Брендированные приложения — возможность создать mobile app для портала
  • Общая инфраструктура — все порталы работают на одних серверах

Зачем нужны порталы:

  1. Мультибрендинг — управление несколькими IPTV-брендами
  2. White-label решения — предоставление сервиса под брендом клиента
  3. Географическое разделение — разные порталы для разных регионов
  4. Сегментация аудитории — premium и budget сервисы на одной платформе
  5. Партнёрские проекты — отдельные порталы для B2B партнёров
  6. Тестовая среда — отдельный портал для тестирования нововведений

Управление несколькими порталами

Концепция мультитенантности

Одна инфраструктура — множество порталов:

  • Все порталы используют одни и те же streaming-серверы
  • Контент может быть как общим, так и уникальным для портала
  • Один менеджер может управлять несколькими порталами
  • Billing-система может обслуживать все порталы

Преимущества:

  • Экономия ресурсов — один сервер для всех порталов
  • Централизованное управление — единая панель администратора
  • Общий контент — одни каналы для разных брендов
  • Гибкий маркетинг — разные стратегии для каждого портала
  • Масштабируемость — легко добавлять новые порталы

Один менеджер — несколько порталов

Сценарий: Владелец IPTV-бизнеса управляет тремя брендами

Менеджер: admin@company.com
  ├── Портал 1: myiptv.com (owner, полный доступ)
  ├── Портал 2: premium-tv.com (owner, полный доступ)
  └── Портал 3: budget-tv.com (content admin, управление контентом)

Как работает доступ:

  • Менеджер создаётся отдельно для каждого портала
  • Один email может использоваться в разных порталах
  • При входе система показывает список доступных порталов
  • Менеджер выбирает портал для работы
  • API ключ привязан к конкретному порталу

Типы прав менеджера:

  • isAdmin — управление инфраструктурой (создание порталов, серверов)
  • canManage — полное управление порталом (owner)
  • canManageSubscribers — управление абонентами и подписками
  • canManageContent — управление каналами, пакетами, EPG

Основные параметры портала

Технические параметры

Идентификатор портала (Portal ID)

  • Автоматически генерируется при создании портала
  • Формат: base64-кодированный Snowflake ID с заменой +/= на -_.
  • Пример: pKl9SW3AAAE.
  • Используется во всех API запросах
  • Связывает все сущности (абонентов, каналы, пакеты) с порталом

Внутреннее имя (Name)

  • Техническое название портала в системе
  • Видно только администраторам и владельцу портала
  • Используется для идентификации в логах и панели управления
  • Должно быть уникальным в системе
  • Примеры: catena-netflix, my-iptv-service, test-portal

Домен (Domain)

  • Доменное имя, под которым доступен портал
  • Указывается владельцем портала как заявка на домен
  • Реальная привязка DNS выполняется администратором системы
  • Используется для брендированных мобильных приложений
  • Пример: myiptv.com, tv.example.org

ID владельца (Owner ID)

  • Идентификатор менеджера — владельца портала
  • Владелец имеет полный доступ ко всем настройкам
  • Может назначать других менеджеров
  • Устанавливается при создании портала

API ключ (API Key)

  • Уникальный ключ для доступа к Management API портала
  • Генерируется автоматически при создании портала
  • Используется для аутентификации всех API запросов
  • Может быть регенерирован через /portal/reset_api_key
  • Должен храниться в безопасности

Параметры брендинга

Логотип (Logo)

  • URL или base64-encoded изображение логотипа портала
  • Отображается в мобильных приложениях и веб-интерфейсе
  • Видят конечные пользователи (абоненты)
  • Рекомендуемый формат: PNG с прозрачностью
  • Рекомендуемый размер: 512x512px или выше

Название (Title)

  • Публичное название портала для конечных пользователей
  • Отображается в приложениях, на сайте, в уведомлениях
  • Примеры: "Моё IPTV", "Premium TV Service", "Спорт ТВ"

Описание (Description)

  • Краткое описание сервиса для пользователей
  • Используется в app stores, на лендингах
  • Может содержать слоган или краткое описание преимуществ
  • Пример: "Лучшее IPTV для всей семьи. 200+ каналов в HD качестве"

Бесплатные пакеты (Free Packages)

Концепция:

  • Список пакетов, доступных всем абонентам портала автоматически
  • Не требуется создавать подписку для каждого абонента
  • Используется для базового контента, демо-каналов, trial периода

Применение:

  • Базовые каналы — федеральные, общедоступные каналы
  • Пробный доступ — первый месяц для всех новых абонентов
  • Промо контент — рекламные и информационные каналы
  • Loyalty программа — бонусные каналы для всех клиентов

Управление:

# Добавить пакет в список бесплатных
POST /portal/free-packages/{packageId}

# Удалить пакет из списка бесплатных
DELETE /portal/free-packages/{packageId}

Получение информации о портале

Через веб-интерфейс

  1. Войдите в панель управления Catena
  2. Выберите портал (если у вас доступ к нескольким)
  3. Откройте раздел "Настройки портала"
  4. Просмотрите параметры:
  5. Основная информация (название, домен)
  6. Брендинг (логотип, описание)
  7. API ключ
  8. Список бесплатных пакетов
  9. Права доступа

Через Management API

Получить информацию о текущем портале:

curl -X GET https://your-catena-domain.com/tv-management/api/v1/portal \
  -H "X-Auth-Token: your-api-key"

Ответ:

{
  "portalId": "pKl9SW3AAAE.",
  "name": "my-iptv-service",
  "domain": "myiptv.com",
  "freePackages": ["basicKl9SW3AAAE.", "trialKl9SW3AAAE."],
  "branding": {
    "logo": "https://myiptv.com/logo.png",
    "title": "My IPTV Service",
    "description": "Premium IPTV streaming for everyone"
  },
  "apiKey": "secret_api_key_1234567890",
  "ownerId": "mKl9SW3AAAE.",
  "createdAt": "2024-01-15T10:00:00Z",
  "updatedAt": "2024-10-16T14:30:00Z",
  "flags": {
    "canManage": true,
    "canManageSubscribers": true,
    "canManageContent": true
  }
}

Поля ответа:

  • portalId — уникальный идентификатор портала
  • name — внутреннее техническое название
  • domain — доменное имя портала
  • freePackages — массив ID бесплатных пакетов
  • branding — параметры брендинга
  • apiKey — API ключ для аутентификации
  • ownerId — ID владельца портала
  • createdAt/updatedAt — даты создания и обновления
  • flags — права доступа текущего менеджера

Редактирование портала

Через веб-интерфейс

  1. Откройте раздел "Настройки портала"
  2. Нажмите "Редактировать"
  3. Измените параметры:
  4. Название для пользователей (Title)
  5. Описание сервиса (Description)
  6. URL логотипа (Logo)
  7. Сохраните изменения

Важно: Технические параметры (name, domain, portalId) обычно не редактируются после создания.

Через Management API

Обновить параметры портала:

curl -X PUT https://your-catena-domain.com/tv-management/api/v1/portal \
  -H "X-Auth-Token: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-iptv-service",
    "branding": {
      "logo": "https://myiptv.com/new-logo.png",
      "title": "My IPTV - Новое название",
      "description": "Обновлённое описание сервиса"
    }
  }'

Ответ:

Обновлённый объект Portal с новыми значениями.

Что можно изменить:

  • Параметры брендинга (logo, title, description)
  • Список бесплатных пакетов (через отдельные endpoints)

Что нельзя изменить:

  • portalId — генерируется автоматически
  • name — устанавливается при создании
  • domain — устанавливается при создании
  • ownerId — изменяется отдельно администратором

Управление API ключом

Безопасность API ключа

API ключ — это секретный токен для доступа к порталу. Обращайтесь с ним осторожно:

  • Храните в безопасном месте (переменные окружения, secret manager)
  • Не коммитьте в Git репозитории
  • Не передавайте третьим лицам
  • Регулярно обновляйте (каждые 6-12 месяцев)
  • Немедленно обновите при подозрении на компрометацию

Регенерация API ключа

Когда нужно регенерировать:

  • API ключ случайно попал в публичный репозиторий
  • Подозрение на несанкционированный доступ
  • Увольнение сотрудника, имевшего доступ к ключу
  • Плановое обновление по политике безопасности
  • Смена интеграции или биллинговой системы

Через веб-интерфейс:

  1. Откройте "Настройки портала"
  2. Перейдите в раздел "Безопасность"
  3. Нажмите "Сгенерировать новый API ключ"
  4. Подтвердите действие
  5. Скопируйте новый ключ (старый перестанет работать немедленно)
  6. Обновите ключ во всех интеграциях

Через Management API:

curl -X POST https://your-catena-domain.com/tv-management/api/v1/portal/reset_api_key \
  -H "X-Auth-Token: current-api-key"

Ответ:

{
  "portalId": "pKl9SW3AAAE.",
  "name": "my-iptv-service",
  "apiKey": "new_secret_api_key_0987654321",
  "branding": { ... },
  ...
}

Важно:

  • Старый API ключ перестаёт работать немедленно
  • Все текущие интеграции с старым ключом начнут получать ошибку 401
  • Обновите ключ во всех местах: биллинг, monitoring, скрипты
  • Сохраните новый ключ в безопасном месте

Управление бесплатными пакетами

Добавление бесплатного пакета

Через веб-интерфейс:

  1. Откройте "Настройки портала"
  2. Перейдите в раздел "Бесплатные пакеты"
  3. Нажмите "Добавить пакет"
  4. Выберите пакет из списка доступных
  5. Подтвердите добавление

Все абоненты портала немедленно получат доступ к каналам этого пакета.

Через Management API:

curl -X POST https://your-catena-domain.com/tv-management/api/v1/portal/free-packages/basicKl9SW3AAAE. \
  -H "X-Auth-Token: your-api-key"

Ответ: HTTP 201 Created

Удаление бесплатного пакета

Через веб-интерфейс:

  1. Откройте "Настройки портала"
  2. Перейдите в раздел "Бесплатные пакеты"
  3. Найдите пакет в списке
  4. Нажмите "Удалить"
  5. Подтвердите удаление

Абоненты без явной подписки на этот пакет потеряют доступ к его каналам.

Через Management API:

curl -X DELETE https://your-catena-domain.com/tv-management/api/v1/portal/free-packages/basicKl9SW3AAAE. \
  -H "X-Auth-Token: your-api-key"

Ответ: HTTP 201 Created

Важно:

  • Если у абонента есть явная подписка на пакет, он сохранит доступ
  • Удаление из бесплатных не удаляет сам пакет
  • Изменения вступают в силу немедленно

Типичные сценарии использования

Сценарий 1: Несколько брендов на одной платформе

Задача: Компания управляет тремя IPTV-брендами

Структура:

Компания "IPTV Group"
├── Бренд "Premium TV" (premium-tv.com)
│   ├── Целевая аудитория: премиум сегмент
│   ├── Контент: 300 HD/4K каналов
│   ├── Цена: от $20/месяц
│   └── Брендинг: золотой логотип, элегантный дизайн
│
├── Бренд "Family TV" (family-tv.com)
│   ├── Целевая аудитория: семьи с детьми
│   ├── Контент: 150 каналов (кино, детские, общие)
│   ├── Цена: от $10/месяц
│   └── Брендинг: яркие цвета, дружелюбный дизайн
│
└── Бренд "Sport TV" (sport-tv.com)
    ├── Целевая аудитория: спортивные фанаты
    ├── Контент: 50 спортивных каналов
    ├── Цена: от $15/месяц
    └── Брендинг: динамичный, энергичный стиль

Преимущества:

  • Один streaming сервер для всех брендов
  • Централизованное управление контентом
  • Разные маркетинговые стратегии
  • Изолированные базы абонентов
  • Экономия на инфраструктуре

Реализация:

  1. Создать 3 портала в Catena
  2. Настроить брендинг для каждого
  3. Распределить каналы по порталам
  4. Создать пакеты с разной ценовой политикой
  5. Интегрировать с единой биллинговой системой
  6. Развернуть брендированные mobile apps

Сценарий 2: White-label решение для партнёров

Задача: Предоставить IPTV платформу партнёрам под их брендом

Бизнес-модель:

  • Вы — провайдер инфраструктуры и контента
  • Партнёры — владельцы абонентской базы и брендов
  • Каждый партнёр получает свой портал
  • Партнёр платит за количество абонентов или фиксированную плату

Пример структуры:

Ваша платформа: catena-platform.com

├── Партнёр 1: regional-provider.ru
│   └── 5,000 абонентов
│
├── Партнёр 2: city-tv.com
│   └── 3,000 абонентов
│
└── Партнёр 3: corporate-tv.net
    └── 1,000 абонентов (корпоративное ТВ)

Что получает партнёр:

  • Собственный портал с уникальным доменом
  • Полный контроль над брендингом
  • Доступ к вашему каталогу каналов
  • Брендированное мобильное приложение
  • API для интеграции со своим биллингом
  • Техподдержку от вашей команды

Что делаете вы:

  • Создаёте портал для партнёра
  • Предоставляете доступ к каналам
  • Поддерживаете инфраструктуру
  • Обновляете EPG
  • Обеспечиваете стабильную работу
  • Выставляете счета партнёру

Workflow создания портала для партнёра:

  1. Партнёр регистрируется в вашей системе
  2. Вы создаёте портал с его доменом
  3. Партнёр настраивает брендинг (логотип, цвета, название)
  4. Вы подключаете каналы согласно тарифу
  5. Партнёр получает API ключ для интеграции
  6. Вы создаёте брендированное mobile app для партнёра
  7. Партнёр начинает привлекать абонентов

Сценарий 3: Географическое разделение

Задача: Предоставить IPTV в разных странах/регионах

Почему нужны отдельные порталы:

  • Разный контент из-за лицензионных ограничений
  • Разные языки интерфейса
  • Разные валюты и способы оплаты
  • Локальные каналы для каждого региона
  • Соответствие местному законодательству

Пример:

Международный IPTV сервис

├── Портал "IPTV Russia" (iptv.ru)
│   ├── Контент: российские каналы + международные
│   ├── Язык: русский
│   ├── Валюта: рубли
│   └── 50,000 абонентов
│
├── Портал "IPTV Europe" (iptv.eu)
│   ├── Контент: европейские каналы
│   ├── Языки: английский, немецкий, французский
│   ├── Валюта: евро
│   └── 30,000 абонентов
│
└── Портал "IPTV USA" (iptv.com)
    ├── Контент: американские каналы
    ├── Язык: английский
    ├── Валюта: доллары
    └── 20,000 абонентов

Сценарий 4: Тестовая среда

Задача: Безопасно тестировать новые функции

Решение:

  • Создать отдельный портал test.myiptv.com
  • Использовать для внутреннего тестирования
  • Тестировать новые каналы, пакеты, функции
  • Не влиять на production порталы

Преимущества:

  • Полная изоляция от продакшн данных
  • Возможность экспериментировать
  • Тестирование интеграций
  • Обучение новых сотрудников

Брендированные мобильные приложения

Концепция брендированных приложений

Для каждого портала можно создать отдельное мобильное приложение с уникальным брендом.

Что включает брендированное приложение:

  • Логотип портала в качестве иконки app
  • Название портала в App Store / Google Play
  • Цветовая схема портала в интерфейсе
  • Уникальный Bundle ID / Package Name
  • Подключение к API портала через API ключ

Платформы:

  • iOS — Swift/SwiftUI приложение для iPhone/iPad
  • Android — Kotlin/Java приложение
  • Android TV — версия для Smart TV
  • Apple TV — версия для Apple TV

Процесс создания приложения

Типичный workflow:

  1. Вы предоставляете параметры портала:
  2. Доменное имя (domain)
  3. Логотип (logo)
  4. Название (title)
  5. Цветовая схема
  6. API endpoint

  7. Разработчик создаёт приложение:

  8. Брендирует интерфейс согласно дизайну
  9. Интегрирует с Catena API
  10. Настраивает авторизацию через SMS
  11. Реализует плеер для просмотра

  12. Публикация в store:

  13. Регистрация в Apple Developer / Google Play Console
  14. Подготовка скриншотов и описания
  15. Прохождение модерации
  16. Публикация приложения

  17. Абоненты скачивают:

  18. Находят ваше приложение в store
  19. Устанавливают на устройство
  20. Входят через SMS
  21. Смотрят каналы

Важно:

  • Для iOS требуется Apple Developer аккаунт ($99/год)
  • Для Android требуется Google Play Console ($25 один раз)
  • Приложение должно соответствовать правилам store
  • Обновления приложения проходят модерацию

Общая инфраструктура для порталов

Общие streaming-серверы

Все порталы используют одни и те же серверы для доставки контента:

┌─────────────────┐
│  Streaming      │
│  Server         │◄─────┐
│  (Flussonic)    │      │
└─────────────────┘      │
         ▲               │
         │               │
    ┌────┴────┬──────────┴───────┐
    │         │                  │
┌───┴───┐ ┌───┴───┐         ┌────┴────┐
│Portal1│ │Portal2│   ...   │Portal N │
└───────┘ └───────┘         └─────────┘

Преимущества:

  • Один source для канала → N порталов
  • Экономия трафика и CPU
  • Централизованное управление stream
  • Единая точка мониторинга

Разграничение доступа:

  • Streaming server проверяет playback_token абонента
  • Token содержит информацию о portal_id
  • Абонент может смотреть только каналы своего портала
  • Технически возможно предоставить один канал нескольким порталам

Общие каналы для нескольких порталов

Сценарий: Один source канала для разных брендов

Пример:

Источник: "Discovery Channel" (rtmp://source.tv/discovery)
                    │
      ┌─────────────┼─────────────┐
      │             │             │
Portal A      Portal B       Portal C
Channel:      Channel:       Channel:
"Discovery"   "Discovery HD" "Discov"
(в пакете     (в премиум     (в базовом
"Наука")      пакете)        пакете)

Как работает:

  1. Канал добавляется в каждый портал отдельно
  2. У каждого портала свой channelId
  3. Но source URL одинаковый
  4. Streaming server кеширует поток
  5. Все порталы получают поток из кеша

Преимущества:

  • Один source → многократное использование
  • Экономия на лицензировании (зависит от договора)
  • Централизованное обновление EPG
  • Единая точка мониторинга качества

Лучшие практики

Именование порталов

Внутреннее имя (name):

  • Используйте понятные технические названия
  • Примеры: company-premium, partner-acme, test-portal
  • Избегайте пробелов и специальных символов
  • Держите консистентность: brand-segment или client_name

Публичное название (title):

  • Используйте привлекательное маркетинговое название
  • Примеры: "Premium TV", "Семейное Телевидение", "СпортТВ+"
  • Учитывайте целевую аудиторию
  • Проверьте доступность названия (trademark)

Организация контента

Стратегии распределения каналов:

  1. Полное дублирование — все порталы имеют одинаковый контент
  2. Проще в управлении
  3. Подходит для white-label без сегментации

  4. Сегментированный контент — разный контент для разных порталов

  5. Премиум портал: эксклюзивные каналы
  6. Базовый портал: стандартный набор
  7. Тематический портал: только спорт/кино/новости

  8. Общая база + уникальный контент

  9. Базовые каналы доступны везде
  10. Премиум каналы только в дорогих порталах
  11. Локальные каналы в региональных порталах

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

Защита API ключей:

# ПЛОХО - ключ в коде
api_key = "secret_key_123456"

# ХОРОШО - ключ в переменной окружения
api_key = os.getenv('CATENA_API_KEY')

# ЛУЧШЕ - ключ в secret manager
api_key = secrets_manager.get('catena_api_key')

Права доступа менеджеров:

  • Выдавайте минимально необходимые права
  • Content admin не нужен доступ к абонентам
  • Support не нужен доступ к API ключу
  • Регулярно проверяйте список менеджеров
  • Удаляйте доступ уволенных сотрудников

Мониторинг

Что отслеживать для каждого портала:

  • Количество активных абонентов
  • Количество одновременных сессий
  • Популярные каналы
  • Ошибки при входе (failed SMS, invalid tokens)
  • API requests count и latency
  • Storage usage для каждого портала

Инструменты:

  • Grafana dashboards с разбивкой по порталам
  • Prometheus метрики с label portal_id
  • Алерты при аномалиях (резкое падение абонентов)
  • Регулярные отчёты для владельцев порталов

Устранение проблем

Абоненты не могут войти

Возможные причины:

  • Указан неверный domain в приложении
  • API ключ устарел после регенерации
  • Portal временно недоступен
  • SMS-шлюз не настроен для портала

Решение:

  1. Проверьте domain в настройках портала
  2. Убедитесь, что API ключ актуален
  3. Проверьте статус сервисов (API, SMS gateway)
  4. Просмотрите логи ошибок авторизации
  5. Протестируйте вход из другого приложения/браузера

Каналы не воспроизводятся

Возможные причины:

  • Проблемы со streaming-сервером
  • Канал не добавлен в портал
  • Абонент не подписан на пакет с каналом
  • Проблемы с сетью у абонента

Решение:

  1. Проверьте работу канала на другом портале
  2. Убедитесь, что канал существует в этом портале
  3. Проверьте подписки абонента
  4. Просмотрите логи streaming-сервера
  5. Проверьте playback_token абонента

API возвращает 401 Unauthorized

Возможные причины:

  • Неверный API ключ
  • API ключ был регенерирован
  • Ключ передаётся в неверном формате
  • Ключ от другого портала

Решение:

  1. Проверьте актуальность API ключа: GET /portal
  2. Убедитесь, что ключ в заголовке: X-Auth-Token: your-key
  3. Проверьте, что используется ключ нужного портала
  4. При необходимости регенерируйте ключ

Два портала видят абонентов друг друга

Проблема: Нарушена изоляция данных между порталами

Это не должно происходить по дизайну системы. Если происходит:

  1. Немедленно сообщите в техподдержку
  2. Проверьте, что используете правильный API ключ
  3. Проверьте, что не путаете порталы в коде
  4. Просмотрите логи API запросов

Причины (редко):

  • Баг в системе (требует исправления)
  • Неправильная интеграция (используется один ключ для разных порталов)
  • Кеширование на стороне клиента

См. также