Installer
Install the Panel using the official automated installer.
The recommended way to install Struxa is the official installer script. It handles everything in one run — Docker, secrets generation, webserver configuration, and SSL.
One-line Install
Run as root on a fresh Linux server:
bash <(curl -fsSL https://install.struxa.cloud)The installer requires root. It reads from /dev/tty directly, so running it piped through curl works correctly.
What the Installer Does
- Checks prerequisites - verifies Docker, Docker Compose, curl, and openssl. Offers to install Docker automatically if missing.
- Fetches the latest release - resolves the current stable tag from GitHub and downloads the production compose file.
- Generates all secrets - RSA key pair, auth secret, database passwords, and encryption key via openssl. Nothing is reused or hardcoded.
- Asks for your domain - derives
APP_URL,BETTER_AUTH_URL, andCORS_ORIGINfrom it automatically. - Configures a webserver - detects existing nginx, Apache, or Caddy, or installs nginx fresh. Writes reverse proxy config for the panel.
- Handles SSL - obtains a Let's Encrypt certificate via certbot, generates a self-signed cert, or skips SSL entirely.
- Starts services - pulls images and starts the panel and MySQL containers.
Options
| Flag / Argument | Effect |
|---|---|
| (none) | Interactive install of the latest stable release |
--nightly | Install the latest pre-release build |
--no-telemetry | Disable anonymous install telemetry (see Telemetry) |
update | Update an existing installation to the latest release |
Install with Wings in the same run by selecting Dashboard + Wings when prompted — see Wings - Installer for what that step covers.
Telemetry
The installer sends a few anonymous events (OS, architecture, install mode, and success/failure) so we can see install volume and where installs commonly fail. No domains, secrets, or IP addresses are collected.
To opt out, use any of:
bash <(curl -fsSL https://install.struxa.cloud) --no-telemetrySTRUXA_NO_TELEMETRY=1 bash <(curl -fsSL https://install.struxa.cloud)DO_NOT_TRACK=1 bash <(curl -fsSL https://install.struxa.cloud)Updating
To update an existing installation:
bash <(curl -fsSL https://install.struxa.cloud) updateThe updater reads the current version from /opt/struxa/.env.prod, fetches the latest tag, updates the image tag, pulls new images, and restarts the panel.
What Gets Created
| Path | Contents |
|---|---|
/opt/struxa/docker-compose.prod.yml | Production compose file |
/opt/struxa/.env.prod | All secrets and configuration (chmod 600) |
Webserver config is written to the appropriate location for your webserver (/etc/nginx/sites-available/, /etc/apache2/sites-available/, or /etc/Caddyfile).