Skip to content
sproutboat
Esc
↑↓navigate↵open⌘Jpreview
On this page

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_TOKEN so 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.

Was this page helpful?