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
| Need | Detail |
|---|---|
| A machine | Ubuntu 24.04, x86_64, with /dev/kvm. Bare metal is best. See Hardware. |
| Docker | Docker Engine with Compose 2.24.4 or newer |
| DNS | Your 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 subnets | 172.31.250.0/24 (the Compose network) and 10.42.0.0/16 (sandboxes) |
| A reboot | The 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 machines | One 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 from | PT_PRIVATE_IP | Its container address, 172.31.250.10. The host firewalls :18048 and :8080 to it. |
| Postgres | Published on PT_PRIVATE_IP for every host | Published on 127.0.0.1 only, where the edge proxy reads it |
| Bundled object store | Published on PT_PRIVATE_IP | Not 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 -dsetup.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 acceptThen wait for the host to report ready (see Sandbox hosts) and create a sandbox.