--- title: Backups description: How WHP's automatic backups work, the default-target requirement, full-server backups vs customer data backups, and managing backup targets. sidebar: order: 6 --- import { Aside } from '@astrojs/starlight/components'; import SuperAdmin from '~/content/partials/super-admin-callout.mdx'; import AdminSignIn from '~/content/partials/admin-signin.mdx'; import Support from '~/content/partials/support-link.mdx'; WHP backs up **customer data** (sites and databases) when an admin has configured a default backup target. WHP does **not** back up the full server — that's a separate concern. ## Two different things called "backup" It's worth being precise: - **Customer data backups** — what WHP does. Site files (per user, per domain) and databases. Configured per server via backup targets. These start automatically once a default target exists. - **Full server backups** — backing up the host OS, `/etc`, container images, the WHP install itself, etc. **WHP does not do this.** ### Full server backups | Where WHP runs | Who owns full-server backups | |---|---| | **Our Virtual Dedicated Server (VDS)** plans | Included. AnHonestHost snapshots the VDS at the platform level. | | **Anywhere else** | The server operator. WHP doesn't ship a full-server backup mechanism — you'll need to set up something at the OS / hypervisor level. | If you're running WHP on your own infrastructure, plan accordingly. WHP's configuration isn't all in `/etc` — there are config and state files in the WHP install directory, in Docker volumes for the platform containers (HAProxy, MySQL, Postgres, Valkey, the WAF), and in service-specific paths elsewhere on the host. The safest approach is a **full-server backup** (image snapshot or filesystem-level backup) rather than trying to enumerate paths. ## Sign in as super admin ## How customer auto-backups start **Customer auto-backups don't run until at least one default backup target exists.** A fresh WHP install has no targets and no schedule — every user's backup status is "no targets available" until an admin sets one up. Once a default target is configured, the platform begins automatic daily backups for every customer with sites or databases. Customers see their own backup history under the [Backups](/whp/how-to/backups/) page in their account. ## The Backup Management page Sidebar → **Backups**. The admin view of this page mirrors the customer view, with extra controls: - **Stat tiles** — Total Backups, Total Size, Sites, Databases. Server-wide totals across every account. - **Create New Backup** — fires an on-demand backup. Admin form adds a **User** dropdown so you can backup any customer's account, not just your own. - **Backup Targets** — the table of destinations available on the server. The **Global** column distinguishes shared targets from per-account targets. ### Backup targets Each target row has: - **Name** — your label for the destination. - **Type** — S3 (and other supported types) — built-in support for S3-compatible storage (AWS S3, Cloudflare R2, MinIO, etc.). - **Connection** — the endpoint URL and bucket / path. - **Retention** — how long backups are kept (default 5 days). - **Max Backups** — cap on the number of snapshots retained (default 10). - **Global** — `Yes` if every account can use this target, `No` if it's bound to a single account. - **Actions** — **Test** (verify credentials and write a probe object), **Edit**, **Delete**. ### Adding a global backup target Click **+ Add Backup Target** and fill in: 1. **Name** — descriptive label. 2. **Type** — pick S3 (or whichever storage backend you want). 3. **Endpoint URL** — for non-AWS S3 (Cloudflare R2, MinIO, Wasabi, etc.), point at the provider's endpoint. 4. **Bucket / path**. 5. **Access key / Secret** — the credentials WHP will use. 6. **Retention / Max Backups** — server-wide defaults for any account that uses this target. 7. **Global** — leave **on** so every account can use it as their default destination. Click **Test** before saving to confirm WHP can reach the bucket. A good target round-trips a probe object in under a second. ### Per-customer (non-global) targets Customers can add their own backup targets from the customer-side Backups page. Those show up here with **Global: No** plus a note linking them to the owning account. Admins can edit or delete those on the customer's behalf when they need help. ### Triggering an on-demand backup for a user In the **Create New Backup** form: 1. Pick the customer in the **User** dropdown. 2. Pick a **Backup Type** (Sites / Databases / both). 3. Pick a **Backup Target**. 4. **Start Backup**. Progress is visible in the run history below. This is the right path when a customer asks for a fresh backup right before a risky migration. ## Verifying customer backups are succeeding The Total Backups and Total Size tiles climb over time on a healthy server. If they sit flat: - Confirm at least one target exists with **Global: Yes**. - Open the run history (lower on the page) and look for failed entries — the error message usually points at credentials or quota. ## Troubleshooting **No backups are running for any customer.** Confirm at least one **Global: Yes** target exists and that its **Test** button returns success. Without a global default, the scheduler doesn't fire. **One target is failing.** Click **Test** on the target row. The most common causes are rotated credentials, an incorrect endpoint URL (R2 / MinIO often need an explicit endpoint different from AWS's default), or the bucket lifecycle policy deleting backups before the retention window. **Customer says their backup is too old.** Check **Max Backups** on the target — if it's lower than their backup cadence × retention window, older backups get pruned. **Backup ran but `tar` step failed mid-stream.** Disk pressure on the host is a common cause. Check **Disk Usage** (admin sidebar) and consider raising the target's retention so fewer backups stack up on the host before upload. ## Related - [Backups](/whp/how-to/backups/) — the customer-facing side. - [Server settings & services](/whp/admin/server-settings/) — including Backup Upload host service. ## Still stuck?