Requirements
Hardware, software and ports to check before you install
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
| 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 |
| Disk | Datasets, 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
| 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 |
| 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. 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.
| 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