Run your SaaS product on a platform of your own
scaledbox is a Go module you build your own SaaS platform from, under your product's name. Your
repository imports it and builds two binaries: shop-ops, your operator's CLI and your platform's
server, and shop, the CLI you give your customers. Your platform runs on your own Hetzner servers and
Cloudflare account, with your names on everything your customers see.
It runs everything a SaaS product needs: your services, your own domains with HTTPS, Postgres, object storage, queues, scheduled jobs, logs, backups, uptime checks and a status page. And it runs your customers' apps: each customer is a tenant, each of its apps' environments a sandboxed box, asleep when idle, within limits and at prices you set.
Who it is for
Builders of SaaS products who want a platform like Fly.io or Render, under their own brand, for their product and their customers' apps: an AI app builder deploying the apps it generates, a site builder hosting its users' sites.
- Your brand. The CLIs, the API, the dashboard, the console, the emails and the status page carry your product's name, domains and logo.
- Your servers, your bill. Your platform runs on your Hetzner account and pays Hetzner's prices, nothing in between. Anything that bills (a new server, a bigger type) waits for a person's approval.
- Hard limits for your tenants. A tenant's resources are admitted against the limits you set before they exist; past an allowance new work is refused or slowed, and nothing running is ever stopped.
- One stack. The same module,
sync, reconciler and images for every product: a platform is operated, debugged and upgraded the same way, whoever runs it.
Three modes
- saas, for a product with tenants: your server and services, and your customers' apps on clusters of their own, with the tenants API, their CLI and their console.
- single, for a product with server-side services and no tenants: your server and services; nothing of the tenant layer is installed. The smallest is one server.
- static, for a site of only static files: no server and no cluster, every service served by Cloudflare and deployed from your CI. This site is one.
Get started
Getting started goes from an empty repository to your
first deploy: the module in go.mod, your brand, the two cmd/ mains, the cluster file, sync, then a
deploy through your operator's CLI. Your platform explains the
modes and how to pick one. The documentation has the rest.
Run boxes on your machine
The scaledbox CLI runs a box on your machine as a deploy would (scaledbox dev), on the latest
scaledbox's runtime, which it downloads once and your own CLIs' dev can run too (macOS and Linux,
amd64 and arm64; into ~/.local/bin, no sudo):
curl -fsSL https://scaledbox.dev/install.sh | sh
Run it again to update. Downloads lists its files and their SHA-256s; Develop locally says how your CLIs use it.