Before you start, check that your server meets the conditions below. The default layout puts the app and k3s together on one server (a single node).

Hardware

ItemRequirement
CPU architectureamd64 (x86_64) or arm64 (aarch64). Every image in the Compose file is pinned to a version that supports both architectures
GPUNVIDIA GPU (needed for training and GPU serving). The platform starts without a GPU, but training that needs one (for example, point cloud training) is rejected at submission
MemoryThe app container is capped at 16 GB by default (GEO_APP_MEM_LIMIT). Add the memory that Postgres, RustFS and the training pods will use
DiskDatasets, model artifacts and container images all accumulate in RustFS (a Docker volume). We recommend a separate disk or NAS so that backups do not sit on the same disk

Software

ItemPurposeNotes
LinuxServer OSYou need systemd to use the backup timer
Docker Engine + Compose v2Runs the app and its supporting servicesThe docker compose command must work
k3sRuns the training, build and serving podsThe app connects through /etc/rancher/k3s/k3s.yaml
NVIDIA driver + NVIDIA Container ToolkitGPU use in podsk3s must be able to find the nvidia runtime
NVIDIA device pluginMakes nodes advertise GPUs as the nvidia.com/gpu resourceThe manifest ships with the source — Prepare k3s and GPUs
RuntimeClass nvidiaHow GPU pods get the driverMust be named nvidia (GEO_MLOPS_SERVING_GPU_RUNTIME_CLASS)

Ports

All ports listen on 0.0.0.0 on the server. External requests reach only port 10000 (API, MLflow, registry); the rest are used only inside the server or by cluster pods. We recommend opening only 10000 (or 443 on a front proxy) to the outside in the firewall. The web UI is a set of static files, so you host it on a separate web server or static hosting — see "Deploy the web UI" in Install with Docker Compose.

PortServiceUsed by
10000App (API for the web UI, /mlflow, container registry /v2)User browsers, MLflow clients, edge devices, cluster pods
5433PostgreSQL (shared by the app and MLflow)App, backup script
9000RustFS S3 APIApp, training pods (dataset staging)
9001RustFS web consoleOperators (only when needed)
9090PrometheusApp (the console screens show it for you)
9093AlertmanagerApp (the console screens show it for you)
5000proxpi — pip package cacheBuild pods
3142apt-cacher-ng — apt package cacheBuild pods

Next: Components

Written for the platform as of 2026-09-21.

© Geo-MLOps