🚀 Installation
5-minute self-host setup. Works on Mac mini, NAS, Linux server, or any Docker host.
Try before you buy
Self-host installs run a 14-day free trial from first boot — full access to every engine, no credit card, no platform-side AI caps. You bring your own Gemini key during setup (we never mark up the API call). After 14 days, write actions are blocked until you install a Sovereign licence file.
Buy a Sovereign licence at scarifone.com/pricing — single tier, £1,999 one-time (plus optional £499/year maintenance for updates + security patches from year 2 onwards). You get an email with a one-line licence code (format SCARIF-...) plus the signed JSON file as an attachment. Boot your install, open the URL, paste the code on the auto-shown /installscreen — engine unlocks immediately.
The signature is verified offline using an embedded Ed25519 public key — no phone-home, works fully air-gapped, and your install keeps running forever even if scarifone.com goes away.
Requirements
- Docker + docker-compose v2 — Docker Desktop on Mac/Win, Engine on Linux
- ~2GB RAM, 20GB disk — Scarif One uses a few hundred MB; the rest is for tenant data + cache
- A free Gemini API key — get one at aistudio.google.com/apikey
If you want to expose the dashboard to the public internet, also: Cloudflare Tunnel (free, easiest) OR an SSL reverse proxy.
One-line install
curl -fsSL https://raw.githubusercontent.com/Scarif-One/scarif-one/main/scripts/install.sh | bash
This:
- Verifies Docker is installed
- Creates
~/scarif-one/ - Downloads
docker-compose.yml+.env.example - Prompts for your
GEMINI_API_KEY - Pulls the image from GHCR + starts the container
- Tells you when
http://localhost:3000is ready
Manual install
If you don't want to pipe a script to bash, do it yourself:
mkdir scarif-one && cd scarif-one curl -fsSL https://raw.githubusercontent.com/Scarif-One/scarif-one/main/docker-compose.yml -o docker-compose.yml curl -fsSL https://raw.githubusercontent.com/Scarif-One/scarif-one/main/.env.example -o .env.local # Edit .env.local — at minimum set GEMINI_API_KEY nano .env.local docker compose up -d
First run — install your licence
- Open
http://localhost:3000in your browser - You'll land on
/installautomatically — that's the pre-setup licence gate. (Or hit the 14-day-trial path below if you're evaluating.) - Triple-click the
SCARIF-...licence code in your purchase email, paste into the textarea. The form auto-detects the format with a green “SCARIF code detected” badge. - Click Install licence. Signature is verified locally against the embedded Ed25519 public key — no phone-home. ~1 second.
- Auto-redirected to
/setup.
The licence file lands at /data/licence.json, mode 0600, so a backup of /data includes the licence. If you prefer the raw JSON path: drag the .jsonattachment onto the form, or expand the “Prefer the raw JSON?” disclosure in your purchase email.
Setup wizard
After installing the licence, the 6-step wizard runs:
- AI key — paste a Gemini / OpenAI / Anthropic key. Free tier at aistudio.google.com/apikey covers most starter usage. BYOK: you pay the vendor directly, no Scarif markup.
- Business basics — workspace slug, business name, website
- Brand voice — AI scans your site + drafts a voice doc (~30s)
- Locale — currency, free-shipping threshold, hashtags, landmarks
- Integrations — Shopify, Meta, Klaviyo, Mailchimp, Judge.me (optional)
- Activate — set your admin username + password. Your password manager should offer to save the credentials when you hit Activate.
Total time: ~5-10 minutes. At the end you see a recovery codescreen (format SCARIF-RECOVER-...) — save it. That code is your self-service password reset if you ever forget your dashboard password. Successful acknowledgement → confetti + you land on the dashboard, logged in.
Forgot your password? Recovery flow
Three recovery paths, from easiest to operator-of-last-resort:
- Paste the recovery code at
/operator/reset. This is the code you saved at the end of setup. Single-use. - Mint a CLI-issued token if you lost the recovery code too. Shell into the container and run:
docker compose exec scarif-one node /app/scripts/operator-reset.mjs --list docker compose exec scarif-one node /app/scripts/operator-reset.mjs \ --tenant <slug> --username <name>
The script prints a 64-char hex token + a 30-minute expiry. Paste that at/operator/resetinstead of the recovery code. - Last resort: delete
/data/tenants/<slug>/auth.jsonand re-run setup. You keep the licence, brand profile, integrations, AI key. Only the operator credentials reset.
Read-only mode (if you skip the trial → licence path)
If you don't install a licence within the 14-day trial window, the install enters read-only mode:
- The dashboard, settings, and existing data stay fully accessible
- Mutating API calls return HTTP
402 Payment Requiredwith a JSON pointer to/sovereignty - Generation, publishing, and integrations all stop working until a licence is installed
/installstill works — paste your licence any time to unlock
Install a licence at any point — even months later — and the engine unlocks immediately without restarting the container. The trial state isn't reset by an install (it can't be re-triggered once consumed).
Auto-updates
Optional. Adds a Watchtower container that polls GHCR every 24h:
cd ~/scarif-one docker compose --profile auto-update up -d
To pin a specific version (skip auto-updates):
SCARIF_VERSION=v0.2.0 docker compose up -d
Exposing to the internet (optional)
The simplest path: Cloudflare Tunnel.
- Sign up at cloudflare.com + add your domain
- Cloudflare Zero Trust → Networks → Tunnels → Create tunnel
- Run the cloudflared install command Cloudflare gives you
- Map your subdomain to
localhost:3000 - Done — your dashboard is accessible at e.g.
scarif.yourdomain.com
Cloudflare handles the SSL + DDoS protection automatically. Free.
Backups
Set SCARIF_BACKUP_DIR in .env.local to enable nightly tarball backups at 04:00:
SCARIF_BACKUP_DIR=/path/to/backups
Manual backup any time: POST /api/admin/backup-now with SCARIF_SUPERADMIN_TOKEN.
S3-compatible (R2, B2, AWS) backup support is on the v1.5 roadmap — for now, sync your SCARIF_BACKUP_DIR to S3 with rclone or similar.
Updating
cd ~/scarif-one docker compose pull docker compose up -d
Your tenant data persists across updates (it's in ./data).
Stuck?
Check the container logs:
cd ~/scarif-one && docker compose logs -f
Or email [email protected] with the output.