Panel updates and rollback
NexoVirt updates itself from inside the panel. Every update is verified before it is installed, runs in a short maintenance window and gets a full automatic rollback if anything fails.
The Updates page
Section titled “The Updates page”Open System > Updates (admins only). When a newer release is available, the sidebar also shows an Update available badge.
- Version & releases shows the installed version, the release line, the newest release with its type (Fix or Feature) and release notes. Check now asks the release server again; the panel also checks once a day on its own.
- Update now installs the newest release of your line. It is shown for signed releases only; an unsigned release cannot be applied.
- Settings holds the release line and the automatic update switch.
- Update history lists every applied update with its versions, trigger (Auto or Manual), status (OK, Rolled back or Failed) and time.
Release lines
Section titled “Release lines”By default an install follows Latest and always offers the newest version. To hold back, pin an older line (for example 1.2): the panel then only offers releases of that line.
Automatic updates
Section titled “Automatic updates”With Automatically apply signed fix releases on (the default), the panel checks every hour and installs a newer release automatically only when all of this holds:
- it is a fix release (feature releases are never applied automatically),
- it is in the same line as the installed version (for example 1.3.1 to 1.3.2, never 1.3 to 1.4),
- it is signed and the signature checks out against the key built into the panel,
- no other update is running.
Everything else (feature releases, other lines) is installed by hand with Update now.
If an automatic update of a version fails, the panel waits before trying that version again: 2 hours after the first failure, 4 hours after the second. After 3 failures it stops trying that version and the Updates page says that auto-update is paused for it. Fix the cause (see the log in /var/log/nexovirt-install.log), then apply it with Update now; manual updates are never held back.
What an update does
Section titled “What an update does”- Check and download. The updater takes a lock (only one update at a time), checks that at least 2 GB are free on the install and backup filesystems, and downloads exactly the version that was selected into a staging directory.
- Verify. The download’s SHA-256 checksum and Ed25519 signature are checked against the signed release metadata. A release that fails verification is never extracted, and the install stays untouched.
- Maintenance window. The panel answers with a maintenance page (HTTP 503) and its background services stop, so nothing runs half-updated code.
- Back up.
.env, the current code and the database are saved to/var/backups/nexovirt/<timestamp>/(root-only). The newest 5 backups are kept. High-volume metric tables are not part of the database dump; they refill on their own. - Swap and migrate. The new code replaces the old one, dependencies are installed, database migrations run, caches are cleared and the license is re-validated.
- Health check. The new code must boot and reach the database, and the login page must answer over HTTP.
- Finish. Services restart, the maintenance window ends and the update is recorded in the history.
If any step after the swap fails, or the update stops unexpectedly, the updater rolls back code, .env and the database to the backup (tables the failed update created are dropped again), ends the maintenance window and records the update as Rolled back.
What is always kept
Section titled “What is always kept”Updates never touch .env, the writable/ directory (logs, cache, sessions), uploaded files (logos, OS and LXC template group images, other uploads) or the license. Your connections, users, guests and settings live in the database and are migrated, not replaced.
Updating from the shell
Section titled “Updating from the shell”To run an update over SSH, call the same helper as root:
sudo nexovirt-update manualmanual installs the newest release of the configured line, like Update now; auto installs only the automatic fix pick described above. Progress is logged to /var/log/nexovirt-install.log.
Installing a specific version
Section titled “Installing a specific version”A fresh install takes the newest release. To install an exact version instead (for example to match another server), set NEXOVIRT_VERSION:
curl -fsSL https://release.nexovirt.com/install | NEXOVIRT_VERSION=1.3.2 bashCombine it with NEXOVIRT_UNATTENDED=1 and SEED_ADMIN_PASS for an install without prompts; see Installation. After the install, the panel follows its release line as usual; pin a line on the Updates page to stay on it.
After an update
Section titled “After an update”- Release notes may ask you to update the node agent (a new agent version). Until then the panel shows a notice with an Update agent button for each affected connection.
- If an update was rolled back, the panel keeps running the previous version. The history marks it Rolled back; the reason and full output are in
/var/log/nexovirt-install.log.