Proxmox Backup to Personal Cloud Storage

Guides~15 min

Use rclone to mount a personal cloud (Google Drive, Mega, Dropbox, OneDrive, etc.) as a directory on the Proxmox VE host, register it as a vzdump datastore, and back up VMs / CTs straight to the cloud — no extra script.

Consider Proxmox Backup Server first

If you have a second machine (a Pi, an old PC, a NAS), running Proxmox Backup Server on it gives you incremental, deduplicated, encrypted backups — a much better fit for VM backup than rsync-style cloud sync. The cloud-mount approach in this guide is for users who specifically want backups to land in their personal cloud (Google Drive / Mega / OneDrive / Dropbox).

What you'll do

  1. Create a directory on the Proxmox host and register it as a vzdump-capable datastore.
  2. Install and configure rclone for your cloud provider.
  3. Mount the cloud folder onto the directory.
  4. Make the mount survive reboots (systemd unit — more robust than crontab).

Heads up about Proxmox vzdump backups

They're not incremental. Every backup contains the full VM disk image (compressed). On a quota-limited cloud, this fills up fast. Plan a retention policy from day one (see end of guide).

1. Create the host directory and register it as a datastore

SSH into the host (or use the Proxmox shell) and create a mount-point directory under /mnt/. The name is arbitrary — use something that identifies the provider:

mkdir -p /mnt/gdrive

In the Proxmox web UI: Datacenter → Storage → Add → Directory.

Adding new storage in Proxmox

Configure it like this:

  • ID: gdrive (or whatever you used for the directory name)
  • Directory: /mnt/gdrive
  • Content: select VZDump backup file
Configuring new storage in Proxmox

Click Add:

New storage added in Proxmox

The directory is now registered as a Proxmox datastore — but it's still empty (no cloud is mounted on it yet).

2. Install and configure rclone

rclone is the tool that talks to cloud storage providers. Install it from Debian repositories:

apt-get update
apt-get install -y rclone

If you need a newer rclone

If you need a newer rclone than what Debian ships, use the official installer:

curl https://rclone.org/install.sh | bash

2.1 Browser-based authentication via SSH tunnel

rclone's auth flow opens a local web browser. Since the Proxmox host doesn't have a desktop, rclone's remote-setup procedure routes the auth callback through an SSH tunnel back to your laptop's browser.

From your laptop (replace ip_proxmox with the Proxmox IP):

ssh -L localhost:53682:localhost:53682 root@ip_proxmox

This SSH session forwards port 53682 from the Proxmox host to your laptop's localhost. Keep it open during the rclone config below.

2.2 Run rclone config

In the SSH session you just opened, run:

rclone config

Follow the prompts to add a new remote. The exact answers depend on your provider — see the rclone provider docs for Google Drive, Mega, Dropbox, OneDrive, etc. The key step is the auth question:

Use web browser to automatically authenticate rclone with remote?
 * Say Y if the machine running rclone has a web browser you can use
 * Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes
n) No
y/n> y

Answer Y — rclone prints a localhost URL. Open it in your laptop's browser (the SSH tunnel routes it correctly), authorise the rclone application in your cloud provider, and the config completes.

When asked for the remote's name, use something matching the directory you created — e.g. gdrive.

3. Mount the cloud folder

Create a folder in your personal cloud to hold the backups. Call it something like PBC (Proxmox Backup Cloud).

Mount it onto the host directory:

rclone mount gdrive:/PBC /mnt/gdrive --allow-other --allow-non-empty
  • gdrive:/PBC — the folder in your cloud.
  • /mnt/gdrive — the host directory you registered as a datastore.

This command stays in the foreground. For testing, leave it running in a terminal and try a backup. For permanent mounting on every boot, set up a systemd unit (next section).

4. Auto-mount on every boot (systemd)

A systemd unit is more robust than crontab @reboot — it can wait for the network to be ready, restart on failure, and gives you proper logs via journalctl.

Create the unit file:

nano /etc/systemd/system/rclone-gdrive.service

Paste:

[Unit]
Description=rclone mount for Proxmox cloud backups
Wants=network-online.target
After=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/rclone mount \
    gdrive:/PBC /mnt/gdrive \
    --allow-other \
    --allow-non-empty \
    --vfs-cache-mode writes \
    --log-level INFO \
    --log-file /var/log/rclone-gdrive.log
ExecStop=/bin/fusermount -uz /mnt/gdrive
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Adjust gdrive:/PBC and /mnt/gdrive if you used different names. Save (Ctrl+X), then enable and start:

systemctl daemon-reload
systemctl enable --now rclone-gdrive.service

Verify:

systemctl status rclone-gdrive.service
mount | grep /mnt/gdrive

If the service ever fails (provider rate-limits, expired auth token, network blip), it'll auto-restart after 10 seconds. Logs are at /var/log/rclone-gdrive.log and via journalctl -u rclone-gdrive.service -f.

Why --vfs-cache-mode writes?

vzdump streams the backup archive to disk; without VFS write caching, every fwrite blocks on a HTTP round-trip to the cloud — backups get slow and providers may rate-limit. The cache buffers writes locally and flushes them in the background.

5. Configure the backup to land in the cloud

In the Proxmox UI, when scheduling a backup or running an ad-hoc one, pick the storage you registered as the target:

Selecting backup destination in Proxmox

After the backup completes, the file appears in your cloud:

Backup file in cloud storage

6. Retention — keep cloud quota under control

Proxmox vzdump backups are full snapshots, not incremental. A 30 GB VM = 30 GB per backup. Without retention, the cloud fills up.

In the Proxmox UI: Datacenter → Backup → [your job] → Retention:

Backup retention settings in Proxmox

Reasonable starter values for a home / lab setup:

  • Keep last 5 daily backups
  • Keep last 4 weekly backups
  • Keep last 6 monthly backups

Adjust based on your cloud quota and how often the VMs change.

Troubleshooting

  • Mount point /mnt/gdrive is itself on a fuse.rclone filesystem: the previous mount didn't unmount cleanly. Force-unmount: fusermount -uz /mnt/gdrive, then restart the systemd unit.
  • Backup is extremely slow: confirm --vfs-cache-mode writes is on the ExecStart line. Without it, every write blocks on the cloud. Also check your upstream bandwidth — vzdump is bound by it.
  • Backup fails with 'No space left on device': the cache directory (~/.cache/rclone/) filled up before the upload caught up. Move it to a larger filesystem with --cache-dir /var/cache/rclone in the systemd unit.
  • rclone auth token expired (typical on Google Drive after a long idle period): SSH back in with the tunnel (ssh -L localhost:53682:localhost:53682 root@ip_proxmox) and run rclone config reconnect gdrive: to refresh.
  • Backups land but are corrupted on restore: stop using cloud storage as the only backup destination. Combine with local PBS / vzdump on a different disk for resilience.

Sponsor

If you would like to support the project.

Support me on Ko-fi

Connect

Join the community discussions on GitHub to get help, share ideas, and contribute to the project. Every idea is welcome!

Join the Discussion

ProxMenux, an open-source and collaborative project by MacRimi.