Installation
FluxDeploy is distributed as MSI installers for Windows and a tar.gz archive for Linux relay servers.
Prerequisites
- Windows Server 2022 or Windows 11 (Core server or Windows Relay)
- Windows ADK + WinPE Add-on - Required on the Core server for building boot images and WIM customization
- .NET 10 Runtime - Bundled in the installer (self-contained deployment)
- 50 GB+ free disk space on the data drive for images, drivers, and scratch space
Core Server Installation
Run the MSI installer:
FluxDeploy-Core-{version}-x64.msi
The installer presents three dialogs:
- Install Directory - Default
C:\Program Files\FluxDeploy - Data Drive Selection - A dropdown listing fixed drives with over 50 GB free. The selected drive gets a
FluxDeploy-Datadirectory at the root (e.g.,D:\FluxDeploy-Data) for storing images, drivers, and scratch files. This directory is preserved across upgrades and uninstalls. - Confirmation - Review and install
The installer registers a Windows Service (auto-start) and opens firewall port 443 for HTTPS.
Database Provider
Both Windows installers include a database selection dialog (MSI property DBPROVIDER):
- SQL Server Express (default) - Downloaded and installed automatically; no configuration needed
- SqlServer - Use an existing SQL Server instance; a follow-up dialog collects server, database, and authentication details (
SQLSERVER,SQLDB,SQLAUTHTYPE,SQLUSER,SQLPASSfor silent installs) - SQLite (Relay MSI only, legacy) - No SQL Server needed, but limited concurrency
Linux relays always use SQLite - no database setup is required.
Relay Server Installation (Windows)
FluxDeploy-Relay-{version}-win-x64.msi
The Relay MSI includes an additional RelayJson dialog after the data drive selection, prompting for the relay.json configuration file generated when registering the site on the Core server.
Relay Server Installation (Linux)
tar xzf FluxDeploy-Relay-{version}-linux-x64.tar.gz
cd fluxdeploy-relay
sudo ./install.sh
The install script creates a fluxdeploy system user, installs to /opt/fluxdeploy-relay/ (root-owned and read-only to the service), keeps all relay state - relay.json, the database, certificates, keys, logs and the image cache - in /var/lib/fluxdeploy/, and enables a hardened systemd service. Re-running the installer on an older relay moves any state it finds in the install folder to /var/lib/fluxdeploy/ (copied and verified before the original is removed).
Silent Installation
For automated deployments, run the same InstallFluxDeploy.exe you would use interactively, with
/install /quiet /norestart and the DATADRIVE property:
# Core server
InstallFluxDeploy.exe /install /quiet /norestart DATADRIVE=D
# Relay server with relay.json
InstallFluxDeploy.exe /install /quiet /norestart MODE=Relay DATADRIVE=D RELAYJSONPATH="C:\Downloads\relay.json"
# Capture a log when troubleshooting an unattended run
InstallFluxDeploy.exe /install /quiet /norestart DATADRIVE=D /log C:\Temp\fluxdeploy-install.log
Note: Silent installs require the
DATADRIVEproperty - there is no auto-detection in silent mode.
Upgrades use the same command. Point it at the newer
InstallFluxDeploy.exe; it detects the installed version and upgrades in place, preserving configuration and data. Do not extract or run the inner MSI -InstallFluxDeploy.exeis the only supported installer, and it is the only artifact published on the release page. Installing the MSI directly skips the bootstrapper, which is what selects the per-mode database default and installs SQL Server Express when it is needed.
Database provider
The unified installer (InstallFluxDeploy.exe) accepts a DBPROVIDER property:
| Value | Meaning |
|---|---|
SqlExpress |
Install and use a local SQL Server Express FLUXDEPLOYSQL instance (default for Core). |
SQLite |
Use a self-contained SQLite database file in the data root - no SQL service (default for Relay). |
SqlServer |
Use an existing external SQL Server (requires SQLSERVER, SQLDB, SQLAUTHTYPE, and credentials). |
Relays default to SQLite - it removes the SQL Server service entirely, so there is no startup warm-up race and no dirty-DB-on-crash recovery to wait out. A relay is lightweight (it caches and syncs; it holds no admin authority), so SQLite tuned for WAL concurrency is the right fit. Core stays on SQL Express. Pass an explicit DBPROVIDER to override the per-mode default.
# Core (defaults to SQL Express - no DBPROVIDER needed)
InstallFluxDeploy.exe /quiet DATADRIVE=D
# Relay (defaults to SQLite - no DBPROVIDER needed)
InstallFluxDeploy.exe /quiet MODE=Relay DATADRIVE=D COREURL="https://core" REGKEY="abc123"
# Relay on SQL Express instead (explicit override)
InstallFluxDeploy.exe /quiet MODE=Relay DATADRIVE=D DBPROVIDER=SqlExpress COREURL="https://core" REGKEY="abc123"
Upgrading
Run the newer InstallFluxDeploy.exe and choose Upgrade. Setup stops the FluxDeploy services, waits until they have really stopped, replaces the files and starts them again. An upgrade does not ask you to restart the computer. If Windows genuinely needs a restart afterwards, the last page says so and names what is pending; a silent upgrade then exits with code 3010. Otherwise it exits with 0. Setup never restarts the machine by itself.
Setup says "Restart Required" before it starts
Setup checks for a restart that is already waiting. It only stops you when the pending change affects this install: Windows servicing, Windows Update, or a file change under FluxDeploy, the Windows ADK, SQL Server, .NET or Windows itself. The message names the file and who owns it. Waiting changes left by unrelated software, such as browser or OneDrive updaters and temporary files, are ignored and do not stop Setup. Click Restart Now and Setup resumes by itself after the restart.
Uninstalling
Use Apps > Installed apps or run InstallFluxDeploy.exe again and choose Uninstall. Your data folder (FluxDeploy-Data) is always kept. By default the SQL Server Express instance (FLUXDEPLOYSQL) and its databases are kept too.
To remove SQL Server Express as well, tick Also remove SQL Server Express on the first page (it is off by default, and only shown when setup installed that instance). Before anything is deleted, setup backs up every FluxDeploy database, verifies each backup, and saves them in a FluxDeploy-Uninstall-Backup-<date> folder next to the install folder. The instance is left in place, and the final page says why, when:
- a backup could not be written and verified,
- the instance also holds databases that are not FluxDeploy's, or
- setup could not connect to the instance.
If SQL Server's own setup fails or runs past its time limit, the backups are kept and the page tells you to remove the instance from Apps > Installed apps. A log is written to C:\ProgramData\FluxDeploy-SqlRemoval.log.
For a silent uninstall:
InstallFluxDeploy.exe /uninstall /quiet /norestart
InstallFluxDeploy.exe /uninstall /quiet /norestart REMOVESQL=1
Verifying Installation
After installation, open a browser and navigate to https://localhost. You should see the first-run setup wizard. The server's TLS certificate thumbprint is logged at startup and visible in Settings > Security > HTTPS Certificate.