Skip to main content
Version: 1.0.5

Introduction

QM Project is a platform for game infrastructure: a launcher (including for Minecraft), a unified REST API, an admin panel, a public site, the QMClient agent on dedicated Linux hosts, and this documentation. QMAdmin tracks dedicated hosts, directory scans, optionally Minecraft process management (run.sh) and logs via QMClient supervise, agent binary updates; SteamCMD-based game install/update features are in development.

Components and how they connect

QMLauncher, QMWeb, and QMAdmin call a single QMServer (/api/v1); QMServer uses MySQL. Modules (network, billing, dedicated hosts, games) and client integrations (QMLauncher, QMWeb) are configured in QMAdmin and affect API availability — see QMServer. A separate mod/plugin (QXSync, coming soon) sends inventory to QMServer only when the Minecraft module and QMWeb integration are enabled — see Inventory sync.

ComponentRole
QMLauncherGUI launcher (Wails), native only on desktop (no Docker): instances, mods, Microsoft sign-in, polling QMServer; Linux amd64 releases from GitHub tags v* — see QMLauncher
QMServerUnified REST API (/api/v1), JWT, game accounts, skins, news, settings, server-side modpacks; Linux x86_64 only; single repo QMServer with two build variants (public and Cloud with Removed auth stack/QMBilling). See QMServer and install.sh for the Cloud image. QXSync accepts inventory only with the Minecraft module and QMWeb integration (see inventory sync)
QMAdminAdmin panel: cloud users, game and dedicated servers, mods, news, keys (CurseForge, inventory sync), Ely.by. Build: QMSERVER_API_URL — see env vars; install from releases and Docker — install.sh, image ghcr.io/<owner>/qmadmin
QMClientAgent on a dedicated Linux host (native only: binary + systemd, no Docker): periodic work_dir scan, optional -supervise (start/stop/run.sh, logs in QMAdmin), qmclient -upgrade; install from QMAdmin — see QMClient
QMWebPublic site and account area: same QMServer accounts and API as the admin app (roles differ on the backend). Build: QMSERVER_API_URL, optional VITE_* — see env vars; install.sh, image ghcr.io/<owner>/qmweb
QMDocsStatic site (Docusaurus 3): architecture and endpoints; build with npm run build in QMDocs

Production API is usually at https://api.qx-dev.ru (see Deployment).

Monorepo Git

The qm-project root is one Git repository. QMAdmin, QMClient, QMDocs, QMLauncher, QMServer, and QMWeb are submodules (see .gitmodules). QMServer may be private: use SSH and an ssh-agent key for git submodule update (ssh-add -l, test GitHub: ssh -T [email protected]).

git clone --recurse-submodules <your-qm-project-url>
git submodule update --init --recursive

To move submodule pointers to remote branch tips (changes the superproject): git submodule update --remote --merge. Commit inside the submodule directory, then commit the updated submodule pointer at the repo root.

The QXMods/ directory at the root is not tracked (.gitignore).

Quick start (monorepo)

# In .env or .env.cloud set GHCR_OWNER (ghcr.io owner — see .env.example)
make build-all # QMLauncher + docker compose pull qmserver (qmserver-free image)
make run-all # up qmserver (Free) + deps from docker-compose.yaml
# cloud stack: make build-qmserver-cloud && make run-qmserver-cloud (qmserver image from ghcr.io)
make deploy # prod: rsync + build/run (QMServer from ghcr.io)

Environments and ports — Deployment.

Example domains

ServiceDomain (example)
QMServer (API, Swagger)api.qx-dev.ru
QMAdminadmin.qx-dev.ru
QMWebweb.qx-dev.ru
Docsqm.qx-dev.ru

Other documentation pages are available in Russian in this locale until translated.