Install the container stack
Public distribution is temporarily paused. Approved operators use private images ghostdev1/nusaas-backend:backend-VERSION and ghostdev1/nusaas-backend:frontend-VERSION. Run docker login with an account explicitly granted repository access before installation. Existing images 1.0.12 support linux/amd64; they do not include later cloud changes. Do not use latest or the managed-cloud image.
Guided installation: direct Caddy HTTPS
Open get.nusaas.com to generate an installation command from non-secret choices. Secrets are generated or entered on your server. Alternatively:
curl -fsSL https://get.nusaas.com/install.sh -o install.sh
# Inspect the script and select an actually published release.
bash install.sh --version YOUR_PUBLISHED_VERSION
Run on Ubuntu/Debian or Ubuntu/WSL2 with Docker integration enabled. The installer checks Docker, Compose, DNS and ports 80/443, refuses to overwrite an existing installation, generates private environment files and Caddy configuration, pulls the selected version, initializes core data and writes backup/update scripts. It does not configure a WhatsApp gateway or create a NuSaaS console account.
After installation, register the business owner, verify their email and complete onboarding. Initial INITIAL_ADMIN_* system-admin seeding belongs to internal deployments; it does not create a self-hosted business workspace.
Manual installation
Obtain the matching Compose, backend/frontend templates and Caddy example from the published installer bundle. A repository checkout or source archive is not required. Keep versioned copies with your recovery documentation. The normal installer templates are available at:
mkdir -p /opt/nusaas/web
cd /opt/nusaas
curl -fsSL https://get.nusaas.com/docker-compose.yml -o docker-compose.yml
curl -fsSL https://get.nusaas.com/.env.selfhosted -o .env
curl -fsSL https://get.nusaas.com/.env.frontend -o web/.env.frontend
Configure these files privately using Environment configuration. Create the Caddyfile using DNS and HTTPS before starting services; downloading Compose alone does not create it. Set NUSAAS_VERSION to the matching published version. Do not run the downloaded templates until every required secret and placeholder has been replaced.
Then follow Launch and initialization. For a Tunnel installation, obtain the matching optional overlay from the same published installer bundle and follow Cloudflare.
Services and persistence
The base stack contains proxy, api, web, worker, cron, ws, db, cache and search. Only the proxy publishes host ports. The worker uses the backend image's supervisor configuration; workers, scheduler and WebSockets wait for API health. Redis uses noeviction to avoid silently evicting queue data; monitor memory and failed writes.
Persistent volumes hold MySQL, Redis, uploads, search and Caddy certificate state. Never run docker compose down -v on a live installation. Local backups do not survive loss of the host. There is no Watchtower or unattended application updater; updates require a selected version and backup. Optional Evolution services have separate database/session persistence and backup requirements.