Two small stacks behind Bundar: Phoenix and Postgres, Podman and Caddy
Bundar has two distinct sides: the control plane that you use to manage deployments, and the software it sets up on your server. Keeping those sides understandable matters more to us than collecting infrastructure components.
The control plane: Phoenix and PostgreSQL
Bundar is a Phoenix application backed by PostgreSQL. Phoenix LiveView and PubSub power the web interface and live updates; PostgreSQL stores the platform's data. Background deployment work runs in the same Elixir application with Oban, using PostgreSQL for its job queue. We don't need separate Redis or Soketi services for jobs and live updates.
This is the kind of approach described in Elixir Is All You Need: use the capabilities already in Elixir and its database before adding more moving parts. It doesn't mean PostgreSQL is unique to Bundar, or that every application should use this stack. It means fewer services to operate for this control plane.
The server you own: SSH, Podman, and Caddy
The control plane connects to your Linux server over SSH. Podman builds or pulls images and runs your applications; Caddy routes web traffic and manages HTTPS. Your applications run on your host, not inside the control plane's database or web process. There is no Bundar agent to install on each server.
That is a separate choice from using Phoenix and PostgreSQL. Why Bundar uses Podman and Caddy explains the deployment path. For the distinction between rootless Podman and per-container user namespaces, read Podman userns=auto and rootless security.
How does that compare?
These are different ways to solve the same broad problem—deploying apps to servers you control—not a ranking of features or security:
- Coolify uses a Laravel/PHP control plane with PostgreSQL. Its v4.3.23 Compose stack also runs Redis and Soketi alongside the application and database. Its server workflow uses Docker; its proxy options include Traefik and Caddy. Caddy alone is not a Bundar-exclusive feature.
- Dokploy uses a Next.js/Node control plane with PostgreSQL, and deploys through Docker with Traefik for routing.
- CapRover uses a Node.js control plane with file-backed platform configuration, and runs applications through Docker Swarm with Nginx.
Coolify and Dokploy also use PostgreSQL for their platform data. Bundar's distinction is the combination: one Phoenix/Elixir application and PostgreSQL for the control plane, then SSH, Podman, and Caddy on the customer server. You can inspect the containers and routing on a regular host, while the control plane stays a small set of services to maintain.