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

Все параметры 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, Tracks, Transcoding, WebLog, CacheMedia, ForkPlayerXML, MsxNative, Potok, TelegramAuth, TelegramAuthBot.
Также отключены через manifest.json (enable: false): AdminPanel, ExternalBind, LogUserRequest-Lite, Telemetry, Tg-notify.bot, WatchTogether, Tracks, Transcoding.
WAF и accsdb отключены через "enable": false в base.conf, а не через SkipModules. Модуль GStreamer загружается, но транскодинг выключен до gst.enable: true — см. секцию gst.


GStreamer (gst)

Серверный HLS/fMP4 транскодинг через GStreamer. Заменяет legacy-модуль Transcoding (FFmpeg). На клиенте подключите плагин http://<host>:9118/gst.js. Подробности — Modules/GStreamer/README.md.

init.conf — gst
{
  "gst": {
    "enable":              true,
    "allowed_uids":        ["device-uid"],  // опционально: только эти UID
    "inactiveMinutes":     10,
    "gst_version":         1.28,              // 1.26 на Linux по умолчанию
    "PATH":                "C:\\Program Files\\gstreamer\\1.0\\mingw_x86_64",

    "segment_seconds":     6,
    "aac_bitrate":         256,
    "aac_samplerate":     48000,
    "aac_channels":       2,
    "video_bitrate":       10000,

    "transcodeH264":       false,
    "transcodeH265":       false,
    "transcodeAV1":        false,
    "transcodeVP9":        false,

    "tempfs":              true,
    "tempfs_ring":         1,

    "pipeline_timeSeconds": 20,
    "pipeline_audioQueue":  4,
    "pipeline_videoQueue":  32,
    "pipeline_sinkQueue":   64
  }
}
Параметр По умолчанию Описание
enable false Включить транскодинг GStreamer
allowed_uids не задано Список разрешённых UID устройств; без списка — доступ всем
conf_uids не задано Индивидуальные настройки pipeline для конкретных UID
inactiveMinutes 10 Остановка задачи после N минут без активности
gst_version 1.28 (Win) / 1.26 (Linux) Версия GStreamer; определяется автоматически через gst-inspect-1.0
PATH MinGW-путь Windows Корень установки GStreamer (только Windows)
transcodeH264/H265/AV1/VP9 false Перекодировать соответствующий кодек в H.264
segment_seconds 6 Длительность HLS/fMP4-сегмента в секундах
aac_bitrate / video_bitrate 256 / 10000 кбит/с Битрейт AAC и H.264 при перекодировании
aac_samplerate / aac_channels авто Частота дискретизации (Гц) и количество каналов AAC. По умолчанию берутся из исходной дорожки (до 7.1 / 8 каналов)
tempfs / tempfs_ring true / 1 Дисковый кольцевой буфер входного HTTP-потока в cache/gstranscoding
pipeline_* см. пример Размеры очередей pipeline (время и МБ)
ℹ️

На Linux пакеты GStreamer устанавливаются скриптом install.sh. На Windows — MinGW Runtime 1.28.3 с gstreamer.freedesktop.org. WAF: ^/gst/ — 50 req/s.


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": {
    "widgets": {
      "samsung": true,   // /samsung.wgt — Tizen
      "lg":      true    // /lg.ipk — webOS
    },
    "customPlugins": [
      { "url": "{localhost}/tg-notify.js", "status": 1 }
    ],
    "initPlugins": {
      "online":       true,
      "sisi":         true,
      "torrserver":   true,
      "timecode":     true,
      "jacred":       true,
      "tmdbProxy":    true,
      "cubProxy":     true,
      "pirate_store": true
    }
  }
}
ℹ️

Плагины /online.js и /sisi.js совместимы с Lampa 3.0. Виджеты Smart TV собираются на лету с подстановкой {localhost}; кеш — в cache/widgets/. Подробнее о Tg-notify — в секции TelegramBot.


Music

Музыкальный модуль включён по умолчанию. Клиентский плагин — /music.js (подключается в Lampa вручную). Полное описание — Modules/Music/README.md.

init.conf — Music
{
  "Music": {
    "default_metadata_provider": "musicbrainz",
    "default_audio_provider":    "youtubeaudio",
    "youtube_audio_enabled":      true,
    "sefon_audio_enabled":        true,
    "soundcloud_enabled":         true,
    "soundcloud_country":         "US",
    "z3fm_enabled":              false,
    "z3fm_audio_enabled":        false,
    "client_debug_enabled":      false
  }
}
Параметр По умолчанию Описание
default_metadata_provider musicbrainz Каноническая metadata-база каталога
default_audio_provider youtubeaudio Основной audio-провайдер для воспроизведения
soundcloud_country US Регион чартов и подборок SoundCloud
z3fm_enabled / z3fm_audio_enabled false Z3Fm (требует Playwright для антибота)
client_debug_enabled false Приём клиентских трейсов на /music/clientlog

TelegramBot (Tg-notify.bot)

Фоновый Telegram-бот уведомлений о новых сериях и озвучках. Подписка из карточки Lampa, трекинг через Trakt→TMDB и параллельный опрос Mirage/Collaps. По умолчанию модуль отключён в manifest.json — включите TelegramBot.enable и задайте bot_token. Подробности — Modules/Tg-notify.bot/README.md.

init.conf — TelegramBot
{
  "TelegramBot": {
    "enable":                 true,
    "bot_token":              "ТОКЕН_ОТ_BOTFATHER",
    "tmdb_api_key":           "ВАШ_КЛЮЧ_TMDB",
    "trakt_client_id":        "",
    "lampac_host":            "http://127.0.0.1:9118",
    "lampac_token":           "",
    "check_interval_minutes": 60,
    "tmdb_lang":              "ru-RU",
    "data_dir":               "database/tgnotify"
  }
}
Параметр Описание
bot_token Токен бота от @BotFather. Обязателен для запуска long polling
tmdb_api_key Ключ TMDB v3 — обложки, описания эпизодов, определение сезона
trakt_client_id Client ID Trakt (опционально). Основной источник новых серий; без него — только TMDB
lampac_host Базовый URL Lampac для запросов к балансерам (/lite/mirage, /lite/collaps)
lampac_token Токен accsdb — обязателен при включённой защите accsdb
check_interval_minutes Период фоновой проверки подписок (первый прогон — через 2 мин после старта)
data_dir Каталог users.json / subscriptions.json
⚠️

Подключите клиентский плагин через LampaWeb.customPlugins (см. выше) или напрямую по URL {localhost}/tg-notify.js. Убедитесь, что имя TelegramBot не попало в SkipModules.