Skip to Content
DocsCloud OSSetup Wizard

Setup Wizard

When you log into a fresh Quazzar Cloud OS for the first time, a full-screen wizard pops up. Pick a goal and Quazzar pre-installs the matching app stack, primes Drive, and opens the right invite flow — all in two clicks.

This is Phase В.2 of the GA roadmap.

Goals

GoalWhat you get
File storage for me + familyDrive (always-on) + invite slots for two family members.
Dev environmentContainer Manager + Web Terminal + reverse-proxy with auto-domain hint.
Family serverDrive + Calendar + Mail (with smarthost prompt) + Plex + Photos.
Business / teamWorkspace (Docs/Sheets/Slides/Notes) + Tickets + Whiteboard + audit log.
CustomSkip the wizard, dashboard as-is.

The five-card landing screen also has a top-of-page link Already running self-hosted? Import → which routes to the Import Wizard.

Re-running

Open Settings → General → Re-run setup wizard. Confirm and the wizard re-opens. Idempotent — already-installed apps stay; missing apps install. Useful when you want to switch a node’s purpose without a full reinstall.

How it works

The wizard renders client-side in pages/SetupWizardPage.tsx. On goal selection it calls POST /api/setup/run with the template id; the runner walks the template’s steps:

  • install_app → goes through the existing app-installer chokepoint (so license gating, sandbox, and audit-log all behave normally).
  • server_mode → flips the server-mode flag.
  • invite_slots → pre-creates N empty invite tokens.
  • hint_card → sets a dashboard banner the user sees on first visit.
  • enable_audit → flips the audit toggle.

Per-step progress streams via the existing /api/events SSE channel. The run state persists in setup_runs so the user can leave the screen — when they come back, the progress picks up.

Templates

Templates ship as JSON under internal/setup/templates/ and are embedded into the binary via //go:embed. Each one declares an ordered list of steps. Future templates ship without code changes.

Plans

TierSetup wizardNotes
Free (Community)Paid apps inside templates (Mail, Photos…) show a 🔒 badge with an Upgrade CTA — they don’t silently skip.
Pro / Team / EnterpriseSame wizard; gated apps install normally.

profiles.setup_completed (boolean, defaults false) gates the auto-popup. Set to true on dismiss or first successful run.

API

GET /api/setup/state → { completed, last_template, can_rerun } GET /api/setup/templates → [{ id, name, description, steps:[{label}] }] POST /api/setup/run { template_id } → 202 { run_id } GET /api/setup/runs/:id → run state + last progress POST /api/setup/dismiss → 204

All session-authed; the run + reset endpoints additionally require admin role on the local OS (regular tenants don’t see another admin’s wizard).