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).


Sign in with Quazzar Cloud

When a node has been connected to the Control Panel through the setup wizard (via the Connect to Control Panel step), the OS login page shows a Sign in with Quazzar Cloud button alongside the regular username/password form.

How it works

  1. Click Sign in with Quazzar Cloud on the OS login page.
  2. Your browser is redirected to the Control Panel’s authorization screen, where you review the access request and click Approve.
  3. The Control Panel issues a short-lived authorization code and redirects back to the OS.
  4. The OS exchanges the code for a session and logs you in using your CP identity.

This uses a standard OAuth 2.0 Authorization Code flow — the OS never sees your CP password, and the authorization code is single-use and short-lived.

When it appears

The Sign in with Quazzar Cloud button is only shown if:

  • The node was connected to a Control Panel during the setup wizard (or via Settings → Control Panel).
  • The wizard_cp_endpoint setting is configured on the node.

If the button is not visible, open the setup wizard and complete the Connect to Control Panel step.

Signing in with Quazzar Cloud creates a local OS session scoped to your CP user. If you have multiple CP accounts, you can still use the standard login form to access the local admin account.