# Backups

Complete weekly backup of every VPS without stopping it, with 4 kept, manual backups and a download link valid for 72 hours.

Source: https://ardumaker.com/en/docs/backups/

- Category: Servers and infrastructure
- Status: Available
- Requirements: A company VPS (running or stopped); To see the backups: access to the VPS; To request a backup, a download or change the exclusion: being a company admin
- MCP tools (Read only): `listar_backups_vps`, `ver_backup_vps`, `ver_estado_descarga_backup_vps`
- MCP tools (Destructive): `crear_backup_vps`, `crear_descarga_backup_vps`, `configurar_backups_vps`

## What can you do with it?

- Get an automatic backup of each VPS every 7 days, without stopping it.
- Request a backup off schedule.
- Download a complete backup as a `.tar` through a link that expires after 72 hours.
- Exclude a VPS from automatic backups, or include it again.
- Keep forever the last backup of a VPS that is deleted.

## When should you use it?

- Before a big change (migrating a database, upgrading the system): request a manual backup.
- To take a complete image of the VPS outside ArduMaker.
- For a test VPS that does not need backups: exclude it.

## How does it work in ArduMaker?

### The cycle

- Every active or stopped VPS enters the cycle every 7 days.
- A hot snapshot is taken: the VPS keeps running.
- Backups are processed one at a time, because a backup loads the disk and network of the host, which serves other VPS.
- If a backup fails, it is retried with a growing wait (30 minutes, 1 hour, 2 hours… up to 24 hours).
- The last 4 backups are kept; older ones are deleted automatically.
- Integrity is checked before storing it; a backup that does not match is discarded.

### Manual backup and download

1. An admin requests the backup (`crear_backup_vps`). It does not run in the request: it is queued and the backup process picks it up; it takes minutes.
2. Once it is completed, an admin requests the download (`crear_descarga_backup_vps`). The platform prepares the file and emails a link to whoever asked.
3. The download status goes through `pending`, `staging` and `ready` (or `expired`, `failed`). With `ready`, the `url` appears.
4. The link expires after 72 hours.

> **PELIGRO:** The download link is the credential for the complete VPS image: disks, keys and databases. Hand it only to whoever asked for it.

## What actually changes?

- Nothing changes inside the VPS: the temporary snapshot is deleted at the end, even on failure.
- The backup is stored in ArduMaker storage, outside the VPS host.
- When a VPS is deleted, its last backup is kept forever; if that backup cannot be made, the VPS is not deleted and stays stopped with an alert.
- Excluding a VPS stops copying it; existing backups remain, but they stop being refreshed.

## What a backup contains

A single `.tar`, because loose pieces do not restore anything:

| File | Contents |
| --- | --- |
| `LEEME.md` | How to restore by hand, with the VPS name and its domains |
| `instancia.tar.gz` | The full instance, with its snapshots and port forwards |
| `nginx/` | The host nginx configuration of the VPS domains |
| `letsencrypt/` | The certificates of your own domains |
| `manifiesto.json` | Plan, domains, repositories and company; domains without a certificate in the backup, in `ssl_domains_excluidos` |
| `SHA256SUMS` | Checksums to detect partial corruption |

Platform certificates (ArduMaker zone) do not travel in the backup: whoever restores elsewhere needs their own. There is no tool for automatic restore: `LEEME.md` explains the manual procedure.

## Diagram

**A backup, end to end**

```text
Hot snapshot (the VPS keeps running)
  ↓
Export (instance + nginx + certificates + manifest)
  ↓
Verification (checksums)
  ↓
ArduMaker storage (the last 4 are kept)
  ↓
Download (optional) (emailed link, 72 h)
```

## Expected result

- `listar_backups_vps` returns the backups from newest to oldest, with status, size, date and whether a download is prepared.
- `ver_backup_vps` shows what each backup contains according to its manifest.
- A member sees only completed backups; a company admin also sees failed attempts, but not the technical reason, which concerns shared infrastructure.

```bash
sha256sum -c SHA256SUMS
```

## Errors and troubleshooting

| Answer | Cause | What to do |
| --- | --- | --- |
| 400 VPS excluded | The VPS is excluded from backups | Include it with `configurar_backups_vps` |
| 409 | A backup is already queued or running | Wait for it to finish |
| 429 | Another backup was requested less than 60 minutes ago, or there are 3 live downloads in the company | Wait, or download or let downloads expire |
| 400 when requesting a download | The backup is not completed or has no file | Pick a completed backup |
| 404 `Backup not found` | It does not exist, or it is a failed attempt a member cannot see | Ask an admin |

Requesting the download twice returns the same one while it is alive. `crear_backup_vps` and `crear_descarga_backup_vps` accept `idempotency_key`. A backup cannot be deleted through MCP.

## MCP access

Yes, in the `/mcp` and `/mcp/vps` profiles.

| Tool | Type | Permission |
| --- | --- | --- |
| `listar_backups_vps`, `ver_backup_vps` | Read | VPS access |
| `ver_estado_descarga_backup_vps` | Read | Admin (the answer carries the link) |
| `crear_backup_vps` | Write | Admin; one per hour per VPS |
| `crear_descarga_backup_vps` | Write (sensitive data) | Admin |
| `configurar_backups_vps` | Write | Admin |

There is no tool to delete backups: it is irreversible and leaves the VPS with one backup less. Reference at [/mcp/docs](https://ardumaker.com/en/mcp/docs) and examples at [/mcp/vps](https://ardumaker.com/en/mcp/vps).

## Related features

- [VPS servers](https://ardumaker.com/en/docs/vps/)
- [SSL certificates](https://ardumaker.com/en/docs/ssl/)
- [Nginx](https://ardumaker.com/en/docs/nginx/)
- [Scheduled tasks](https://ardumaker.com/en/docs/cron/)
- [VPS plans](https://ardumaker.com/en/docs/planes-vps/)
