PLATINUM DOCS
Self-hosting

One machine

Run the control plane and a sandbox host on the same KVM machine.

One KVM machine can run everything: the control plane in Docker Compose, and the host agent, the edge proxy and the sandboxes beside it. The host side is installed with the same install command any sandbox host uses.

It suits evaluation, development, and a personal or single-team install. It holds one host: other machines cannot reach Postgres or the object store here (see What changes).

Check what you need

NeedDetail
A machineUbuntu 24.04, x86_64, with /dev/kvm. Bare metal is best. See Hardware.
DockerDocker Engine with Compose 2.24.4 or newer
DNSYour API hostname pointing at this machine, plus the console and preview names if you want them. See Domains & TLS.
Free ports:80, :443, :8080 and :18048
Free subnets172.31.250.0/24 (the Compose network) and 10.42.0.0/16 (sandboxes)
A rebootThe host installer reboots the machine once

What changes

One override file, infra/compose/docker-compose.single-server.yml, covers what differs when the control plane and the host share a machine.

Separate machinesOne machine
Edge proxy port:80:8080 (PT_EDGE_PORT), because Caddy holds :80. The install command configures the edge for it.
Where the server connects fromPT_PRIVATE_IPIts container address, 172.31.250.10. The host firewalls :18048 and :8080 to it.
PostgresPublished on PT_PRIVATE_IP for every hostPublished on 127.0.0.1 only, where the edge proxy reads it
Bundled object storePublished on PT_PRIVATE_IPNot published. The server and the host agent reach it at 172.31.250.9:9000.

If 172.31.250.0/24 is in use on your network, change the subnet and both addresses in the override file.

1. Start the control plane

Follow Installation up to setup.sh, then turn the override on before starting the stack.

cd platinum/infra/compose
./setup.sh --domain api.example.com --email you@example.com --version X.Y.Z
echo 'COMPOSE_FILE=docker-compose.yml:docker-compose.single-server.yml' >> .env
docker compose up -d

setup.sh keeps the override on every later run. With --build, it lists the build file between the two.

Create the bucket as on the Installation page.

2. Install the host on the same machine

Mint an install command as in Sandbox hosts, and run it as root on this machine. The control plane writes the edge port and its own container address into the script, so nothing else is needed.

The installer logs to /var/log/platinum-install.log and reboots. Compose restarts the control plane after the reboot.

3. Check the wiring

# the edge proxy listens on 8080, and Caddy on 80 and 443
sudo ss -ltnp | grep -E ':(80|443|8080|18048) '
grep EDGE_PORT /etc/platinum/edge-proxy.env           # EDGE_PORT=8080
sudo nft list chain inet platinum_filter vsock_rpc    # ip saddr 172.31.250.10 accept

Then wait for the host to report ready (see Sandbox hosts) and create a sandbox.