π Proxmox Backup Client v1.2.0-rc.1
β οΈ Windows flagged the download as a virus? This is a known false positive (unsigned Go/Wails binaries inside the installer) β not a virus. See the project repository for how to verify the download. A code-signing certificate (SignPath Foundation) is on the way.
π¦ Downloads
One Windows installer (.msi) per brand β no stand-alone .exe is
published. Pick the brand you are licensed for; they are the same
build, and the installed application takes its identity from its
executable name.
| File | Brand |
|---|---|
ProxmoxBackupClient-<version>.msi
| Proxmox Backup Client (default) |
NimbusBackup-<version>.msi
| Nimbus Backup |
AcmeBackup-<version>.msi
| Acme Backup |
EtitechBackup-<version>.msi
| Etitech Backup |
The command-line tools are in the per-platform archives
(proxmoxbackup-cli-* and proxmoxbackupclient_go_*).
π What's in this release
Changes since v1.1.3
- msi: fix the Nimbus branded installer (duplicate RemoveRegistry key)
- ci(msi): don't copy the default brand's binaries onto themselves
- release: ship one MSI per brand and no stand-alone exe
- gui: clear the lint findings that blocked the release pipeline
- ci(security): pin gosec and fix the two HIGH findings it now reports
- ci: make prerelease tags releaseable and align versions to 1.2.0
- installer: drop GUI autostart and clean legacy Run entries
- machinebackup (Windows): read the end of a VSS partition from the disk
- machinebackup: keep the config file's backupdev when -backupdev is not given
- machinebackup (Windows): read partitions in disk order (#114)
- pxar: skip FIFOs, sockets and device nodes instead of opening them
- Restore: say which key an encrypted snapshot needs
- BMR wizard: keep a restored Linux system's identity; switch off when done
- snapshot: wait while VSS is busy; never delete all shadow copies
- machinebackuplib: wait for the disk reader before the snapshots go (Linux)
- pxar: a read error part way through a file no longer ends the backup
- packaging: fix deb version for untagged builds
- Add weekly and monthly scheduling to GUI jobs
- Restore permissions: set any recorded owner; keep protected DACLs protected
- gui: config tests no longer write the real config.json on Windows
- gui: fall back to English for a key missing in the selected language
- gui: enable or disable a scheduled job
- gui: stop a directory backup in the middle of a folder on cancel
- pxar: let the caller stop an archive write in the middle of a folder
- test: give TestChunkStateEncryptedDigests the manifest entry CloseDynamicIndex writes
- fix(pbs): send the BaseURL host in the upgrade request's Host header
- fix(crypto): encrypted GUI backups use the keyed chunk digest; service-mode reads get the key
- clonezilla: read volume id with xorriso, not isoinfo
- clonezilla: also search /usr/lib/syslinux/bios for isohdpfx.bin
- BMR wizard: refuse a target disk smaller than the backed up disk
- BMR wizard: never offer the boot stick as the restore target
- Back up and restore alternate data streams and NTFS extended attributes
- Back up and restore Windows creation times
- machinebackup: send the notification e-mail
- BMR wizard: remove the backup's snapshot store from restored partitions
- pxar: leave out "Recovery" only at the root of a volume
- pbscommon: give ListSnapshots 120 s instead of 10 s
- machinebackup: close the PBS session when a backup fails or is stopped
- directorybackup: -no-mtime leaves real times out of the archive
- Restore: put back every file time, also 1970 and earlier, and folder times
- CLIs: report errors on stderr, never in a message box
- brand: real Proxmox logo for the default brand's icons
- brand: per-brand tray icons instead of the Wails placeholder icon
- gui: commit wails-generated SetJobReporter bindings
- installer: SERVICEAUTOSTART flag + document silent-install switches
- brand: real URLs for every brand's buy-storage CTA and Nimbus links
- fix(brand): NimbusBackup CTA must ship with the real buy-storage URL
- fix(gui/brand): make icon and URLs work in the WebUI for branded builds
- fix(service): surface scheduled runs in Running Jobs, fix duplicate GUI instances, locale-proof state ACLs
- fix(sched): honour machine backup kind (host/vm); VM backup ID must be numeric
- build(msi): run candle/light under Wine in Docker, not on the host
- fix(msi): stage WiX inputs inside $WORK so light can resolve File/@source
- machinebackup: skip hashing blank (all-zero) chunks
- snapshot: delete our VSS shadow copies after every backup, through the VSS API
- chore(gui): regenerate wails bindings for pinned_disks / unique_id / drive_letters
- feat(gui): pin physical disks by identity, show drive letters
- build(msi): rebuild stale binaries, not just missing or invalid ones
- fix(elevation): run the UAC prompt and report the child's exit code
- fix(backup): Stop is a cancellation, not a failure
- build: add
make msiandmake clonezilla, fix what they uncovered - fix(service): register the SCM name the MSI installed, not a hardcoded one
- Use git tag or short SHA for version across all build flows (MSI, deb, rpm, arch, docker)
- Add Etitech Backup branding: icon, logo, brand.go entry, WiX installer, build script integration
- Update generated GUI build artifacts (icon.ico, wailsjs bindings)
- Fix MSI build script: fix WiX toolset URL, use existing binaries, handle Wine paths with Z: mapping, copy brand-specific SVC exes, copy icons/License.rtf, fix ProductBody.wxi for WiX 3 include format
- Fix progress reporting from service to GUI and machine backup cancellation; harden machine backup sizing/progress; add shared backup control; add directory picker in UI; tidy running jobs UI
- Pass per-job backup context directly to backup options; fix cancellation context
- Accept HTTP 202 Accepted for async backup starts in API client
- Fix machinebackuplib lint issues
- Guard against NaN/Inf in progress calculations; add math import
- Set config dir in Windows service startup
- Fix App creation also for unix service
- Use NewAppForService in BackupService class
- Remove leftover files
- Fix nil map in RegisterBackupCancel for service stubs; initialize cancelFuncs in App constructors
- Register backup cancel by job ID for proper per-job cancellation
- Fix /dev/disk/by-id resolution for Linux disks; add detailed progress bar with ETA and blocks counters to Running Jobs tab
- Fix running jobs list and empty error messages
- Add Running Jobs tab with red badge count and cancel functionality
- Add backup job listing and cancellation via API; fix progress reporting with context-based cancellation
- Fix NaN% progress in machine backup: guard division by zero when total disk size is unknown
- Fix Linux machine backup: error out (don't silently fall back) when Use snapshots is checked but snapshot module unavailable
- Fix Linux machine backup: respect Use snapshots flag, fall back to raw disk read when disabled or snapshot module unavailable
- Add PBS server selection for backup jobs (one-shot + scheduled); add machine backup kind (host/vm) selection; rename Use VSS to Use snapshots (VSS/Dattobd)
- Add /backup/machine route and shared handler in API server to fix machine backup service calls
- Fix launch-time privilege handling: request elevation at launch with fallback to standalone; add periodic token rotation with graceful 401 re-elevate; harden Windows asInvoker flow and token ownership
- fix(gui): no local admin required for machine backups in service mode
- fix(packaging): stage-source must not drop files tracked under gui/build
- build: package the current source tree, make test/lint actually run
- feat(gui/frontend): run-now button, name guard, list-join guards
- fix(gui): server saves, scheduled-job round-trip and run-now
- Fix get ticket
- chore(arch): bump PKGBUILD _commit to ae5a771
- chore(arch): ignore makepkg build leftovers
- fix(gui): restore Multi-PBS wails bindings lost in c85eb29
- fix(debian,fedora): make .deb and .rpm builds correct and complete
- fix(arch): make PKGBUILD build in a clean Arch environment
- feat: Linux packaging + service integration, Windows/CI build tooling
- Clonezilla BMR: restore encrypted backups (key menu, USB key, passphrase)
- pbsnbd: read the first chunk before attaching the NBD device
- pbscommon: skip the key file permission check on Windows
- docs: point elastio-snap at the maintained Axcient fork
- directorybackup: back up several directories in one run
- Read passphrase-protected key files written by proxmox-backup-client
- Add elevation requirements for scheduled job modifications
- Restore the data between the MBR and the first partition in the BMR flow
- patch-clonezilla: add the PBS bare-metal restore entry to isolinux.cfg
- patch-clonezilla: skip patches whose change is already in the base ISO
- feat: Linux systemd service for scheduled backups + GUI elevation support
- gui: add dattobd/elastio-snap snapshot module detection and UI indication
- build: drop fyne, link webkit2gtk-4.1 on Linux
- GUI encryption support: multi-PBS key propagation, service build wiring, key mgmt UI + tests
- machinebackuplib: add bios: ovmf for GPT boot disks
- Generated VM config: declare each disk with a #qmdump#map line
- Drop iothread=1 from generated SATA drive config
- machinebackuplib: say what to do when a "vm" backup has a non-numeric ID
- gui: back machines up as "host", not "vm"
- machinebackuplib: fix VM config template for BackupType "vm"
- restore: re-apply captured NTFS ACLs (Windows) and POSIX ACLs/xattrs (Linux)
- feat(snapshot): call elastio-snap/dattobd via ioctl, not CLI wrappers
- Document that the BMR wizard is English/UK-only by design, for now
- Add a fully automated PBS Bare Metal Restore boot entry for the Clonezilla ISO
- Fix zstd decoder goroutine deadlock in chunk decompression
- fedora: add pbsgo.spec and dockerized build-rpm.sh
- debian: fall back to tracked gui/Icon.png when appicon.png is absent
- arch: add PKGBUILD and make pkgarch target
- debian: add build-deb.sh packaging for the CLI tools and GUI
- gui/frontend: sync committed dist with current frontend build
- nbd: fail early with actionable errors instead of a dead TUI
- gui: allow the window to actually close on Linux/macOS
- machinebackuplib: whole-job progress, real cancellation, VSS enforcement
- snapshot: propagate elastio-snap errors instead of swallowing them
- clientcommon,clis: interactive fingerprint confirmation and ticket password prompt
- Add Linux block snapshot backend through elastio-snap (manual port of ed37c26 to refactored tree)
- gui,installer: exe-driven branding, external links, brand-switching WiX
- Docs: add localized READMEs (ru, es, de, zh, ja, el, ro, sv, ar, fa), add Proxmox disclaimer and branding policy, update introduction and contribute sections
- WIP Gui USername+Password Login
- fix(gui): keep restore/about tabs inside .container
- Add PBS NBD attach flow to Clonezilla live menu
- Docs: add advanced use & guides section, Windows GUI Docker build
- Docs: unify READMEs, add Italian translation, RDEM Systems GUI attribution
- Fix Clonezilla ISO boot: rebuild from scratch with -boot-info-table
- Add patch-clonezilla.sh to inject binaries into a Clonezilla live ISO
- Add WinPE rescue ISO build tooling and script
- GUI: add backup cancel, fix machine-backup stop/ETA, i18n French strings
- Fix Windows GUI Docker build and disklist compile error
- Fix server buttons translations
- Progress reporting ok
- WIP: Machine backup now starts , missing progress report and cancel
- WIP gui machine backup + switch again to haxmap
- WIP: Complete machine backup feature with GB disk size display and fixed device path selection
- Fix JSON formatting in config.json.example
- enhancement: update build.sh to match goreleaser windows behavior
- Switch to wails v2.13.0 so that it will build on debian 13 too ( Missing webkit 4.0 )
- Added logo
- Fix garbage in gui
- CSS Edit for keeping proxmox theme colors
- WIP Gui work, remove hardcoded branding , logo and point copyright to github contributors
- Fix build_gui.sh
- Update README.fr.md
- chore(release): 0.2.119
- chore: remove dead pkg/logger module (broken-by-design unused logger)
- test(pbscommon): measure chunk size by Scan's return, not the reset field
- chore(release): 0.2.118
- ci: make test-modules non-blocking (informational) so releases build
- chore(release): 0.2.117
- ci: go mod tidy before module tests so GOWORK=off builds resolve
- chore(release): 0.2.116
- ci: gate builds/release on the non-GUI module tests
- fix(gui): opt-in split no longer backs up excluded top-level folders
- ci: run unit tests for non-GUI modules on Linux and Windows
- chore(release): 0.2.115
- fix(pbscommon): bound catalog tables before the root pointer
- chore(gui): remove dead JobManager/BackupRunner
- fix(api): real version, bounded progress map, race-free status read
- fix(scheduler): DST-safe next-run calculation
- fix(gui): split backup waits for each part's real outcome
- chore(release): 0.2.114
- fix(retry): classify transient HTTP/deadline errors; guard jitter against NaN
- fix: parse previous DIDX defensively, no panic on truncated body
- fix(backup): report real archived bytes and close sessions on error
- chore(release): 0.2.113
- docs(readme): add offsite Proxmox backup target link (EN + FR)
- fix(scheduler): let startup recovery catch up missed runs, not skip them
- fix(cli): allocate mail Template before -mail-*-template flags write to it
- fix(restore): don't report intentional overwrite-off skips as failure
- fix(mail): deliver to multiple recipients and surface STARTTLS errors
- fix(pbscommon): harden archive readers against malformed indexes
- fix(scheduler): never overwrite jobs/history from a failed read
- fix(service): reload config from disk before each backup
- fix(scheduler): catch up missed runs instead of skipping them forever
- fix(snapshot): one VSS Snapshotter per volume; safe multi-volume sets
- fix(machinebackup): correct volume mapping and VSS partition read
- fix(directorybackup): never report a failed or partial backup as success
- feat(backup): make split opt-in (first-seed split, full afterwards)
- fix(backup): stop whole-drive backup hanging in pre-backup size analysis
- fix(gui): persist TOFU certificate pin via the service in service mode
- feat(search): make regex file-search case-insensitive by default
- ci(release): bilingual EN/FR links in release-notes footer
- docs(readme): SEO/GEO rewrite with locale-correct links
- docs: add French README with EN/FR language switcher
- fix(gui): localize the 'choose my backup' CTA per UI language
- fix(installer): drop ARPNOMODIFY (duplicate of WixUI_InstallDir, LGHT0091)
- chore(release): 0.2.108
- fix(restore): wildcard search, GUI folder picker, path display
- docs/ci: point antivirus-explainer links at canonical trailing-slash URLs
- docs+installer: correct false "code-signed" claim, add ARP trust metadata
- docs(release): translate RELEASE_NOTES to English + fix empty changelog
- chore(release): 0.2.107
- docs(release): rewrite stale RELEASE_NOTES + version-stamp VirusTotal labels
- ci(release): pin Wails CLI to resolved v2.12.0 for a deterministic toolchain
- ci(release): track Wails CLI @latest (v2.8.0 fails to build under Go 1.25)
- chore(release): 0.2.106
- ci(release): gate VirusTotal link on a clean (0-detection) report + attest build provenance
- docs: link the antivirus false-positive explainer page (README + release notes)
- ci(release): best-effort VirusTotal submission + report links in notes
- ci(release): show SHA-256 checksums table in the release notes
- ci(release): harden Windows build against AV false positives
- docs(readme): note SignPath Foundation code signing for Windows binaries
- chore(release): 0.2.105
- fix(restore): don't open the native folder picker in service mode
- fix(restore): make search cancellation interrupt the in-flight snapshot
- fix(restore): skip meta walk on split data parts lacking the sidecar
- chore(release): 0.2.104
- fix(pbs): trust-on-first-use fingerprint pinning for self-signed certs
- chore(release): 0.2.103
- feat(restore): read pcat1 catalog for fast file search/listing
- chore(release): 0.2.102
- feat(backup): diagnostic logging for PBS target + structured result line
- fix(state): atomic writes for jobs/history/config JSON (M-03)
- chore(release): 0.2.101
- fix(service): resolve EffectivePBS in service-mode backup (multi-PBS)
- chore(release): 0.2.100
- fix(restore): random exclusive temp file instead of predictable .nimbus-part (v2-H-08)
- fix(backup): no phantom catalog/goodbye entries for skipped files (M-06)
- fix(lint): consistent method receiver names (staticcheck ST1016)
- chore(release): 0.2.98
- fix(restore): fail a selective restore that matched no requested path (v2-H-09)
- fix(vss): scope startup cleanup to Nimbus shadows, drop delete /all (v2-H-05)
- fix(backup): aggregate auto-split result, continue independent splits (v2-H-03)
- feat(backup): 4-level honest outcome + detect unreadable/unstable files (v2-H-02/F-01)
- fix(backup): auto-split no longer drops root-level files (v2-H-01)
- fix(backup): fail-closed on chunk upload failure (C3 / v2-H-04)
- fix(security): authenticate the local service API (H-01 / v2-H-06)
- fix(security): restrict plain-HTTP exemption to true loopback (v2-H-07)
- fix(security): stop exposing PBS/SMTP secrets to the frontend (M-04/M-05)
- fix(security): pin TLS fingerprint on all PBS clients (H-02)
- fix(security): redact PBS token in CreateDynamicIndex header log (L-01)
- chore(release): 0.2.96
- fix(backup): custom backup-id discoverability + VSS sidecar paths (Codex review)
- chore(release): 0.2.95
- feat(backup): configurable auto-split (disable_split + split_size_gb)
- chore(release): 0.2.94
- fix(backup): per-folder backup-id for multi-folder backups (PBS retention)
- chore(release): 0.2.93
- feat(restore): lazy chunk-backed reader, drop whole-archive temp staging
- chore(release): 0.2.92
- fix(backup): apply user exclusions (H-04) + status sidecar; fix 0.2.91 build
- chore(release): 0.2.91
- feat(backup): honest result contract + structured live progress
- chore(release): 0.2.90
- fix(gui): unique job IDs, bounded progress polling, version-derived window match
- fix(backup): do not report a backup with failed chunks as successful
- fix(pbs): guard short chunk response, redact secret in logs, check fixed-index status
- fix(restore): prevent path traversal, verify chunk integrity, atomic writes
- chore(release): 0.2.89
- fix(vss): stop bouncing the VSS service at startup
- fix(pbs): enforce TLS certificate fingerprint pin
- fix(backup): emit exact declared payload size in pxar to prevent corruption
- chore(release): 0.2.88
- fix(restore): check f.Close() return value (errcheck)
- chore(release): 0.2.87
- feat(restore): stream large archives + cross-snapshot file search
- fix(restore): drop trailing periods from error strings (ST1005)
- fix(restore): export NormalizeIncludes for cross-package use
- feat(restore): in-place + alternate modes (flat / abs)
- feat(restore): expose backup meta sidecar to UI
- feat(restore): cache snapshot tree listings + manual reload
- fix(restore): assemble DIDX chunks before parsing PXAR
- fix(gui): rename ChunkState fields/method to satisfy ST1003
- ci: migrate .golangci.yml to v2 schema
- ci: bump golangci-lint to v2.12.2 for Go 1.25 support
- ci: use golangci-lint-action@v7 to fix install.sh checksum failure
- feat(restore): selective GUI restore with multi-PBS + treeview, fix PXAR reader
- Update readme.md + add optimization to not compute sha256 of blocks that are at zero
- docs(readme): show both EN and FR doc links explicitly
- docs(readme): fix release URL, add badges, docs links, feature table, about section
- fix(vss): clean up + restart VSS service on startup to clear stuck "already in progress"
- fix(pbs): close H2 connection after Finish() to release worker
- fix(gui): use multi-PBS default for backup/restore validation
- fix(gui): pass 7th arg to StartBackup so Wails accepts the call
- feat(lifecycle): close PBS sessions on shutdown to release locks
- fix(pbs): set manifest File.Size to encoded blob size for verify
- fix(pbs): set manifest csum on UploadBlob to pass /finish validation
- fix(logs): replace Windows rotate with close+rename+reopen
- build(ci): use git tag as version source, unstick stale wails.json
- fix(logs): stop Sync on every write + O_RDWR for rotation
- fix(meta+logs): PBS blob regex + durable per-run log compression
- fix(retry): wait 25min on session-lost before retrying directory
- feat(meta): capture NTFS ACLs during pxar walk + upload as blob
- feat(logs): per-run backup log file + startup banner + partial status fix
- fix(critical): abort on session-lost + dir retry + H2 keepalive
- fix(critical): per-directory Finish() + non-fatal per-dir errors
- fix(critical): detect empty backup root + 0-chunk guard + Linux log path
- fix(critical): check HTTP status codes + block H2 auto-reconnect + fix retry
- fix(lint): handle all errcheck warnings in log_rotation.go
- feat(split): bin-packing strategy instead of one-job-per-folder
- fix(logs): Windows-safe log rotation using copy+truncate
- fix(build): move appVersion to version.go (no build tag)
- fix(scheduler): use fresh ScheduleTime from file + reduce log verbosity
- feat(meta): inject .nimbus_backup_meta.json into each PXAR archive
- fix(split): restore MaxChunkSize to 100GB now that chunk avg is correct
- fix(chunking): reduce chunk avg to 4MB to respect PBS 16MB max limit
- fix(auth): sanitize backup-id to remove spaces causing PBS 400 errors
- fix(scheduler): recalculate stale nextRun on startup to prevent stuck jobs
- fix(vss): handle VSS writer errors gracefully and continue backup
- fix(critical): prevent orphaned PBS backup sessions from split detection
- fix(critical): prevent excessive job subdivision that creates 1000+ jobs
- fix(split): replace split-X-of-Y naming with descriptive path-based IDs
- fix(backup): increase chunk_size_avg from 4MB to 8MB to reduce DIDX index size
- chore: bump version to 0.2.42
- fix(critical): Fix auto-split failure cascade from log rotation bug
- fix(pbsapi): use json.Marshal for dynamic_index to prevent encoding issues
- fix(backup): reduce MaxChunkSize to prevent PBS manifest overflow
- fix: remove failing keep-alive and add backup crash protection
- fix: compilation errors in PXAR reader
- feat(restore): implement PXAR extraction (BETA)
- fix(restore): fix snapshot listing and add cross-server security
- feat(compression): add configurable Zstd compression levels
- fix: handle errcheck linter warnings in log_rotation.go
- fix: declare err variable in main.go
- chore: bump version to 0.2.32
- fix: remove undefined debugLogPath references in main.go
- chore: bump version to 0.2.31 and fix compilation errors
- feat(split): smart splitting with per-folder backup detection
- fix(backup): fix critical Finish() bug causing missing snapshots
- feat(logs): add log rotation, split backup/service logs, improve error handling
- docs: integrate technical audit findings and restore roadmap
- feat(i18n): add complete French/English translation system
- chore: update version in wails.json to 0.2.25
- feat(backup): implement automatic splitting for large backups
- feat(backup): add mutex to prevent concurrent backups to same destination
- fix(lint): properly handle f.Close() error in defer
- fix(lint): handle error returns in logging functions
- fix(service): separate logging for GUI and Service executables
- chore: bump version to 0.2.20
- fix(ui): reduce default window size and add max dimensions
- fix(build): use correct Config field names in service stub
- fix(build): add service stubs for StartBackup and GetConfigWithHostname
- fix(security): add nosec annotation for ProgramData path
- fix(build): remove duplicate debugLogPath and writeDebugLog from main.go
- fix(build): move writeDebugLog to app_types.go for service build
- fix: remove unused sync import in main.go
- fix(build): extract App types to separate file for service build
- refactor(service): unify GUI and Service codebase with build tags
- chore: bump version to 0.2.12
- fix(ui): better responsive design for very small screens
- chore: bump version to 0.2.11
- fix(ui): add minimum window size to prevent UI overflow on small screens
- chore: bump version to 0.2.10
- fix(msi): correct service exe path in Product.wxs
- chore: bump version to 0.2.9
- fix(app): implement BackupHandler interface methods
- chore: bump version to 0.2.8
- fix(gui): add gui/api to go.mod dependencies
- chore: bump version to 0.2.7
- fix: add missing gui/api/go.mod
- chore: bump version to 0.2.6
- refactor: extract App to importable gui/app package
- chore: bump version to 0.2.5
- chore: bump version to 0.2.4
- fix(service): add missing replace directives for local modules
- chore: bump version to 0.2.3 and consolidate release notes
- feat: auto-exclude Windows system folders and files in file-mode backups
- chore: bump version to 0.2.2
- fix(ci): add service build step before MSI creation
- feat(backup): auto-split large backups (100GB threshold)
- fix(msi): remove custom install dialog causing build error
- feat(architecture): separate GUI/Service binaries + HTTP API + keep-alive fix
- feat(ui): responsive design + fix backup edit + fix MSI upgrade
- fix(v0.1.94): Add PBS session keep-alive for long backups
- feat(v0.1.93): Multi-PBS Architecture + Service Improvements
- fix(msi): change upgrade schedule to stop service properly
- fix(build): add missing totalSize variable declaration
- feat: add backup duration and size to completion report
- fix(service): never emit Wails events from service process
- debug: add trace logs to find backup hang point
- fix(critical): prevent service infinite loop on mode re-detection
- feat(scheduler): enhanced debug logging
- fix(logs): separate files per process to avoid conflicts
- fix(logs): separate GUI and Service log files
- fix(mode): re-detect service mode on each backup
- fix(progress): callback race condition for concurrent backups
- chore: bump version to v0.1.82
- fix(test): real HTTP test for PBS connection
- chore: bump version to v0.1.81
- fix(service): reload config before each backup + UX improvements
- chore: bump version to v0.1.80
- fix(frontend): backup-id fallback + smart VSS warnings
- fix(vss): admin check only in standalone mode, not service
- fix(critical): hardcoded ProgramData fallback for service logs
- fix(backup): fallback to hostname when backup-id is empty
- feat(ux): test connection without saving config first
- fix(frontend): safe trim() for undefined config fields
- feat(progress): wire real-time backup progress to API server
- fix(sec): suppress gosec G703 false positives for ProgramData paths
- fix(CRITICAL): unified config location - service now has PBS config
- feat(logs): unified log location in ProgramData
- chore: bump version to v0.1.70
- fix(build): remove unused pbsBackupType variable
- fix(scheduler): use StartBackup for proper mode routing + debug logs
- fix(service): proper stop mechanism for clean upgrades
- chore: bump version to v0.1.67
- fix(lint): use for range instead of for-select pattern
- fix(service): execute backups directly with admin privileges
- fix(build): resolve BackupHandler interface type mismatch
- fix(service): prevent crash on backup execution
- feat(api): integrate HTTP API for GUI-Service communication
- fix(service): enable service startup and graceful shutdown
- fix: golangci-lint errcheck violations and version sync
- chore: bump version to v0.1.60
- fix(api): use standard log package instead of undefined writeDebugLog
- chore: bump version to v0.1.59
- fix(api): make backup async to prevent HTTP timeout
- docs(todo): clarify multi-server as multi-job architecture
- docs(todo): add multi-server PBS support feature
- feat(api): add HTTP client/server architecture for GUI-Service communication
- docs: improve enterprise deployment with config JSON approach
- docs: add comprehensive TODO and trim release notes
- chore: bump version to v0.1.58
- feat(msi): add GPL v3 license from upstream
- fix(msi): don't start service during installation
- chore: bump version to v0.1.57
- fix(msi): add Platform=x64 to Package for 64-bit installer
- chore: bump version to v0.1.56
- fix(msi): remove custom image references to use WiX defaults
- chore: bump version to v0.1.55
- fix(lint): correct error string formatting for staticcheck ST1005
- chore: bump version to v0.1.54
- fix(ci): remove deprecated gosimple linter for golangci-lint v2.11.3
- chore: bump version to v0.1.53
- feat(ci): add manual workflow for dependency updates
- feat(ci): add dependency update checker + fix golangci-lint v2.11.3
- chore: bump version to v0.1.52
- fix(ci): remove go mod download for local workspace modules
- chore: bump version to v0.1.51
- refactor(ci): switch to reproducible dependency management
- fix(ci): complete dependency updates and golangci-lint v2.11.3 compatibility
- chore: bump version to v0.1.50
- chore(deps): upgrade all modules to Go 1.25 and update CI
- chore: bump version to v0.1.49
- feat(ci): add MSI installer to build artifacts
- feat(cleanup): remove legacy auto-start on app startup
- chore: upgrade to Go 1.25 + bump v0.1.48
- chore: bump version to 0.1.47
- fix(service): correct GetConfigWithHostname() call signature
- chore: bump version to 0.1.46 + fix gui/go.mod to 1.23
- fix(ci): specify go 1.23.0 in go.work for exact version match
- chore: bump version to 0.1.45
- fix(ci): upgrade to Go 1.23 for kardianos/service compatibility
- feat(msi): add Windows Service installer with WiX
- feat(workflow): add 'Tested with NimbusBackup' section to releases
- docs(readme): add managed service section without DC details
- feat(docs): add release notes system with auto-update
- fix(gui): systray icon + auto-start with admin + double launch
- feat(gui): add edit scheduled jobs + limit history display
- chore: bump version to 0.1.40
- fix(gui): improve tray icon, add manual backups to history, cleanup abandoned jobs
- fix(ci): handle missing GUI_README.md gracefully
- chore: bump version to 0.1.39
- fix(gui): single history entry and auto-update support
- chore: bump version to 0.1.38
- fix(gui): prevent double job execution and enable minimize to tray
- chore: bump version to 0.1.37
- fix(lint): check all error return values in scheduler.go
- chore: bump version to 0.1.36
- test: remove obsolete jobs_test.go (old architecture)
- chore: bump version to 0.1.35
- fix(gui): add build tags for tray and move HandleStartupRun to scheduler
- chore: bump version to 0.1.34
- fix(gui): add build tags for Windows-only autostart
- feat(gui): add scheduled backup mode with system tray
- feat(service): add background service for scheduled backups
- feat(ci): add standalone .exe to GitHub releases
- chore: remove internal documentation from public repo
- feat: single source of truth for version (wails.json only)
- chore: bump version to 0.1.32
- fix(ci): disable duplicate tag trigger on release.yml
- fix(build): NBD is Linux-only, not Windows/macOS
- chore: bump version to 0.1.31
- feat(gui): add upsell links to Nimbus Backup storage
- fix(build): skip NBD build on macOS (Linux/Windows only)
- chore: bump version to 0.1.30
- fix(cli): remove all Go 1.23 slices.Collect usage
- chore: bump version to 0.1.29
- fix(cli): replace Go 1.23 slices.Collect with Go 1.22 compatible code
- feat(gui): fix progress regression + remember last backup dirs
- fix(backup): graceful file access error handling + skipped files reporting
- fix: cleanup HTTP/2 connections before reconnecting
- fix(build): remove unused encoding/json import
- fix(critical): detect and skip Windows junction points gracefully
- debug: add comprehensive logging for CreateDynamicIndex
- fix(gui): use dynamic version from backend instead of hardcoded
- debug: add comprehensive logging for PBS HTTP/2 upgrade request
- fix(critical): add missing Host header to HTTP/1.1 upgrade request
- fix(critical): expose real PBS error in authentication failures
- chore(release): bump version to 0.1.19
- fix(build): remove remaining errors.New reference
- chore(release): bump version to 0.1.18 - critical PBS error fix
- fix(pbs): improve error handling in CreateDynamicIndex
- fix(build): add replace directives for local modules in CLI tools
- chore(release): bump version to 0.1.17 - 100% lint compliance
- fix(lint): change fmt.Errorf(variable) to errors.New(variable)
- chore(release): bump version to 0.1.16
- fix(ci): run golangci-lint directly instead of via action
- chore(release): bump version to 0.1.15
- fix(lint): handle error returns for Setenv and Close calls
- chore(release): bump version to 0.1.14
- fix(ci): add golangci-lint config for better error reporting
- chore(release): bump version to 0.1.13
- fix(ci): align GitLab CI lint job with GitHub Actions
- fix(lint): change fmt.Fprintf to fmt.Fprint for non-format strings
- chore(release): bump version to 0.1.12
- fix(ci): add GOWORK=off to golangci-lint step
- fix(ci): use dynamic version in release notes from CHANGELOG
- docs: update README to focus on Nimbus Backup
- fix(lint): change log.Printf to log.Print in machinebackup
- chore(release): bump version to 0.1.10
- fix(lint): change log.Printf to log.Print in nop_snapshot
- chore(release): bump version to 0.1.9
- fix(lint): change Printf to Print for non-format strings
- chore(release): bump version to 0.1.8
- fix(security): add nosec annotation for validated path
- chore(release): bump version to 0.1.7
- fix(security): validate log directory path before creation
- chore(release): bump version to 0.1.6
- fix(ci): add go mod tidy before tests and linting
- chore(release): bump version to 0.1.5
- fix(deps): fix Go version in all module go.mod files
- chore(release): bump version to 0.1.4
- fix(tests): fix module imports in pkg test files
- fix(modules): simplify pkg module names for proper resolution
- fix(deps): add go.mod for pkg modules and fix Go version
- feat(v0.1.2): Phase 2 tests + Phase 3 security hardening
- feat(v0.1.1): network resilience and CI/CD improvements
- docs: add comprehensive TODO.md with project roadmap
- fix(ci): resolve golangci-lint errors and rename binary to NimbusBackup
- docs: update CHANGELOG with Phase 1 refactoring achievements
- refactor(machinebackup): improve error handling and remove panic calls
- refactor: add comprehensive error handling to PXAR and chunking
- fix: syntax error in main.go and improve error handling in directorybackup
- feat: unified build system + security hardening infrastructure
- docs: update README with GUI focus and RDEM Systems links
- refactor: single source of truth for version (wails.json)
- chore: bump version to 0.1.0 and update changelog
- feat(gui): add professional progress display with stats
- feat(gui): accurate progress with background size calculation
- feat(gui): add granular progress tracking during backup
- feat(gui): improve backup progress UI
- chore(gui): temporarily disable machine backup feature
- fix(gui): replace Go 1.23 functions with Go 1.22 compatible code
- feat(gui): auto-detect physical disks with user-friendly labels
- feat(gui): implement PhysicalDrive backup for machine mode
- fix: add trailing backslash to drive letters for full disk backup
- feat: real-time backup progress with Wails events
- feat: add VSS admin warning in UI
- fix: remove Connect() call before ListSnapshots
- fix: handle missing previous backup on first backup
- fix: test connection in backup mode instead of reader
- fix: remove unused runtime import
- fix: add missing pbscommon import + Windows build tags
- fix: implement real connection test + trim config + debug auth
- feat: add admin privilege check for VSS backups
- fix: use Windows AppData for logs instead of home directory
- fix: rename log directory to .nimbus-backup
- feat: version 0.0.16 + editable backup-id + auto-fill restore
- fix: correct assignment errors and type conversions
- feat: implement functional restore with snapshot listing
- feat: implement functional backup with PXAR and deduplication
- fix: show backup-id from config with fallback to hostname
- fix: display hostname in config tab and show proper backup error
- fix: add missing time import and downgrade dependencies for Go 1.21
- fix: correct PBSClient instantiation and go version compatibility
- feat(gui): multi-select for directories and drives + inline backup/restore
- fix(gui): hostname integration + backup error message
- feat(gui): integrate real backup/restore + hostname state + Nimbus icon
- fix: remove BackupDir validation, add hostname pre-fill, update version to 0.0.7
- fix: update website URL to nimbus.rdem-systems.com
- fix: errcheck lint errors + correct Wails CLI installation
- fix: remove app.go duplicate + disable npm cache
- fix(ci): remove YAML-breaking heredoc in workflow
- fix(ci): remove GoReleaser workflow, keep only Wails
- fix(ci): exclude GUI tags from GoReleaser workflow
- feat(gui): robust Wails build with crash recovery and .json/.txt config support - tag v0.0.2-gui
- feat(gui): robust Wails build with crash recovery and .json/.txt config support
- feat: Proxmox Backup Client Go with GUI
π SHA-256 checksums
Verify with Get-FileHash <file> -Algorithm SHA256 (PowerShell) or sha256sum -c SHA256SUMS.txt.
395ba503ebd8789881f948c2b13c83756c06d3be444a00d2b1d992b928b0f681 AcmeBackup-1.2.0-rc.1.msi
524e57b5e7c49be5e03997c7b87ebfa0a32b48cbf754d5d7e0b672a5f17e0e79 EtitechBackup-1.2.0-rc.1.msi
84099c3c14dbd6ad5d42e3bcf8aa5f55a27da75d2ffcf2c2da05259dbc9cd04e NimbusBackup-1.2.0-rc.1.msi
fbca65c247b7a16a2e6e6e1b41065bc106b19991e589560b45019a4dd273b293 ProxmoxBackupClient-1.2.0-rc.1.msi
36e12c2613bdc30e54e3076021022c97dae75e769f57b00ccc88f390f13f9133 proxmoxbackup-cli-v1.2.0-rc.1-linux.tar.gz
0a3af47861d53017379373a657f12791224af65fb8ada32ac58cb27acfc7f9b9 proxmoxbackup-cli-v1.2.0-rc.1-macos.tar.gz
a409a217b74eadd7cb437357af7e48081f3dc0cffa639cf3386b53ec0ab6cd8d proxmoxbackup-cli-v1.2.0-rc.1-windows.zip
Proxmox Backup Client β Status & notes
Per-version changes are listed in the βChanges sinceβ¦β section of each release (above) and in CHANGELOG.md. This page describes the stable state of the product.
π¦ Available builds
ProxmoxBackupClient.msi (installer β recommended for production)
- β Windows service: starts automatically at system boot
- β Persistent admin privileges: the service runs as LocalSystem (VSS guaranteed)
- β Scheduled backups: run automatically, even after a reboot
- β Clean uninstall: full cleanup via Control Panel
ProxmoxBackupClient.exe (standalone)
- β Manual and scheduled backups: work as long as the app is running
- β No persistence across reboots: no service β prefer the MSI in production
- π‘ Use case: one-off backups or testing
β Features
Backup & restore
- One-shot (immediate) and scheduled (configurable time) backups
- Auto-split of large backups (>100 GB) into balanced jobs (~100 GB) with per-job retry
- VSS (Volume Shadow Copy) for consistent backups
- File/folder exclusions + automatic exclusion of Windows system folders (System Volume Information, $RECYCLE.BIN, pagefile.sysβ¦)
- Snapshot restore and browsing (fast catalog reads)
- Robust long-running backups (30 s keep-alive, validated on 11 h+ backups)
- Multi-server PBS support
Interface & configuration
- Wails GUI (Go + React), in English and French
- Backup history and re-run of failed jobs
- Progress bar with statistics, minimize to tray
- PBS configuration with connection test, certificate fingerprint pinning (TOFU) and namespaces
π Known issues
- β οΈ The standalone .exe does not persist across reboots β use the MSI in production.
- β οΈ The exclusion format is not validated on input.
Tested with Proxmox Backup Server
This release has been tested against Proxmox Backup Server β see the project repository.
Proxmox Backup Client β GitHub Β· Forum
Proxmox Backup Client β Releases