Setu

Your binaries. Your servers. One control panel.

Open source · AGPL-3.0

Your binaries. Your servers. One control panel.

Setu is a cPanel-style control panel for single-binary web apps. Rust, Go, anything that ships as one executable: give each app a domain, HTTPS, its own PostgreSQL database, nightly backups and updates that roll back. All on servers you own.

Install SetuView on GitHub

One command to install

On a fresh Ubuntu 22.04/24.04/26.04 or Debian 12/13 server (x86_64 or aarch64), as root, with ports 80 and 443 open and a DNS name pointing at it. The installer brings PostgreSQL and Caddy itself.

Install

sh
curl -fsSLO https://github.com/setucp/setu/releases/latest/download/install.sh && sudo bash install.sh --panel-host panel.example.com

No DNS name yet

sh
curl -fsSLO https://github.com/setucp/setu/releases/latest/download/install.sh && sudo bash install.sh --tls internal

From bare server to live app in three steps

Setu is a single binary. It is the control plane, the per-server agent and the small privileged helper, selected by subcommand.

  1. Step 1

    Install

    Run the installer. It verifies the release against SHA256SUMS, sets up PostgreSQL and Caddy, starts the panel and prints a one-time setup URL.

  2. Step 2

    Add a server

    The setup wizard registers this machine; add more with one `setu agent install` line. Agents only connect outward, and each server shows online within seconds.

  3. Step 3

    Add an app from a manifest

    Paste or link a small TOML manifest, pick a domain, and Setu provisions the site: user, database, binary, systemd unit, HTTPS route, health check.

Everything a site needs, handled

No Dockerfiles to write, no runtime to maintain on the server. The app is a published binary and Setu runs it as a hardened systemd service.

  • TLS

    Automatic HTTPS

    Caddy sits in front, programmed through its admin socket, with one route per domain and certificates through ACME.

  • Data

    PostgreSQL for every app

    Each site gets its own database and role, created for you and passed to the app through its environment.

  • Runtime

    Native systemd, real limits

    Every site runs as its own user in a hardened unit, with memory and CPU limits enforced by cgroups. No container runtime in the path.

  • Safety

    Nightly backups

    Database and data directories are backed up on a schedule, and you can restore a site from the panel.

  • Releases

    Updates that roll back

    An update backs up first. If the new version does not come up healthy, Setu puts the old binary back and restores data when it has to.

  • Fleet

    Many servers, one panel

    Agents long-poll the control plane over HTTPS, outbound only. Manage one box or a small fleet from the same place.

Built for single-binary apps

If it compiles to one executable, binds an address from the environment and answers a health check, Setu can run it.

  • Rust

    Axum, Actix and friends

    Publish a release tarball and describe it in a manifest. Setu does the rest.

  • Go

    Static Go services

    One static binary, a port and a database URL from the environment is all it takes.

  • Any binary

    Anything compiled

    Setu has no per-language knowledge. The manifest is the only app-specific thing it reads.

  • Samples

    Miniflux and hello-axum

    Sample manifests you can copy and adapt live in the manifests repository.

Why not Docker, Kubernetes or cPanel?

They are good tools for other jobs. Setu is for the case where you have a few compiled apps and your own servers.

  • Instead of Docker

    Nothing to build or run

    Containers still leave you to wire the proxy, certificates, database, backups and updates. Setu does that part, and the app stays a plain binary under systemd. Containers are on the roadmap if you need them.

  • Instead of Kubernetes

    No cluster to operate

    A cluster is a lot of moving parts for a handful of binaries. Setu is one binary and a few systemd units that you can read and debug with journalctl.

  • Instead of cPanel

    Made for compiled apps

    Hosting panels are built around PHP sites and shared hosting. Setu is built for Rust and Go services, and it is open source under AGPL-3.0.

Where it is going

Setu is early: expect rough edges before 1.0. Version 0.2 is planned to run anything and lose nothing. Plans can change.

  1. Available

    Binary apps on your servers

    Native systemd, Caddy HTTPS, per-app PostgreSQL, local backups with restore, updates with rollback, multi-server agents.

  2. Coming soon

    Containers (Podman)

    Container images as a first-class runtime, rootless Podman under systemd.

  3. Coming soon

    Off-box encrypted backups

    Nightly uploads to S3-compatible storage with retention and restore.

  4. Coming soon

    Cloudflare tunnel ingress

    Serve sites from servers with no public IP.

  5. Coming soon

    Moves between servers

    Move a site to another server, and drain a server without losing sites.

  6. Coming soon

    2FA and alerts

    Two-factor sign-in for operators, and email or webhook alerts when a site, server or backup fails.

Put your next binary on a server you own.

Setu is free and open source. Read the docs, or go straight to the installer.

Get Setu on GitHub