Иконка ресурса

[fork] HLTV-Manager

Нет прав для скачивания

1. Распаковка архива​

Bash:
unzip HLTV-Manager.zip -d /home/hltv/
cd /home/hltv/

2. Подготовка конфигурации HLTV (необязательно)​

Создайте файл hltv-runners.json на основе примера:
Bash:
cp hltv-runners.example.json hltv-runners.json
nano hltv-runners.json
Отредактируйте его, указав параметры ваших игровых серверов (адреса, порты, названия демо). Для каждого HLTV можно задать индивидуальное облачное хранилище.

3. Настройка переменных окружения​

Отредактируйте .env:
Bash:
nano .env
Обязательные переменные:
  • ADMIN_PASS_HASH – bcrypt-хеш пароля администратора (генерируется, см. ниже). (по дефолту уже есть - "admin")
  • API_TOKEN – случайная строка для защиты API (генерируется, например, openssl rand -hex 16).
Опциональные переменные для HTTPS:
  • TLS_CERT – путь к файлу сертификата (например, /app/certs/fullchain.pem).
  • TLS_KEY – путь к файлу ключа (например, /app/certs/privkey.pem).
Пример генерации хеша пароля:
Bash:
htpasswd -bnBC 10 "" ваш_пароль | tr -d ':\n'

4. Сборка Docker-образов​

Запустите интерактивное меню:
Bash:
./menu.sh
Выберите пункт "6) Собрать образы" → "3) Всё (менеджер + воркер)".
После удачной сборки, получите сообщения:
"✓ Менеджер собран"
"✓ Воркер собран"

5. Запуск стека​

Запустите интерактивное меню:
Bash:
./menu.sh
Выберите пункт "1) Запустить всю систему (стек + воркеры)"

6. Первый вход в админ-панель​

Откройте в браузере:
  • Админ-панель: http://your_website/admin
  • Публичная страница: http://your_website
Учётные данные по умолчанию:
  • Логин: admin
  • Пароль: admin
Важно! Сразу после первого входа смените пароль через админ-панель (раздел «Смена пароля»).

7. Настройка пользователей и ролей​

  • Перейдите в раздел «Управление пользователями» (доступен только администратору в /admin → Настройки → Управление пользователями).
  • Для каждого оператора можно указать, какими HLTV он может управлять (чекбоксы для каждого сервера).
  • Оператор видит только свои серверы и не имеет доступа к глобальным настройкам.

8. Добавление HLTV​

  • В админ-панели перейдите в Мониторинг HLTV (/admin/cards).
  • Нажмите Добавить HLTV.
  • Заполните форму или воспользуйтесь кнопкой JSON для редактирования конфигурации вручную.
  • После сохранения HLTV автоматически запустится и появится на дашборде.

9. Настройка облачного хранилища (опционально)​

  • Перейдите в Настройки → Облачное хранилище (/admin/storage).
  • Выберите тип (S3, FTP, Google Drive) и заполните параметры.
  • После сохранения демо будут автоматически загружаться в облако.

.env:​

JSON:
# ============================================================
#  ОСНОВНЫЕ НАСТРОЙКИ
# ============================================================

# Порт, на котором будет доступен веб-интерфейс (снаружи)
PORT=8888

# Версия образа HLTV-сервера (тег на GitHub Container Registry)
HLTV_VERSION=v1.3

# Имя файла конфигурации HLTV-серверов (лежит в корне проекта)
RUNNER_FILE=hltv-runners.json

# Абсолютный путь на хосте, где будут храниться демо-файлы
HLT_DEMOS_DIR=/media/hltv-manager

# Часовой пояс для контейнеров
TZ=Europe/Moscow

# ============================================================
#  БЕЗОПАСНОСТЬ (ОБЯЗАТЕЛЬНО ЗАПОЛНИТЬ)
# ============================================================

# Логин администратора по умолчанию (можно не менять)
ADMIN_USER=admin

