Documentation menuSafe updates

Safe updates and configuration

bipanel never installs a release whose signature and SHA-256 digest it cannot verify, backs up the panel database before updating and rolls back automatically if the new version does not start. Web server, DNS, FTP, mail filter and SSH configuration is tested with the service’s own checker, and a change that fails is not applied or is reverted.

Last updated:

On this page
  1. How release packages are verified
    1. Verification on first install
    2. Third-party components
  2. Software bill of materials (SBOM)
  3. While an update is applied
    1. Container installations
  4. Channels for a cautious rollout
  5. Package integrity (Pro)
  6. Configuration changes: test first, then apply
    1. Switching the web server mode
    2. Security Advisor fixes
  7. Backups before risky operations
  8. Operating system security updates

#How release packages are verified

Every bipanel release is published on the update server with a signed release manifest. The manifest contains the version number, channel, release notes, package URL, and the package's SHA-256 digest and size. The panel verifies an update in this order:

  1. The manifest's Ed25519 signature is checked against the public key embedded in the panel. If it does not match, the manifest is ignored and an error is shown on the Updates screen.
  2. While the package downloads, its SHA-256 digest is computed; size and digest are compared with the manifest.
  3. The package also carries its own Ed25519 signature, which covers the version number together with the package's SHA-256 digest. Installation does not start until this signature is verified too.

If any step fails, the update stops and the installed version is left untouched. The trusted keys ship inside the panel package; on a production installation they cannot be replaced through an environment variable.

#Verification on first install

The one-line install command on the download page fetches the latest release info for the chosen channel, downloads the package and checks its SHA-256 digest with sha256sum -c. On a mismatch the install stops with a "corrupt or tampered with" error.

#Third-party components

Components the install scripts download from outside the distribution's repositories (for example webmail, backup and remote desktop tools, GeoIP data) are pinned to specific versions, and for most of them the SHA-256 digest of the downloaded file is checked as well.

#Software bill of materials (SBOM)

A software bill of materials in CycloneDX format is generated with every release and uploaded to the update server. It lists the runtime npm dependencies of the server and the interface with their exact versions, plus the pinned third-party components. The components of published releases are tracked against known vulnerabilities using this list; see vulnerability monitoring.

#While an update is applied

On a server installation the verified package is installed by a systemd unit that runs independently of the panel service:

StepWhat happens
BackupIf Back up the panel database before updating is on (the default), a consistent copy of the database is taken; the last 5 backups are kept
Unpack and checkThe package is unpacked; required files and the version number inside it are checked
DependenciesProduction dependencies are installed; if this fails, the installed version is unchanged
SwitchThe old installation is kept as /opt/bipanel.prev and the new one takes its place
Health checkThe service restarts; the new version must answer with its own version number within 90 seconds
RollbackIf it does not, the previous installation and the database backup are restored and the old version is started

Sites, email and databases keep running during the update; only the panel restarts. The locations of rollback and log files are listed on the panel updates page.

Further safeguards:

  • No downgrades. Changing the channel or pinning a version series never offers an older release.
  • If a release requires a minimum starting version, the panel does not let you skip ahead; you are asked to install the intermediate release first.
  • Only one update can run at a time. A release whose automatic install failed is not retried automatically; you can still install it by hand.

#Container installations

On Docker and Railway the file system comes from the image. The panel still verifies the signed manifest; then on Railway, if RAILWAY_API_TOKEN is set, it triggers a redeploy with the new image, while on Docker you pull the new image and recreate the container yourself. The database backup option is only available on a server installation.

#Channels for a cautious rollout

The channel decides how early you receive changes: lts and stable are for production servers, release gets new versions on release day, and current and edge are for test servers. A server receives releases published to its own channel and to every more conservative channel. You can limit automatic installs per channel (for example patch releases only) and to an hour window, and pin a version series.

If you run several servers, keeping one test server on current and production servers on stable lets you see new releases before they reach production. All channels and their support periods are on the panel updates page; release notes are published on the changelog page.

#Package integrity (Pro)

In the Pro edition the panel regularly compares the digest of the running server package with the digest approved by the update server. If the package has been modified by hand, administrators get a "Panel package changed" notification, the state is reported at the next license check and Pro updates are paused. The flag clears once the package is reinstalled and the digest matches again.

#Configuration changes: test first, then apply

The panel tests server configuration with the service's own checker. If the check fails, the new configuration is not applied or the written files are restored, so the service is never reloaded with a broken configuration.

AreaCheckOn failure
Apacheapachectl configtestWritten files are restored
Nginx front endnginx -tThe change is rolled back
DNS servernamed-checkconfThe last known-good copy is restored
FTP server (ProFTPD)proftpd -tThe previous configuration is kept
Mail filter (Rspamd)Lua compile check and rspamadm configtestThe change is rolled back
SSH (Security Advisor)sshd -tAll files are restored
Fail2Banfail2ban-client -tThe change is rolled back

#Switching the web server mode

When the operating mode is changed on the Web Server page, sites are probed before and after the switch and the results compared. If the new engine does not start or the health check fails, the switch rolls back to the previous mode automatically. Details are on the web server and caching page.

#Security Advisor fixes

Security Advisor shows a preview before applying a one-click fix and records a rollback plan for every fix. Files and settings that someone else changed after the fix are left alone during a revert. If an SSH fix locks you out of the panel, you can revert the last fix from the server console:

bipanel advisor fixes
bipanel advisor revert --last

See security tools.

#Backups before risky operations

  • Disk Manager: every operation is first shown as a step-by-step plan and does not start until you type the confirmation text the plan asks for. /etc/fstab is backed up before it is changed; if the mount step fails, the added line is removed again. Other steps are not rolled back automatically because of the risk of data loss; completed and remaining steps are listed in the log. Taking a snapshot in your hypervisor before partition table changes is recommended. See Disk Manager.
  • Terminating an account (Pro): a full backup of the deleted account goes to the trash and is kept for 30 days by default. See deleted accounts.
  • Panel updates: the panel database is backed up as described above.

#Operating system security updates

On a server installation the panel uses the distribution's own tools to install only security updates in the hour window you choose, then checks critical services. The feature is on by default and available in both editions; its settings are covered on the automatic security updates page.

Something missing or wrong on this page? Let us know.