This plugin connects a panel user's own Google Drive account (OAuth authorization code with PKCE; the refresh token is encrypted before it is stored in the panel database and can be revoked from the page) and uses it as an off-site destination for panel backups. Each user connects their own Drive, either through a shared Google app configured by an admin or through their own personal app credentials. With the drive.file scope the plugin only ever sees files it created, all inside a "VinzaPanel Backups" folder.
The page has five views. Overview shows the account, storage quota, how many files and bytes the VinzaPanel folder holds, the last successful and last failed upload, active Drive schedules with their next run, and transfers in progress. Backups lists the panel's backups (searchable, paginated) and queues one or several for upload. Schedules creates, pauses, runs and deletes automatic backups whose copies go to Drive, with separate retention on the server and on Drive, using the panel's own backup schedules and ownership rules. Drive Files browses the folder tree with breadcrumbs, name search and paging, moves files to the Drive trash, and restores a file to the server. Activity lists uploads and restores with status, size, time and error, with Retry for failed uploads.
Uploads and restores run on the server as detached background jobs, never inside a web request, so multi-gigabyte archives are fine and you can leave the page; a progress bar shows percent, speed and time left while one runs. An upload reads the archive as its owner's Linux user, sends it in 8 MiB resumable chunks while computing its MD5, and compares that with the MD5 Drive reports for the stored file; a mismatch fails the upload and removes the bad copy, a match is shown as "verified". A restore downloads into a hidden temporary file AS THE DESTINATION OWNER, checks the MD5, and only then links the file into place under a name that never overwrites an existing file. Website owners may restore only into their own website folders or their own backups folder; admins may choose any folder. A panel archive restored into the owner's backups folder is also registered as a regular backup, so it appears on the Backups page (download, delete, upload again) — the file is not extracted or applied to the site automatically.
Options per user: archives can be encrypted on the server before upload (AES-256-GCM, chunked, with a passphrase stored encrypted in the panel; Drive only ever sees ciphertext, stored as .enc). A restore decrypts automatically with the user's key — older keys are kept after a passphrase change. Losing the passphrase (or the panel and its database) means losing access to those backups. Uploads can go to a Google shared drive instead of My Drive, and can be capped to a bandwidth limit in MB/s.
Requirements and limits: the Google Python client libraries (google-api-python-client, google-auth, google-auth-oauthlib, google-auth-httplib2) must be installed in the panel environment (the installer does this; installation fails with a clear message otherwise). Uploading from this page needs a licence that includes off-site backup; restoring does not. Uploads are processed one at a time server-wide; at most two restores run per user at once. A finished restore is picked up the next time its owner opens the page.
Availability: Included at no extra cost with the Profesional and Enterprise plans. On the Free and Starter plans it is available per server as a monthly subscription ($2.99/month) or a one-time purchase ($29).
Use VinzaPanel's REST API to download and install this app programmatically.
POST /plugins/api/download/google-drive-backup/ Content-Type: application/json { "panel_version": "1.0.0" }
{
"success": true,
"plugin_id": "google-drive-backup",
"version": "1.3.7",
"download_url": "..."
}