TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/kenzz55/ue5-iocp-mmo-server/llms.txt
Use this file to discover all available pages before exploring further.
ServerSolution/Infra/ directory contains a single docker-compose.yml that brings up the four infrastructure services the MMO server stack depends on: a MariaDB database, a Redis cache, a Prometheus metrics collector, and a Grafana dashboard. All services are configured through environment variables stored in a local .env file that is never committed to source control.
docker-compose.yml
Environment variables
CreateServerSolution/Infra/.env by copying .env.example and replacing every placeholder value with a strong password. The Compose file uses the :? syntax, which causes docker compose to abort with a descriptive error if a required variable is missing or empty.
| Variable | Required | Default | Description |
|---|---|---|---|
MARIADB_ROOT_PASSWORD | ✅ Yes | (none) | Password for the MariaDB root superuser. Used only for administrative access — the application connects as the game user. |
MARIADB_PASSWORD | ✅ Yes | (none) | Password for the game database user. Must match the password field in the GameServer’s Database.ini and the ConnectionString in the AuthServer’s appsettings.json. |
GRAFANA_ADMIN_USER | No | admin | Username for the initial Grafana administrator account. Defaults to admin if not set. |
GRAFANA_ADMIN_PASSWORD | ✅ Yes | (none) | Password for the Grafana administrator account. Grafana will refuse to start if this is unset. |
Services
| Service | Container name | Published port | Purpose |
|---|---|---|---|
mariadb | serversolution-mariadb | 3306 | Relational database holding accounts, characters, inventory, and item data |
redis | serversolution-redis | 6379 | Token store for the AuthServer; also used by the GameServer for session tokens |
prometheus | serversolution-prometheus | 9090 | Scrapes the GameServer’s /metrics endpoint (port 9108) every 15 s and retains 15 days of time-series data |
grafana | serversolution-grafana | 3000 | Visualization front-end pre-provisioned with dashboards from monitoring/grafana/dashboards/ |
Volume mounts
| Volume | Mounted inside | Description |
|---|---|---|
mariadb-data | /var/lib/mysql | Persistent MariaDB data directory; survives container recreation |
prometheus-data | /prometheus | Prometheus TSDB storage; 15-day rolling retention |
grafana-data | /var/lib/grafana | Grafana state: dashboards, user preferences, and alert rules |
./mariadb/init host directory is mounted read-only to /docker-entrypoint-initdb.d. MariaDB executes every .sql file in that directory in lexicographic order on the first startup of a fresh volume, applying the full schema automatically.
Initial setup
Copy and configure .env
Navigate to the Open
Infra directory and create your environment file from the example:.env in an editor and replace all replace_with_a_strong_local_password placeholders with real passwords:Start all services
Bring up the full stack in detached mode:On the first run, Docker will pull the four images and MariaDB will execute the
001–005 init scripts. This typically takes 20–40 seconds.Verify the stack
Confirm all containers are healthy:Expected output shows all four services with status
Up or running: