Install the platform
Run the installer on a Linux server to get the control plane, edge, dashboard and automatic TLS.
The platform runs on one Linux server you control. The installer sets up Caddy with automatic TLS, a bubblewrap sandbox, a firewall, one admin identity, and the control, edge and dashboard services.
Requirements
- An x86-64 Linux server running Debian, Ubuntu or a RHEL-family distribution, with systemd and the cgroups v2 unified hierarchy.
- A domain you control for deployments, for example
fn.example.com. Every project and platform hostname lives under it. - Inbound ports 22, 80 and 443. If port 80 is blocked, pass a Cloudflare API token as
SB_CF_TOKENso Caddy can use the DNS-01 challenge instead.
Run the installer
SSH into the server and run:
curl -fsSL https://sproutboat.com/install.sh | sudo bash
It asks for the deployment domain, an email for Let’s Encrypt, and an admin username, then runs unattended. It installs the newest released version.
Partway through, it pauses and asks for one DNS record: a wildcard A record for *.<your-domain> pointing at the server, DNS-only (not proxied). It waits up to five minutes for the record to resolve, then continues.
Non-interactive install
| Variable | Purpose |
|---|---|
SB_DOMAIN |
Deployment domain. |
SB_ACME_EMAIL |
Let’s Encrypt email. Also the admin’s sign-in email. |
SB_ADMIN |
Admin username. |
SB_CF_TOKEN |
Optional. Cloudflare API token for the DNS-01 challenge. |
SB_GITHUB_CLIENT_ID, SB_GITHUB_CLIENT_SECRET |
Optional. Enable GitHub sign-in on the dashboard. |
SB_SKIP_DNS_CHECK=1 |
Skip the wait for DNS. |
SB_REF |
Pin a release tag such as v0.5.3, or main to track the development branch. |
After the install
The installer prints three things:
| Where | |
|---|---|
| Control API | https://control.<your-domain> |
| Dashboard | https://dashboard.<your-domain>. Sign in with the Let’s Encrypt email and the admin token as the password. |
| Admin token | Printed once and saved in /root/sproutboat-admin.env. |
Point the CLI at the control API with the admin token, then deploy:
npx sproutboat login --api-url https://control.<your-domain> --token <admin-token>
Create accounts for other people from the dashboard; see Get access.
Operate it
Run these on the server with sudo:
| Command | Does |
|---|---|
sbctl status |
Health of every service. |
sbctl logs [control | edge | caddy] |
Follow logs. |
sbctl down, sbctl up |
Pause and resume everything. |
sbctl update |
Stage the newest release and run its installer. |
sbctl uninstall [--keep-state] |
Remove everything. --keep-state keeps the database, artifacts and backups. |
The platform backs itself up daily to /var/lib/sproutboat/backups and keeps the last seven. Manage backups in the dashboard under Admin → Backups, and copy them off the server.