PanelInstallation

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

  1. Checks prerequisites - verifies Docker, Docker Compose, curl, and openssl. Offers to install Docker automatically if missing.
  2. Fetches the latest release - resolves the current stable tag from GitHub and downloads the production compose file.
  3. Generates all secrets - RSA key pair, auth secret, database passwords, and encryption key via openssl. Nothing is reused or hardcoded.
  4. Asks for your domain - derives APP_URL, BETTER_AUTH_URL, and CORS_ORIGIN from it automatically.
  5. Configures a webserver - detects existing nginx, Apache, or Caddy, or installs nginx fresh. Writes reverse proxy config for the panel.
  6. Handles SSL - obtains a Let's Encrypt certificate via certbot, generates a self-signed cert, or skips SSL entirely.
  7. Starts services - pulls images and starts the panel and MySQL containers.

Options

Flag / ArgumentEffect
(none)Interactive install of the latest stable release
--nightlyInstall the latest pre-release build
--no-telemetryDisable anonymous install telemetry (see Telemetry)
updateUpdate 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-telemetry
STRUXA_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) update

The 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

PathContents
/opt/struxa/docker-compose.prod.ymlProduction compose file
/opt/struxa/.env.prodAll 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).

On this page