Repository navigation
Restow 0.3.6
Restow 0.3.6. Released 2026-10-15, channel beta.
Beta release. Run it alongside your existing backups, not as your only one, until
you have verified restores against your own data.
Summary
Restow 0.3.6 lets you protect Proxmox VE guests straight from the inventory, gives the
disk space of the old backup index back without an api restart, shows a notice with a
button when a service needs a restart, and updates the compose file of older
installations when the installer runs again. One database migration.
Breaking Changes
None. docker-compose.yml and .env.example of the release now carry almost no comments;
the reference moved to https://docs.restowbackup.com. Nothing in them changed otherwise.
Added
- Inventory › Proxmox VE: every VM and container has its backup job as a choice (an
existing job, none, or a new one) and Back up now. Guests can be ticked one by one, all
of a node, or all without a job in one click, and then added to a job or backed up
together; New job opens the job dialog and puts the selection into the new job. - Installation › Updates: a "Restart required" notice when a service needs a restart, with
the reason, a Restart now button (through the updater; api, worker or scheduler only,
never while an update runs, and only after a confirmation) and the command to copy, in
the installation's directory. Provider admins see a notice on every page. Nothing
restarts without a click. - Running
install.shagain on an existing installation updatesdocker-compose.ymlto
the release in.env(checked against the signed SHA256SUMS) and keeps the previous
file asdocker-compose.yml.bak-<timestamp>..envstays as it is.
Changed
- After the 0.3.5 conversion of the backup index has finished, the api gives the old
table's disk space back by itself within about 15 minutes; the api restart is no longer
needed. - Installation › Updates: an available update stands next to the running version, in the
same size and highlighted, instead of only in the status line. - Mounts: when the mounter is not running, the command starts with the installation's
directory; a compose file from before the mounter is named as such, with the installer
command that updates it. - Repositories › Add a server path: the dialog is wider and no longer scrolls sideways.
- The inventory's protection column is called Protection (it shared the heading Backup with
the size column). docker-compose.ymland.env.examplekeep only the comments a reader must not miss.- Dependencies: patch and minor updates (among them better-auth 1.7.8, drizzle-orm 0.45.4,
hono 4.13.13, pg 8.23.1, nodemailer 10.1.1, radix-ui 1.8.1, vite 6.4.4) and the pinned
GitHub Actions setup-node, upload-artifact and download-artifact.
Fixed
- Mounting an NFS export that does not exist on the server ended with a bare "no such file
or directory". The message now names the export path and how to find the right one
(showmount -e, Synology paths start with/volume1/, NFSv3).
Security
None.
Upgrade Notes
New image and one database migration (0034, a small table for restart notices), which runs
in seconds. No new required environment variables.
- The Restart now button needs the updater of 0.3.6. An updater from before 0.3.6 shows the
command instead until it runs the 0.3.6 image. - Installations from before 0.3.0 whose compose file lacks the
mounterservice: run the
0.3.6 installer again to update it (see docs/MOUNTS.md). - Still converting the 0.3.5 backup index: nothing to do; the space comes back by itself
once the conversion has finished. On a production installation with 14 million index
rows the conversion ran at about 6,000 rows per second after a slow first minutes. - Rollback: the migration is not reversible; go back to 0.3.5 only with the database dump
taken before the update.
Known Issues
- No part of Restow records a restart request yet; the notice and the button are in place
for updates that need them. - The Docker error text for a missing NFS export was taken from Docker's documentation, not
from a real failed mount. - The known issues of 0.3.5 still apply.
Verification
Before the tag, on the release branch (main plus the five 0.3.6 branches): lint and
typecheck of all workspaces, the server installer tests (642), the CI and smoke tooling
tests (208), and the full unit and Postgres suites on Postgres 16: packages/db 177,
packages/i18n 259, packages/core 1981, apps/scheduler 65, apps/api 3279 (1 skipped),
apps/web 3839, apps/worker 444, ee/api 243, ee/licensing 59, ee/web 176, ee/worker 5,
packages/cli 34, the demo seed 208; 114 Postgres test files, none skipped. The release
smoke runs in the release pipeline; no Microsoft 365 tenant was used before the tag.
Release pipeline, 2026-10-14:
| Check | Result | Duration |
|---|---|---|
| 1. Install: images, compose up, migrations (new install and upgrade) | PASS | 78s |
| 2. Health endpoints, worker and scheduler registered | PASS | 0s |
| 3. Passkey sign-in E2E with a virtual authenticator, tenant creation, i18n de/en | PASS | 116s |
| 4. Microsoft 365 backup and restore against the dev tenant | SKIPPED | 0s |
| 5. IMAP backup and restore against Dovecot, hash comparison | PASS | 8s |
| 6. Journal receipt, chain verification, export | PASS | 3s |
| 7. Standalone restore with restow-restore from the storage of check 5 | PASS | 23s |
| 8. Storage targets: S3 (Garage), local path, mounted directory | PASS | 20s |
| 9. Image scan (Trivy) and dependency audit (pnpm audit) | PASS | 20s |
| 10. Endpoint backup: the agent enrolls, backs up a folder, restores it | PASS | 11s |
| 11. Mail import (folder and upload) and export (EML ZIP, MBOX), compared by hash | PASS | 8s |
10 of 11 checks passed in full, 0 partly, 1 skipped, 0 failed. The full report, including the reason for every skipped or partial check, is attached to the release as smoke-report.md.
The Community images were smoke-tested on their own (smoke-report-community.md, smoke-report-community-arm64.md): amd64 PASS with gaps: 8 of 11 checks passed in full, 0 partly, 3 skipped (see the reasons below); arm64 PASS with gaps: 8 of 11 checks passed in full, 0 partly, 3 skipped (see the reasons below).
Images
Two builds of the same release. The full build is the Apache-2.0 core plus the Business and Service Provider modules (Restow Enterprise License), which stay locked until a license key is installed. The Community build is the Apache-2.0 core alone.
ghcr.io/restow-backup/restow:0.3.6
ghcr.io/restow-backup/restow-web:0.3.6
ghcr.io/restow-backup/restow-community:0.3.6
ghcr.io/restow-backup/restow-web-community:0.3.6
The digests of the multi-arch manifests (the opt-in updater verifies the pulled images against the two lines of its build):
restow: sha256:e96a9d955e2e19ad60281e4ac3d2245e763227a8e522b0d747ef562a7f596437
restow-web: sha256:a3b60b2ec3bd6b80c00528c0dc8bd0c11f7ece9b5bb6bd878c8edb2d1e848800
restow-community: sha256:dd77576827f8f92fdb31ef3e91b029b0ec664318b3d2c08f98a697c2310bc811
restow-web-community: sha256:9368c19d08856de2435dbd93ec441746af9d96752e5211a4cd76723d494b0d36
All four images are multi-arch (linux/amd64, linux/arm64), signed with cosign (keyless) and carry an SPDX SBOM as attestation. Verify any of them with:
cosign verify ghcr.io/restow-backup/restow:0.3.6 \
--certificate-identity-regexp '^https://github.com/restow-backup/restow/\.github/workflows/release\.yml@refs/tags/v' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/restow-backup/restow-web:0.3.6 \
--certificate-identity-regexp '^https://github.com/restow-backup/restow/\.github/workflows/release\.yml@refs/tags/v' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/restow-backup/restow-community:0.3.6 \
--certificate-identity-regexp '^https://github.com/restow-backup/restow/\.github/workflows/release\.yml@refs/tags/v' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/restow-backup/restow-web-community:0.3.6 \
--certificate-identity-regexp '^https://github.com/restow-backup/restow/\.github/workflows/release\.yml@refs/tags/v' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
docker-compose.yml and env.example are the release stack (deploy/release/); install.sh installs it on a dedicated Linux VM (README.md, "Install with the script"; install.sh.sha256 for sha256sum -c after the download); restow-agent-THIRD_PARTY_NOTICES.txt holds the licenses of the agent binaries and of the restic they run; SHA256SUMS lists every file of this release and is signed (SHA256SUMS.sigstore.json).