Self-Hosted
Install Supercheck on one server with a guided commandEdit
Self-host Supercheck on one Linux server. One command installs Docker, the isolated test sandbox, and every Supercheck service, then checks that it is healthy.
Architecture
Scroll horizontally to view the full diagram.
Prerequisites
| Requirement | Details |
|---|---|
| OS | Ubuntu 22.04+ or Debian 12+ (x86_64 or arm64) |
| Resources | 2 vCPU and 4 GB RAM minimum; 10 GB free disk minimum, 15 GB to start, 30–50 GB for regular use |
| Access | sudo and outbound internet access. Docker and Compose are installed for you |
| Public HTTPS only | A domain pointing at the server (plus a wildcard record for status pages), inbound ports 80 and 443, and an email address for certificate notices |
Linux only. The test sandbox needs the Linux kernel. macOS, Windows, WSL2, and Docker Desktop are not supported.
Install
Download the installer
curl -fsSL https://raw.githubusercontent.com/supercheck-io/supercheck/main/deploy/docker/install.sh -o install.shRead it first with less install.sh if you like. Add --dry-run in the next step to see the plan without changing anything.
Run it
sudo bash install.sh --version 1.4.0The installer asks only what it cannot detect:
| Prompt | Default | Notes |
|---|---|---|
Choose | 1 | 1 = try it on this server (HTTP on localhost); 2 = public server (HTTPS) |
Domain for Supercheck | none | Public only. A hostname such as app.example.com, not an IP address or URL |
Email for Let's Encrypt notices | none | Public only |
Continue? | Yes | Last confirmation before anything is installed |
Allow about 10 minutes, mostly image downloads. Re-running is safe: it keeps your existing .env and secrets and skips finished steps.
Open Supercheck
The installer prints the URL: https://<your-domain> for a public install, or http://localhost:3000 for a local one.
Port 3000 listens on the server only. From your laptop, forward it with ssh -L 3000:localhost:3000 <user>@<server>. For HTTPS, the certificate is issued on first visit and can take up to a minute.
Create your account, then add a test and run it.
On a public server, sign-up is open to anyone who can reach the URL. Create your account first, then set SIGNUP_ENABLED=false in .env (or restrict it with ALLOWED_EMAIL_DOMAINS) and recreate the app. See Optional configuration.
Verify
Run from /opt/supercheck/deploy/docker (or <your --dir>/deploy/docker):
sudo docker compose ps
curl --fail --silent --show-error http://localhost:3000/api/healthAll services should be healthy and the health endpoint should return {"status":"ok".... For HTTPS, also open https://<your-domain>/api/health.
Optional configuration
Edit .env in deploy/docker, then run sudo docker compose up -d --force-recreate app worker.