SupaFast is a Next.js app that runs entirely in the browser — there is no backend, no database, no server state. All secrets are generated client-side. You can fork it, self-host it on Vercel, Netlify, or any static host, and it will work identically.
*.vercel.app URL immediately. You can add a custom domain in project settings.git clone https://github.com/nadercas/supafast.git cd supafast npm install npm run dev
Open http://localhost:3000. The deployer is fully functional locally — it calls the Hetzner API directly from your browser.
Build command: npm run build Publish directory: .next
*.netlify.app URL.If you want to run it on your own server rather than a managed platform:
# Clone your fork git clone https://github.com/YOUR_USERNAME/supafast.git cd supafast # Build npm install npm run build # Run with Node npm start # Now serving on http://localhost:3000 # Or run with PM2 for persistence npm install -g pm2 pm2 start npm --name supafast -- start pm2 save
Put Nginx or Caddy in front for HTTPS. Example Caddyfile:
yourdomain.com {
reverse_proxy localhost:3000
}SupaFast has a zero-backend architecture. Here's the complete data flow:
Browser (your machine)
│
├── Generates all secrets via Web Crypto API (never leaves browser)
├── Calls api.hetzner.cloud directly (your token, your API, no proxy)
├── Generates a cloud-init bash script (all secrets embedded)
└── Passes cloud-init as user_data when creating the Hetzner server
│
▼
Hetzner Server (first boot)
│
cloud-init runs the bash script:
├── Phase 1: OS hardening
├── Phase 2: Supabase docker stack
├── Phase 3: Restic backups to S3
├── Phase 4: Management dashboard container
└── Phase 5: MCP server (Claude/Cursor integration)If you forked the repo and want to pull upstream changes:
# Add the upstream remote (one-time) git remote add upstream https://github.com/nadercas/supafast.git # Pull updates git fetch upstream git merge upstream/main # Redeploy (Vercel/Netlify auto-deploys on push to main) git push origin main