Перейти к основному содержимому
Версия: 1.0.7

Введение

QM Project — платформа для игровой инфраструктуры: лаунчер (в т.ч. для Minecraft), единый REST API, админка, публичный сайт, агент QMClient на выделенных Linux-хостах и эта документация. Из QMAdmin ведётся учёт выделенных хостов, скан каталогов, при необходимости управление процессом Minecraft (run.sh) и логом через QMClient supervise, обновление исполняемого файла агента; в разработке — возможности на базе SteamCMD для установки и обновления игр.

Компоненты и связи

QMLauncher, QMWeb и QMAdmin ходят в один QMServer (/api/v1); QMServer работает с MySQL. В QMAdmin включают модули (в Cloud-сборке — в т.ч. биллинг; в публичной — без QMBilling) и интеграции (QMLauncher, QMWeb; в Cloud ещё Removed auth stack как встроенный OAuth). Это влияет на доступность части API — см. QMServer. Отдельный мод/плагин (QXSync, coming soon) шлёт инвентарь в QMServer только при включённом модуле Minecraft и интеграции QMWeb — см. Синхронизация инвентаря.

КомпонентНазначение
QMLauncherGUI-лаунчер (Wails), только нативно на ПК (без Docker): инстансы, моды, Microsoft-вход, опрос QMServer; релиз Linux amd64 с GitHub по тегу v* — см. QMLauncher
QMServerЕдиный REST API (/api/v1), JWT, игровые аккаунты, скины, новости, настройки, модпаки на стороне сервера; только Linux x86_64; один репозиторий QMServer с двумя сборками (публичная и Cloud с Removed auth stack/QMBilling). Установка: install.sh — см. QMServer. QXSync принимает инвентарь только при модуле Minecraft и интеграции QMWeb (см. inventory-sync)
QMAdminПанель для администраторов: пользователи облака, игровые и выделенные серверы, моды, новости, ключи (CurseForge, inventory sync), Ely.by; в Cloud — вход через Removed auth stack (прямой API или OAuth2 PKCE). Сборка: QMSERVER_API_URL, опционально VITE_LEGACY_ENV_ — см. переменные и вход Removed auth stack; install.sh, ghcr.io/<owner>/qmadmin
QMClientАгент на Linux на выделенном хосте (только нативно: бинарник + systemd, без Docker): периодический скан work_dir, опционально -supervise (запуск/стоп/run.sh, лог в QMAdmin), qmclient -upgrade; установка из QMAdmin — см. QMClient
QMWebПубличный сайт и личный кабинет: те же учётные записи и API QMServer; в Cloud — Removed auth stack (прямой вход или PKCE, страница /login/legacy-auth). Сборка: QMSERVER_API_URL, VITE_*, при PKCE — VITE_LEGACY_ENV_ — см. переменные и вход Removed auth stack; install.sh, ghcr.io/<owner>/qmweb
QMDocsСтатический сайт (Docusaurus 3): описание архитектуры и эндпоинтов; сборка — npm run build в каталоге QMDocs

Публичный API по продакшену обычно доступен по https://api.qx-dev.ru (см. Развёртывание).

Монорепозиторий Git

Корень qm-project — отдельный Git-репозиторий. Каталоги QMAdmin, QMClient, QMDocs, QMLauncher, QMServer, QMWeb подключены как субмодули (список и URL — .gitmodules). QMServer может быть приватным: для git submodule update нужен SSH и ключ в ssh-agent (ssh-add -l, проверка GitHub: ssh -T [email protected]).

git clone --recurse-submodules <URL-вашего-qm-project>
git submodule update --init --recursive

Подтянуть субмодули до последних коммитов на удалённых ветках (меняет указатели в суперрепозитории): git submodule update --remote --merge. Коммиты делайте в каталоге субмодуля, затем в корне закоммитьте обновлённый указатель субмодуля.

Каталог QXMods/ в корне не отслеживается (.gitignore).

Быстрый старт (монорепозиторий)

# В .env или .env.cloud задайте GHCR_OWNER (владелец ghcr.io — см. .env.example)
make build-all # QMLauncher + docker compose pull qmserver (образ qmserver:free-latest)
make run-all # up qmserver (Free) + зависимости из docker-compose.yaml
# облачный стек: make build-qmserver-cloud && make run-qmserver-cloud (образ qmserver с ghcr.io)
make deploy # прод: rsync + сборка/запуск (QMServer из ghcr.io)

Окружения и порты продакшена — в Развёртывание.

Ссылки на окружения

СервисДомен (пример)
QMServer (API, Swagger)api.qx-dev.ru
QMAdminadmin.qx-dev.ru
QMWebweb.qx-dev.ru
Документацияqm.qx-dev.ru