Docs › Bare-Metal Deployment

Bare-Metal Deployment

There are no Ansible playbooks and no systemd-native / .deb / .rpm package install path in this repo today. A “Bare metal / VM (Ansible)” option appears as 📋 Planned in the README deployment table, but it is not implemented — do not expect playbooks under ansible/ or playbooks/ (there are none). The single GET /api/v1/ansible/inventory endpoint in the codebase is an Ansible dynamic-inventory source for consuming SpatiumDDI data, not an installer.

If you want SpatiumDDI running on a physical machine or a plain VM, you have two real, supported paths today. Pick by how much of the OS you want to own:

Path What you manage Start here
Docker Compose on a host/VM Your own OS + Docker; SpatiumDDI runs in containers DOCKER.md
OS appliance image (true bare-metal-OS install) Nothing — boot the image, configure via web UI APPLIANCE.md

The OS appliance is the supported bare-metal-OS path: a bootable Debian 13 image with k3s and the full SpatiumDDI stack pre-baked, installed straight onto the disk with no prior OS or container-runtime setup.


1. Docker Compose on a bare-metal host or VM

This is the canonical way to run SpatiumDDI on a machine you already own. Install Docker Engine + Compose v2 on your host (any Linux distro Docker supports), then follow the standard Compose guide:

Everything in that guide applies unchanged on bare metal — the only difference from a cloud host is that you provide the box. The DNS and DHCP service containers are opt-in via Compose profiles (COMPOSE_PROFILES=dns,dhcp docker compose up -d), which is useful on bare metal where you may want the host’s real NIC bound to a DHCP server.


2. HA PostgreSQL (Patroni) under Docker Compose

Not supported in 1.0. The repo ships k8s/ha/postgres-docker-compose.yaml, a Patroni overlay (3 Postgres nodes, 3 etcd nodes and HAProxy) meant to replace the single postgres service. It does not work, and following it on an existing install is harmful:

The file carries the same warning in its header and is kept only as a starting point for #137, which tracks making Compose HA real. For a highly available database today, use the OS appliance’s multi-node control plane (below) or Kubernetes with CloudNativePG.

Topology 4 — HA control plane in TOPOLOGIES.md describes the hand-rolled HA shape (HA Postgres + Redis Sentinel + API hosts behind a load balancer) if you build your own. On the OS appliance, HA PostgreSQL is provided automatically via CloudNativePG when you promote control-plane members, and you do not run Patroni there.


3. OS appliance — the supported bare-metal-OS install

If you want SpatiumDDI to own the whole machine (no host OS to maintain, no Docker to install), use the OS appliance image. It is a bootable Debian 13 image that installs straight onto bare-metal disk and runs the full stack on embedded k3s, configured entirely from the web UI and the dedicated /appliance management hub.

Build a local ISO with make appliance-dev-iso.


Where to go next