0.33.0: NFS share as backup destination

New destination type 'nfs' alongside SFTP and S3. The StackPilot container
needs no mount privileges: the Docker daemon mounts the export as a named
volume (stackpilot-nfs-dest-<id>, driver local/type nfs, recreated whenever
server/path/options change) and all file I/O runs through throwaway helper
containers (BACKUP_HELPER_IMAGE) — upload via put_archive, list via stat,
download via get_archive, delete/test via short-lived runs. Config: server,
export path, mount options (default rw), optional subdirectory (sanitized;
shell-safe charset). Mount failures surface as clean destination errors.

Settings UI gains the NFS form + summary; works everywhere destinations are
used (push, restore-from, scheduled backups incl. retention).

Verified live against a real kernel NFS server: test, push (file on the
export), list, restore-from incl. volume data, remote delete, config change
recreates the mount volume, unreachable server fails cleanly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
menzelj
2026-06-12 12:39:35 +00:00
co-authored by Claude Fable 5
parent 79d82361d8
commit 786c346c40
7 changed files with 249 additions and 16 deletions
+6 -3
View File
@@ -108,9 +108,12 @@ as intuitive as Dockge, as capable as Portainer for Compose workflows.
### Phase 6 — Backup destinations
- **Off-box backups**: define **SFTP** or **S3-compatible** (MinIO, Backblaze B2,
AWS S3, …) destinations under **Settings → Backup destinations** (with a Test
button; secrets are masked in API responses).
- **Off-box backups**: define **SFTP**, **S3-compatible** (MinIO, Backblaze B2,
AWS S3, …) or **NFS share** (0.33.0) destinations under **Settings → Backup
destinations** (with a Test button; secrets are masked in API responses).
NFS needs no privileges in the StackPilot container: the Docker daemon mounts
the export as a named volume (`stackpilot-nfs-dest-<id>`, recreated when the
config changes) and file I/O runs through throwaway helper containers.
- **Push & restore**: the stack Backup dialog can push straight to a destination
instead of downloading; the Restore dialog can browse a destination's backups
and restore (volumes included) directly from it. Remote backups can also be