Skip to main content
This guide walks through a single-host setup. You’ll install the control plane, configure it, and deploy your first app.

Prerequisites

  • A Linux server (amd64 or arm64) with KVM support
  • Docker installed and running
  • A PostgreSQL database (local or remote)
  • A domain pointing to your server (for TLS)
1

Install the control plane

curl -fsSL https://releases.zwrm.eu/zwrmd/install.sh | sudo bash
This installs zwrmd, Firecracker, generates a default config, and starts the systemd service.
2

Configure the control plane

Edit /etc/zwrm/config.toml:
[database]
  url = "postgres://user:pass@localhost:5432/zwrmd?sslmode=disable"

[proxy]
  enabled = true
  domain = "example.com"

  [proxy.tls]
    enabled = true
    email = "[email protected]"
Restart to apply:
sudo systemctl restart zwrmd
3

Verify the control plane is running

curl http://localhost:8080/v1/health
You should see:
{"status": "healthy"}
4

Install and configure the CLI

On your dev machine:
curl -fsSL https://releases.zwrm.eu/zwrmd/install.sh | bash -s -- --cli
Point it at your control plane:
zwrm auth login --api-url https://example.com:8080
5

Deploy your first app

mkdir my-app && cd my-app
zwrm init
zwrm deploy
Your app is now running on a Firecracker microVM behind TLS.

Next steps

Configuration

Full config.toml reference for the control plane.

Multi-Host

Add worker hosts to distribute VMs across machines.

Proxy & TLS

Configure the reverse proxy, SSH proxy, and PostgreSQL proxy.

Monitoring

Prometheus metrics, health checks, and log viewing.