Конфигурация

Все параметры init.conf / init.yaml: сеть, модули, WAF, аутентификация, провайдеры и управление памятью.


Обзор

📄

Формат

JSON или YAML

Конфиг хранится в init.conf (JSON) или init.yaml (YAML) рядом с Core.dll. Оба формата поддерживаются одновременно.

🔥

Горячая перезагрузка

без перезапуска

Watcher проверяет файл каждую секунду. При изменении — применяет сразу. Резервные копии сохраняются в database/backup/init/.

📋

Примеры

config/

Готовые шаблоны: config/example.init.conf и config/example.init.yaml. Дефолтные значения — в config/base.conf.


listen

init.conf — listen
{
  "listen": {
    "ip":                 "0.0.0.0",   // интерфейс прослушивания
    "port":               9118,         // порт
    "scheme":             "http",       // "http" или "https"
    "version":            true,         // показывать версию в ответах
    "ResponseCancelAfter": 10           // таймаут ответа, секунды
  }
}
Параметр Тип По умолчанию Описание
ip string "0.0.0.0" IP-интерфейс для прослушивания
port int 9118 TCP-порт сервера
scheme string "http" Протокол: http или https
version bool true Добавлять заголовок с версией
ResponseCancelAfter int 10 Таймаут ответа в секундах

BaseModule

init.conf — BaseModule
{
  "BaseModule": {
    "SkipModules":      [],          // имена модулей для полного отключения
    "LoadModules":      [".*"],      // whitelist: имя, группа (OnlineUKR), regex (LME.*)
    "ValidateRequest":  true,        // валидация входящих запросов
    "BlockedBots":      true         // блокировка ботов по User-Agent
  }
}
ℹ️

По умолчанию отключеныSkipModules в base.conf): Catalog, DLNA, Tracks, Transcoding, WebLog, CacheMedia, ProxyLimiter, ForkPlayerXML, MsxNative, TelegramAuth, TelegramAuthBot.
WAF и accsdb отключены через "enable": false в base.conf, а не через SkipModules.


cache

init.conf
{
  "cache": {
    "extend": 180   // продление TTL на N минут при обращении
  }
}

WAF

init.conf — WAF
{
  "WAF": {
    "enable":               true,
    "countryAllow":         ["RU", "UA", "BY"],  // геоблокировка ([] = все страны)
    "whiteIps":             ["192.168.1.0/24"],  // белый список IP/CIDR
    "bruteForceProtection": true,
    "limit_map": {
      "/lite/":         10,   // max req/s на prefix
      "/externalids":   10
    }
  }
}
Параметр Описание
enable Включить WAF. По умолчанию false (base.conf)
countryAllow Разрешённые страны (ISO 3166-1 alpha-2). Пустой массив — без ограничений
whiteIps IP-адреса и CIDR-блоки, всегда пропускаемые (в обход countryAllow и rate limit)
bruteForceProtection Автобан при множественных ошибках аутентификации
limit_map Rate-limit по prefix URL: ключ — prefix, значение — max запросов в секунду
🛡️

GeoIP работает через встроенные базы MaxMind GeoLite2 (data/GeoLite2-Country.mmdb, GeoLite2-ASN.mmdb). Базы обновляются вместе с релизом.


accsdb

init.conf — accsdb
{
  "accsdb": {
    "enable":   true,

    // Краткий формат: id:дата_истечения через запятую
    "accounts": "user1:2026-12-31,user2:2027-06-01",

    // Или подробный формат
    "users": [
      { "id": "user1", "expires": "2026-12-31" },
      { "id": "user2", "expires": "2027-06-01" }
    ]
  }
}

lowMemoryMode

init.conf
{ "lowMemoryMode": true }

Что делает

  • Уменьшает пулы буферов и аллокации JSON/строк
  • GeoIP базы через memory-mapped файл вместо загрузки в RAM
  • Не поднимает агрессивный минимум ThreadPool
  • NetVips без оперативного кеша для прокси изображений
  • При простое чаще уплотняет кучу (в т.ч. LOH)
  • Часть модулей отключает второстепенные кеши

Эффект

Типичный выигрыш: ~−140 МБ RSS по сравнению с режимом по умолчанию.

Компромисс

При очень высокой параллельной нагрузке возможно незначительное снижение пиковой пропускной способности.


Playwright

init.conf
{
  "chromium": {
    "enable":  false,
    "count":   1,      // количество экземпляров в пуле
    "restart": 3600   // перезапуск каждые N секунд
  },
  "firefox": {
    "enable": false,
    "count":  1
  }
}
⚠️

Playwright требует установленного Chromium/Firefox. В Docker-образе зависимости включены. Для нативной установки — дополнительная команда playwright install chromium.


RCH

init.conf
{
  "rch": {
    "enable":            false,
    "requiredConnected": 1   // мин. подключений для активации
  }
}

Remote Client Hub — WebSocket-реле для клиентов за NAT. Позволяет подключаться без проброса портов. Эндпоинт: ws://.../ws.


GC

init.conf
{
  "GC": {
    "Concurrent":      true,  // параллельная сборка мусора
    "ConserveMemory":  0,     // агрессивность экономии памяти 0–9
    "HighMemoryPercent": 90,  // порог "высокой памяти" для принуд. сборки
    "RetainVM":        false  // сохранять VM при возврате памяти ОС
  }
}

Конфигурация провайдеров

Каждый провайдер настраивается в собственном разделе init.conf. Набор параметров зависит от провайдера.

init.conf — примеры провайдеров
{
  // Провайдеры с публичным доступом
  "Rezka":   { "enable": true, "host": "https://rezka.ag", "priority": 1 },
  "Collaps": { "enable": true, "host": "https://api.collaps.net" },
  "HDVB":    { "enable": true, "host": "https://apivideo.site" },

  // Провайдеры с токеном
  "Filmix":  { "enable": true, "host": "https://filmix.biz", "token": "TOKEN", "priority": 2 },
  "KinoPub": { "enable": true, "token": "TOKEN" },
  "Kodik":   { "enable": true, "token": "TOKEN" }
}
Параметр Описание
enable Включить/выключить провайдер
host URL хоста (для провайдеров с настраиваемым зеркалом)
token API-токен или ключ партнёра
priority Порядок в списке источников (меньше = выше)

Плагины Lampa UI

init.conf — LampaWeb + online + sisi
{
  "online": {
    "name":               "Lampac NextGen",
    "version":            true,
    "btn_priority_forced": true
  },

  "sisi": {
    "lgbt":    false,
    "NextHUB": true,
    "history": { "enable": false }
  },

  "openstat": { "enable": false },  // /stats/* эндпоинты

  "LampaWeb": {
    "initPlugins": {
      "online":       true,
      "sisi":         true,
      "torrserver":   true,
      "timecode":     true,
      "jacred":       true,
      "tmdbProxy":    true,
      "cubProxy":     true,
      "pirate_store": true
    }
  }
}