Skip to main content

What is Soverstack?

Soverstack is a CLI that turns YAML files into production-ready infrastructure.

You describe what you want -- a database cluster, a firewall, a VPN, monitoring -- and Soverstack figures out how to deploy it. No Ansible playbooks to write. No glue scripts to maintain. No 47-tab browser session on "how to set up Patroni with etcd".

soverstack init my-project
soverstack validate
soverstack preflight
soverstack plan
soverstack apply

That's it. Five commands, from zero to a fully operational infrastructure.


The problem

Setting up production infrastructure on bare metal is hard. Not because any single piece is complicated, but because there are so many pieces:

  • Firewalls with failover
  • VPN for secure access
  • DNS with load balancing
  • PostgreSQL with HA replication
  • Secret management with auto-unsealing
  • SSO across all services
  • Monitoring, logging, alerting, SIEM
  • Proxmox VE clusters with Ceph storage
  • Backup with retention policies

Each one has its own config format, its own quirks, its own failure modes. And they all need to talk to each other. Getting one service running is a weekend project. Getting all of them running together, with HA, security, and proper networking? That's months of work.

Soverstack does this in minutes.

How it works

  1. You declare your infrastructure in simple YAML files -- servers, networks, services
  2. Soverstack validates everything: correct types, cross-references, HA constraints, security rules
  3. Soverstack preflights each node: SSHs in, inventories disks and NICs, computes the disk plan
  4. Soverstack plans the deployment: what to create, update, or destroy
  5. You review the plan -- nothing happens without your approval
  6. Soverstack applies the changes using Ansible under the hood

You never touch Ansible directly. You never SSH into machines to run commands. You declare what you want, and the CLI orchestrates the rest.

What gets deployed

A typical production setup on 3 bare-metal servers gives you:

ServiceRoleHA
VyOSFirewall with VRRP failover2 instances
HeadscaleVPN mesh network2 instances
PowerDNS + dnsdistDNS with load balancing2+2 instances
PostgreSQL + PatroniRelational database with auto-failover3 instances
OpenBaoSecret management (Vault fork)3 instances
KeycloakSingle sign-on for all services2 instances
PrometheusMetrics collection2 instances
GrafanaDashboards1 instance
LokiLog aggregation2 instances
AlertmanagerAlert routing2 instances
TeleportBastion / SSH gateway2 instances
WazuhSecurity monitoring (SIEM)1 instance
HAProxyLoad balancer2 instances
PBSBackup server1 instance
MinIOObject storage2 instances

All of this is pre-configured, interconnected, and secured by default. Every service authenticates through Keycloak. Every secret lives in OpenBao. Every metric flows to Prometheus. Every log goes to Loki.

Three infrastructure tiers

Soverstack adapts to your scale:

LocalProductionEnterprise
Servers13+5+
HAOptionalMandatoryMandatory
Use caseDev / HomelabStartups / SaaSRegulated / Compliance

Same YAML, same commands. The tier determines validation strictness and default instance counts.

Project structure

After soverstack init, your project looks like this:

my-project/
├── platform.yaml # Global config (images, flavors, tier)
├── .env # Bootstrap passwords (never commit)
├── .ssh/ # SSH keys (never commit)
├── inventory/
│ └── eu/ # Region
│ ├── region.yaml # Region metadata
│ └── datacenters/
│ ├── hub-eu/ # Backup/storage hub
│ │ ├── nodes.yaml # Server definitions
│ │ ├── network.yaml # VLANs and IPs
│ │ └── ssh.yaml # SSH access config
│ └── zone-paris/ # Compute zone
│ ├── nodes.yaml
│ ├── network.yaml
│ └── ssh.yaml
├── workloads/
│ ├── global/ # Deployed once (DB, DNS, secrets...)
│ ├── regional/eu/ # Per-region (monitoring, bastion...)
│ └── zonal/eu/ # Per-zone (firewall, LB...)
│ ├── hub-eu/ # Hub workloads (backup, storage)
│ └── zone-paris/ # Zone workloads (firewall, LB)
└── .soverstack/ # Internal state (auto-managed)

Every YAML file is human-readable, well-commented, and editable. Soverstack generates sensible defaults, but you're always in control.

Next steps