Helm installation
Install MMX from its published OCI chart and GHCR images. No source checkout or image build is required.
Requirements
- Kubernetes 1.29 or newer, Helm, and
kubectl. - Three schedulable nodes and a default persistent-volume storage class.
- At least 3 CPUs, 9 GiB of memory, and 45 GiB of persistent storage for the voters, plus capacity for gateways, consumers, and dependencies.
- A CNI that enforces NetworkPolicy.
The default profile uses shared CPUs. Production operations covers capacity and the optional peak-throughput profile.
Install the exchange
Choose a released version and install its matching chart and images:
export MMX_VERSION=0.1.0-rc.1
helm upgrade --install mmx oci://ghcr.io/awesomepandapig/mmx/charts/mmx \
--version "$MMX_VERSION" --namespace mmx --create-namespace \
--wait --timeout 10m
helm test mmx --namespace mmx --logsThe initial release candidate is 0.1.0-rc.1; prereleases require an explicit version.
See the release list for available versions.
The operator console is included. Markets and webhook settings start empty and survive upgrades.
Choose service exposure
kubectl get services --namespace mmx| Service | Port | Callers |
|---|---|---|
mmx-console | 8093 | Operators and native CLI |
mmx-gateway | 8000 | Trusted game servers |
mmx-websocket | 8080 | Market-data clients |
Services default to ClusterIP. Choose your ingress, LoadBalancer, or NodePort configuration for your network. For example, a cluster with a load-balancer controller can expose the console with --set console.service.type=LoadBalancer. Inspect its assigned address with kubectl get service mmx-console --namespace mmx.
Terminate TLS at your ingress or proxy. Allow your game servers through networkPolicy.gameServers; this selects network callers, not player permissions. See Authentication.
Configure the native CLI
Install the CLI on Linux (amd64 or arm64) or macOS (Apple silicon):
curl -fsSLO "https://github.com/awesomepandapig/mmx/releases/download/v$MMX_VERSION/install.sh"
sh install.sh "$MMX_VERSION"
export PATH="$HOME/.local/bin:$PATH"For manual installation, download the platform-specific mmx binary from the same release and put it on your PATH.
Set the reachable console and gateway addresses, then read the admin token using your Kubernetes operator credentials:
export MMX_URL=https://console.exchange.example
export MMX_GATEWAY_URLS=https://orders.exchange.example
kubectl get secret mmx-control --namespace mmx \
-o jsonpath='{.data.MMX_ADMIN_TOKEN}' | base64 -d
# Set the decoded value in your operator environment.
export MMX_ADMIN_TOKEN='<decoded admin token>'
mmx health
mmx statusSign in & credentials
Option A: Pre-seed admin password (Recommended for production)
To prevent initial credentials from being logged to container stdout (and indexed by log aggregators), provide a Kubernetes Secret holding the password:
kubectl create secret generic mmx-admin-password \
--namespace mmx \
--from-literal=password='<your-secure-password>'Pass the secret when installing with Helm:
helm upgrade --install mmx oci://ghcr.io/awesomepandapig/mmx/charts/mmx \
--version "$MMX_VERSION" --namespace mmx \
--set console.adminPasswordSecret.name=mmx-admin-password \
--set console.adminPasswordSecret.key=passwordOption B: Automatic generation (Evaluation)
When console.adminPasswordSecret.name is left empty, MMX generates a temporary password on first boot and logs it once:
kubectl logs --namespace mmx \
-l app.kubernetes.io/instance=mmx,app.kubernetes.io/component=console \
--prefix=true --tail=200 | grep 'Console: first-run admin password:'Open the console service on port 8093 and sign in.
Continue with Getting started.