# bcrypt-хеш пароля администратора.
# Сгенерировать: htpasswd -bnBC 10 "" ваш_пароль | tr -d ':\n'
# Пример для пароля "admin":
# ADMIN_PASS_HASH=$2a$10$4crUav9GXkYZXW7YSWotbO1dyUS0p6CircRkX.iUarzk0TaL3Rsvm
ADMIN_PASS_HASH=$2a$10$4crUav9GXkYZXW7YSWotbO1dyUS0p6CircRkX.iUarzk0TaL3Rsvm

# Токен для доступа к REST API
# Генерируется: openssl rand -hex 16
API_TOKEN=a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6

# ============================================================
#  REDIS (ОПЦИОНАЛЬНО)
# ============================================================

# Использовать ли Redis для кеширования статусов и координации воркеров
USE_REDIS=true

# Адрес Redis-сервера (обычно redis:6379, если запускается в Docker Compose)
REDIS_ADDR=redis:6379

# ============================================================
#  HTTPS (ОПЦИОНАЛЬНО)
#  Если переменные заданы, сервер будет работать по HTTPS.
#  Сертификаты должны быть примонтированы в контейнер.
# ============================================================
# TLS_CERT=/app/certs/fullchain.pem
# TLS_KEY=/app/certs/privkey.pem

hltv-runners.json:​

JSON:
{
  "HLTV": [
    {
      // ========== ОСНОВНЫЕ НАСТРОЙКИ ==========

      // Название HLTV (отображается в интерфейсе)
      "Name": "YOUR SERVER",

      // Адрес, который будет показываться пользователям для подключения
      "ShowIP": "HLTV_IP:HLTV_PORT",

      // Адрес игрового сервера, к которому подключается HLTV
      "Connect": "SERVER_IP:SERVER_PORT",

      // Порт, на котором HLTV будет принимать зрителей
      "HltvPort": "HLTV_PORT",

      // Game ID (10 = Counter-Strike, 70 = Half-Life, и т.д.)
      "GameID": "10",

      // Префикс названий демо-файлов (одно слово)
      "DemoName": "odd2",

      // Сколько дней хранить демо (старые будут автоматически удалены)
      "MaxDemoDay": "2",

      // Включить отладку терминала (все строки лога HLTV попадают в INFO)
      "DebugTerminalLog": true,

      // ========== CVARS (ПЕРЕМЕННЫЕ КОНФИГУРАЦИИ HLTV) ==========
      // Каждая строка — отдельная команда, выполняемая при запуске
      "Cvars": [
        "hostname \"BROWSER NAME\"",
        "name \"TAB NAME\"",
        "maxclients \"2\"",
        "nomaster \"1\"",
        "publicgame \"1\"",
        "autoretry \"1\"",
        "rate \"100000\"",
        "updaterate \"102\"",
        "maxrate \"10000\"",
        "delay \"0\"",
        "blockvoice \"0\"",
        "signoncommands \"voice_scale 2; voice_overdrive 16; volume 0.5\"",
        "chatmode \"1\"",
        "logfile \"0\""
      ],

      // Записывать ли демо автоматически при подключении
      "RecordDemo": true,

      // ========== ИНДИВИДУАЛЬНОЕ ОБЛАЧНОЕ ХРАНИЛИЩЕ (ОПЦИОНАЛЬНО) ==========
      // Тип: "none" (не загружать), "default" (использовать глобальное), "s3", "ftp", "gdrive", "yadisk"
      // "StorageType": "none",
      // "Bucket": "my-bucket",
      // "Region": "us-east-1",
      // "Endpoint": "https://s3.custom.com",
      // "FTPAddr": "ftp.server.com:21",
      // "FTPUser": "user",
      // "FTPPass": "password",
      // "FTPBase": "/demos",
      // "GDKeyFile": "/app/gdrive-key.json",
      // "GDFolder": "folder_id",
      // "YaToken": "yandex_oauth_token",
      // "YaFolder": "/HLTV"
    }
  ]
}
Назад
Верх