Skip to Content
DocsCloud OSInstall Script

Install Script

scripts/install.sh is the curl-bash bootstrapper that gets new users from “blank machine” to “running Quazzar Cloud OS” in about 90 seconds. Phase В.1 of the GA roadmap polished it — preflight checks, idempotent re-run, phased progress, debug bundle on failure, rollback, and CLI flags.

Usage

curl -fsSL https://get.quazzar.cloud/install | sudo bash

For non-interactive (CI / cloud-init) installs:

curl -fsSL https://get.quazzar.cloud/install | sudo bash -s -- --unattended

Supported platforms

  • Ubuntu 22.04 / 24.04
  • Debian 12+
  • Rocky Linux / AlmaLinux / RHEL 9+
  • Fedora 39+

Architectures: x86_64 (amd64), aarch64 (arm64).

The installer aborts gracefully on unsupported distros. Pre-flight checks run before any state-changing operation.

Phases

The install runs in six phases; each prints [N/6] <label>:

  1. Pre-flight checks — distro, arch, /var disk (warn <10G, fail <4G), RAM (warn <1500M, fail <800M), systemd present, sudo/root, ports 80/443 (warn if occupied — Caddy falls back to 8080 automatically), outbound HTTPS to apt.quazzar.space.
  2. Adding Quazzar repository — GPG key import, repo file write. Skipped if already present (idempotent re-run).
  3. Installing quazzar packagesquazzar + quazzar-cli from APT or DNF.
  4. Starting servicessystemctl enable --now quazzar.
  5. Waiting for health — polls http://127.0.0.1:8080/api/health for 30s.
  6. Done — prints login URL + recovery info.

Idempotent re-run

If quazzar is already installed, the script:

  • Exits 0 with a message if the installed version matches the candidate.
  • Upgrades in-place if a newer candidate exists (apt --only-upgrade / dnf upgrade).
  • Refuses to downgrade unless --allow-downgrade is passed.

Failure handling

A single ERR trap fires on any error:

[FAIL] Install failed at phase 3 (Installing quazzar packages). Last 100 lines of journald for quazzar.service: …dump… Run this and paste the URL into your support ticket: quazzar-cli debug-bundle | curl --upload-file - https://0x0.st

The ROLLBACK_ACTIONS array tracks every state-mutating operation (GPG key write, repo file write, package install, service enable, port override) and walks them in reverse on hard error so the next attempt starts clean.

In --unattended mode the journald dump is suppressed (CI reads the exit code instead).

Flags

FlagDefaultEffect
--unattendedoffSkip prompts; warns become errors. CI / cloud-init friendly.
--channel=<stable|testing>stablePick repo channel.
--port=<n>8080Override OS web port; written to /etc/quazzar/web.port.
--no-tunneloffSkip pair-tunnel setup (air-gapped installs).
--allow-downgradeoffPermit a version downgrade.
--skip-healthoffSkip phase 5 (used by image bakers).
--register=<env_file>offAuto-register the node with a Quazzar Control Panel after install (Phase Г.4 cluster autoscaling — set by cloud-init bootstraps). The env file must define QUAZZAR_REGISTER_URL, QUAZZAR_REGISTER_TOKEN, QUAZZAR_TENANT_ID. Implies --unattended.
--helpPrint this list.

--unattended implies DEBIAN_FRONTEND=noninteractive for apt and -y for dnf.

Where it lives

  • scripts/install.sh — master copy (867 lines, shellcheck clean).
  • quazzar-cloud-landing/install.sh — byte-for-byte mirror served by the landing page.

Updates land in both files together.