Requirements
Hardware, software and ports to check before you install
The default layout puts the app and k3s together on one server (a single node).
Hardware
| Item | Requirement |
|---|---|
| CPU architecture | amd64 (x86_64) or arm64 (aarch64). Every image in the Compose file is pinned to a version that supports both architectures |
| GPU | NVIDIA 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 |
| Memory | The 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. A single training pod is capped at 64 GiB by default (GEO_MLOPS_TRAINING_RUNTIME_MEMORY_LIMIT) |
| Disk | Datasets, model artifacts and container images all accumulate in RustFS (a Docker volume). Keep backups off that disk: prepare a separate disk or NAS |
Software
| Item | Purpose | Notes |
|---|---|---|
| Linux | Server OS | You need systemd to use the backup timer |
| Docker Engine + Compose v2 | Runs the app and its supporting services | The docker compose command must work. The Compose file's env_file uses the required: false syntax, so you need Compose 2.24 or later |
| k3s | Runs the training, build and serving pods | The app connects through /etc/rancher/k3s/k3s.yaml |
| NVIDIA driver + NVIDIA Container Toolkit | GPU use in pods | k3s must be able to find the nvidia runtime |
| NVIDIA device plugin | Makes nodes advertise GPUs as the nvidia.com/gpu resource | The manifest ships with the source — Prepare k3s and GPUs |
RuntimeClass nvidia | How GPU pods get the driver | Must 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. In the firewall, open only 10000 (or 443 on a front proxy) to the outside. 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.
| Port | Service | Used by |
|---|---|---|
| 10000 | App (API for the web UI, /mlflow, container registry /v2) | User browsers, MLflow clients, edge devices, cluster pods |
| 5433 | PostgreSQL (shared by the app and MLflow) | App, backup script |
| 9000 | RustFS S3 API | App, training pods (dataset staging) |
| 9001 | RustFS web console | Operators (only when needed) |
| 9090 | Prometheus | App (the console screens show it for you) |
| 9093 | Alertmanager | App (the console screens show it for you) |
| 5000 | proxpi — pip package cache | Build pods |
| 3142 | apt-cacher-ng — apt package cache | Build pods |
Next: Components