This guide covers cPanel and Linux servers. Running it in a container instead? Use the Docker install guide — it is shorter, and none of the steps below apply.

Before you start

You'll need four things:

The app itself needs roughly 100 MB of disk and about 50 MB of RAM per client workspace. Your actual backup data is stored in your destination (Google Drive, S3, Azure or local disk) — not on the web server.

Security first: where to install

Never install GWS Backup inside public_html.

The application folder contains your encrypted credentials database, your .env encryption keys and your recovery keys. If those live under public_html, one misconfiguration could let anyone on the internet download them. The app is served by Node.js — it does not need to be in your web root, and it must not be.

/home/youruser/gwsbackup  ✓ correct
/home/youruser/public_html/backup  ✗ never

Use a random subdomain name.

Bots constantly scan predictable names like backup.yourdomain.com and admin.yourdomain.com looking for login panels to attack. Give your installation an unguessable address instead — for example vault‑k7x93q.yourdomain.com — and don't link to it from anywhere public. Your login page effectively becomes invisible to automated scanners.

Always use HTTPS. Run AutoSSL on the new subdomain before your first login so your admin password never travels in plain text.

Fresh installation

1Create the random subdomain

In cPanel → DomainsCreate a New Domain (or Subdomains):

Then open SSL/TLS Status and run AutoSSL so the subdomain gets a certificate.

2Register the Node.js application

cPanel ships one of two tools for this, and which one you have is decided by your host, not by you. Look in cPanel for whichever of these you can see — the settings are the same either way, only the screen differs.

Route A — “Setup Node.js App” (CloudLinux Node.js Selector).
cPanel → SoftwareSetup Node.js AppCreate Application.
Route B — “Application Manager” (cPanel’s own, on EasyApache servers).
cPanel → SoftwareApplication ManagerRegister Application. There is no Node version dropdown here: the server has one system Node, installed by your host. Check it is 22.5 or newer before you go further (see the troubleshooting note at the foot of this page).

Whichever screen you are on, the values are:

Create or register the application, then stop it for now — there is nothing to run until the files are in place.

3Upload the application files

In File Manager, open the application root folder (e.g. /home/youruser/gwsbackup) and upload the -app.zip and -installer.php from your download. Then open the cPanel Terminal (or SSH) and run:

cd ~/gwsbackup
php gwsbackup-cpanel-0.96-installer.php

Use whichever version you downloaded. The wizard extracts the application, then removes the payload zip and any installer from an earlier release automatically to keep the server clean. No terminal access? Use File Manager's Extract on the -app.zip instead, then delete the zip manually — note that this skips the automatic database backup the installer would have taken first.

4Set the application URL variable

Back in Setup Node.js App (Route A) or Application Manager (Route B), add an environment variable so sign-in and Google callbacks return to the right address:

NEXTAUTH_URL = https://vault-k7x93q.yourdomain.com

(your real subdomain, including https://).

5Start the app

Start the application. On first boot it generates its own keys and writes a complete .env in the app folder, including the ENCRYPTION_KEY that protects every credential it will ever store. Back that file up before you go any further. Your recovery key is generated later, inside the app, and shown to you on screen — nothing writes it to the server.

6First-run setup & licence activation

Visit https://your-random-subdomain/ in a browser:

  1. Create your administrator account on the setup screen, and save the recovery key it shows you — it is displayed once, and it's the only way back in if you forget your password.
  2. You'll then be asked for your licence key. Paste the key we emailed you — no key yet? Request one now; the app will wait on the activation screen until it arrives. The software stays locked until a valid key is activated.
  3. Follow the in-app Connection Wizard to link your first Google Workspace — it walks you through the service account and gives you the exact permission scopes to paste into your Google Admin console.

That's it — set your backup schedule and destination in Settings and you're protected.

Updating an existing installation

Updates are one command, and your database is backed up automatically first:

  1. Download the latest release from this site.
  2. Upload the new -app.zip and its matching -installer.php into your existing application root (the folder containing gws-backup.db).
  3. Run:
cd ~/gwsbackup
php gwsbackup-cpanel-0.96-installer.php

The script backs up every database file — the console database, the per-client databases under clients/, and their write-ahead logs — to db_backups/backup_db_<timestamp>.zip, then clears the old build, extracts the new one and removes the update files. Your data, licence and settings are untouched. Finally, restart the app in Setup Node.js App.

Once you've confirmed an update is stable, delete older archives from db_backups/ — they count against your hosting quota.

Files you must protect

Inside your application root, treat these as crown jewels and keep your own offline copies:

Migrating servers? Stop the app first, then move the whole application folder and keep the same .env. Copy every database file together with its -wal and -shm companions — do not delete them and do not copy a .db on its own. The -wal holds committed data that has not been folded into the main file yet, so a database copied without it silently arrives missing its most recent minutes. Remember your licence key may only be live on one installation at a time — retire the old server when the new one goes live.

What we can and cannot do for you

We have no access to your server, and we never will. GWS Backup is self-hosted: it runs on your hosting account, under your cPanel login, writing to storage you own. We cannot see it, log into it, or fix it from here — and that is the point of it being self-hosted rather than a service you hand your clients’ data to.

What that means in practice:

Troubleshooting

Still stuck? Check the FAQ — it's searchable — or use the contact form (allow 1–2 days for free-edition support).