Updates and release channels
The panel updates in one click from a package whose signature is verified, and rolls back to the previous version if the new one does not start healthy.
Version checks and channels
When it starts, and every 6 hours after that, the panel looks at get.deckpa.dev/<channel>/VERSION and compares it with the version that is running. If the channel has a newer version, the panel tells you in three places: a New version ready strip on the Dashboard, a small dot next to Update in the side menu, and the Panel update available rule on the Alerts page.
The channel is set by the update_channel key in /etc/deckpa/config.yaml on the server. If the key is missing, stable is used. Only stable and beta are accepted; any other value is ignored and the panel falls back to stable. After you edit the file, restart the panel with deckpa restart. The download address (update_base) is in the same file and cannot be changed from the panel.
stable channel. The sample configuration file also notes that beta brings early releases and is not recommended for production.
One-click update
The update screen is open to administrators only: System → Update. The card on the right shows Running version, Latest in channel, Channel, and Last check. The Version History table on the left lists the updates applied from the panel on this server, with their release dates and change notes; the View changes button on a row opens the notes.
- The Check now button queries the version again without waiting.
- If there is a newer version, the card shows A new version is available and an Update to ... button.
- When you press the button, a confirmation dialog opens. After you confirm, the panel downloads and verifies the new program files in the background, then restarts its own two system services about 4 seconds later.
- While the restart runs, the page waits for the panel to come back and reloads itself. If that takes longer than expected, reload the page manually.
You do not choose the version: it is resolved again from the channel at the moment the request arrives. An update to the running version or to an older one is refused. If an install job or a system package job is running, the update does not start; try again when the job finishes.
How the package is verified
The package goes through three checks, and if any of them fails the update is not applied at all:
- Signature. The Ed25519 signature of the channel's
SHA256SUMSfile is checked against a public key built into the panel's program file. A missing or invalid signature is refused. Even if the contents of the distribution server were replaced, a valid signature cannot be produced. - SHA256. The SHA256 value of the downloaded archive must match the value in the signed list. If it does not, the panel reports that the file may be corrupt or altered.
- File type. The two program files extracted from the archive are checked to be valid executables.
If verification passes, the files are put in place under /usr/local/bin by renaming a side file (.new), so the old file is never replaced by a half-written one. Changed service definitions are loaded with systemctl daemon-reload.
Automatic rollback
If the new version does not start, the panel has to roll itself back, but a panel that is not running cannot do that. So on every update a previous copy with a .prev extension is kept next to each changed file, and a separate temporary system service (deckpa-update-gate) is scheduled that runs from the old program file. After the restart, that service checks:
- Whether the two panel services (
deckpa-apianddeckpa-executor) are active. - Whether the system service's socket exists.
- Whether the panel answers HTTP on its own port at
/login(a 500 or higher response counts as a failure).
The first check runs about 8 seconds after scheduling and repeats every 3 seconds. If everything does not look healthy within 120 seconds, the previous files are put back, the services restart, and the Update page shows a card titled The update was rolled back once, stating which version the panel returned from and to, and why. A new update cannot be started until this window closes.
Rollback only touches the program files and service definitions that were changed. The mechanism is deliberately built to fail without making things worse: if the server restarts during the checks, the temporary service is lost and no rollback happens; if the rollback service itself crashes, you stay on the new version.
System packages
At the bottom of the Update page, the System packages card has an Update system packages button. It updates operating system packages; OpenLiteSpeed, MariaDB, PowerDNS, Valkey, and lsphp, whose versions Deckpa manages, are left out. The job runs in the background and continues even if you close the window.
If any of the packages Deckpa manages has a pending update, the page also shows a System Packages block that points you to the Services page for the installation. If the Linux kernel was updated, the new kernel takes effect only after the server restarts (see Panel settings).
Common situations
- Could not retrieve version information. The server cannot reach
get.deckpa.dev. Check outbound traffic and DNS resolution, then press Check now. - A system step could not be applied. A step that the new version runs at startup returned an error. The running version is not affected; only the fix that step brings has not been applied yet. After you resolve the problem, use the Retry button on the card. The card appears on every page load until the problem is resolved.
- The previous update is still going through the health check. A new update cannot start before the rollback check ends; wait up to 2 minutes.
- An install job is running. The panel is not updated until a system package update or another install job finishes.
- The panel does not open after an update. Wait up to 2 minutes; a rollback may have run. From the server you can see the state with
deckpa statusanddeckpa logs.
You can also start the update from the command line: deckpa update uses the same path (see Command line).