Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions content/de/developer/integration/backup/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ Verwenden Sie **RustFS** als Objektspeicher-Backend für Backup-Tools, die Repos
- [Velero](./velero.md)
- [Kopia](./kopia.md)
- [Longhorn](./longhorn.md)
- [Veeam](./veeam.md)

Halten Sie Backup-Jobs in einem eigenen Bucket und Präfix und verwenden Sie Zugangsdaten, die auf die erforderlichen Bucket-Operationen beschränkt sind.
3 changes: 2 additions & 1 deletion content/de/developer/integration/backup/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"kopia",
"longhorn",
"restic",
"velero"
"velero",
"veeam"
]
}
144 changes: 144 additions & 0 deletions content/de/developer/integration/backup/veeam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
---
title: "Veeam"
description: "Nutzen Sie RustFS als S3-kompatibles Backup-Repository für Veeam Backup & Replication, sichern Sie einen gesamten Computer und stellen Sie Dateien aus dem Backup wieder her."
---

Veeam Backup & Replication (VBR) ist eine Enterprise-Backup-Plattform, die Sicherungsdaten in S3-kompatiblem Objektspeicher ablegt. Diese Anleitung zeigt, wie Sie RustFS als VBR-Objektspeicher-Repository registrieren, mit dem Veeam Agent einen gesamten Windows-Computer sichern und eine Datei aus dem gespeicherten Backup wiederherstellen.

Sie benötigen eine laufende RustFS-Instanz, die über HTTPS erreichbar ist, einen für Backups vorgesehenen Bucket, eine Windows-Maschine mit installiertem VBR 13 (praktisch mindestens 4 vCPU und 8 GB RAM) sowie eine Veeam-Lizenz, die Backup auf Objektspeicher umfasst.

:::note[Lizenzanforderung]

Backup auf Objektspeicher ist eine Veeam-Funktion der Enterprise-Stufe. VBR Community Edition kann ein S3-Repository hinzufügen und validieren, aber das Ausführen eines Backup-Jobs darauf erfordert eine Enterprise-Lizenz oder den kostenlosen 30-Tage-Evaluierungsschlüssel (Veeam Data Platform Trial Key).

:::

## Architektur

```mermaid
flowchart LR
Computer["Windows-Computer
(Veeam Agent)"] -->|SigV4 HTTPS| VBR["VBR-Server"]
VBR -->|S3 API| Traefik["Ingress / TLS"]
Traefik --> RustFS["RustFS"]
RustFS --> Bucket["veeam-repo
(Versioning + Object Lock)"]
```

Während des Backups schreibt Veeam etwa 1 MiB große Backup-Blöcke über die S3-API in den Bucket; bei einer Wiederherstellung werden nur die Blöcke zurückgelesen, die die angeforderten Daten enthalten. Das Bucket-Präfix in dieser Anleitung ist `veeam`, der Bucket ist `veeam-repo`.

## 1. Bucket und Anmeldedaten vorbereiten

Erstellen Sie einen dedizierten Bucket mit aktiviertem Versioning und Object Lock. Versioning ist Voraussetzung für das Object Lock, auf dem die Veeam-Immutability basiert:

```bash
rc bucket create <your-alias>/veeam-repo --with-lock
rc bucket version info <your-alias>/veeam-repo
```

Erstellen Sie eine Richtlinie mit minimalen Rechten, die auf den Bucket beschränkt ist. Die Richtlinie lässt `s3:CreateBucket` bewusst aus: Veeam bietet das automatische Anlegen von Buckets an, und abzulehnen ist der empfohlene Weg, wenn der Bucket bereits existiert.

```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject",
"s3:GetObjectVersion","s3:DeleteObjectVersion",
"s3:AbortMultipartUpload","s3:ListMultipartUploadParts",
"s3:ListBucketMultipartUploads",
"s3:PutObjectRetention","s3:GetObjectRetention",
"s3:PutObjectLegalHold","s3:GetObjectLegalHold",
"s3:BypassGovernanceRetention"],
"Resource": ["arn:aws:s3:::veeam-repo/*"]
},
{
"Effect": "Allow",
"Action": ["s3:ListBucket","s3:ListBucketVersions","s3:GetBucketLocation",
"s3:GetBucketVersioning"],
"Resource": ["arn:aws:s3:::veeam-repo"]
}
]
}
```

```bash
rc admin policy create <your-alias> veeam-repo-rw <path-to-policy-file>
rc admin user add <your-alias> veeam <your-secret-key>
rc admin policy attach <your-alias> veeam-repo-rw --user veeam
```

Veeam verlangt HTTPS für den Objektspeicher. Beenden Sie TLS vor RustFS (z. B. mit Traefik oder Nginx) mit einem Zertifikat, dessen SAN den Endpunkt-Hostnamen abdeckt, und importieren Sie dieses Zertifikat in den Speicher **Trusted Root Certification Authorities** des Veeam-Servers.

## 2. RustFS-Repository in VBR hinzufügen

Gehen Sie in der VBR-Konsole zu **Backup Infrastructure → Backup Repositories → Add Repository → Object storage → S3 Compatible**:

1. Service point: Ihr RustFS-HTTPS-Endpunkt, Region: `us-east-1`.
2. Credentials: Access Key und Secret Key des Benutzers `veeam`.
3. Bucket: `veeam-repo`, Folder: `veeam`.
4. Optional: **Make backups immutable** aktivieren (das Object Lock des Buckets ist bereits aktiviert).

![Repository-Assistent: Bucket veeam-repo mit erkanntem Versioning und Object Lock](./images/veeam-repository-bucket.png)

Wenn Veeam meldet, dass die automatische Bucket-Bereitstellung mit Access Denied fehlschlägt, wählen Sie **Yes**, um sie zu deaktivieren und fortzufahren — der Bucket existiert bereits, und der IAM-Benutzer kann absichtlich keine Buckets anlegen.

Bei Erfolg wird das Repository als **S3-compatible** aufgeführt, und der belegte Speicherplatz entspricht dem Bucket-Inhalt:

![RustFS-Repository unter Backup Repositories als S3-compatible aufgeführt](./images/veeam-repository-added.png)

## 3. Geschützten Computer registrieren

Der Backup-Job allein installiert den Veeam Agent nicht. Verwenden Sie eine Protection Group:

1. **Inventory → Physical and Cloud Infrastructure → Add protection group…**
2. Typ **Individual computers**, fügen Sie die Maschine mit ihrem echten Hostnamen und lokalen Administrator-Anmeldedaten in der Form `HOSTNAME\user` hinzu.
3. Lassen Sie **Install Veeam Backup & Replication Agent** aktiviert und klicken Sie auf Apply.

:::note[Windows UAC]

Wenn der Agent-Push mit einem Zugriffsfehler fehlschlägt, setzen Sie `LocalAccountTokenFilterPolicy` auf dem Zielcomputer unter `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System` auf `1` und führen Sie erneut einen Rescan durch. Nach der Agent-Installation starten Sie die Maschine neu, sobald die Spalte Backup agent **Reboot required** anzeigt.

:::

## 4. Backup-Job ausführen

1. **Home → Backup Job → Windows computer…**
2. Computers: **From protection group**, Backup Mode: **Entire computer**.
3. Storage: Backup repository = **RustFS**, Aufbewahrung nach Bedarf.
4. Finish, dann klicken Sie mit der rechten Maustaste auf den Job und wählen **Start**.

Nach Abschluss des Jobs zeigt die Jobliste **Last Result: Success**, und der Restore Point erscheint unter **Home → Backups → Object Storage → RustFS Veeam Backup**:

![Job erfolgreich, Restore Point unter dem RustFS-Repository aufgeführt](./images/veeam-backup-job-success.png)

Prüfen Sie die Objekte in RustFS:

```bash
rc object find <your-alias>/veeam-repo/ | tail -1
```

Veeam speichert etwa 1 MiB große Datenblöcke unter `Veeam/Backup/veeam/Clients/{agent-id}/…`, jedes Objekt mit ETag und Version.

## 5. Dateien wiederherstellen

1. **Home → Backups → Object Storage → RustFS Veeam Backup → <computer>**.
2. Klicken Sie mit der rechten Maustaste auf den Restore Point → **Restore guest files…** → Browse.
3. Wählen Sie im Backup Browser eine Datei aus, stellen Sie sie in einen Zielordner wieder her und prüfen Sie den Inhalt.

![Dateiwiederherstellung aus dem RustFS-Backup über den Backup Browser](./images/veeam-restore-complete.png)

Die Wiederherstellung liest nur die Blöcke zurück, die die ausgewählte Datei enthalten — damit ist der gesamte Lesepfad gegen RustFS validiert.

## Fehlerbehebung

| Symptom | Lösung |
|---|---|
| "Backup to object storage requires a valid Enterprise edition license" | Installieren Sie eine Lizenz mit Objektspeicher-Backup (Trial oder kostenpflichtig); Community Edition kann solche Jobs nicht ausführen |
| "backup agent is missing" während des Jobs | Registrieren Sie die Maschine über eine Protection Group (Schritt 3); der Job-Assistent installiert keine Agents |
| Agent-Push schlägt mit Access Denied fehl | Setzen Sie `LocalAccountTokenFilterPolicy=1` auf dem Ziel; verwenden Sie den echten Hostnamen, nicht `localhost` |
| Spalte Backup agent zeigt "Reboot required" | Starten Sie die Maschine neu, um die Agent-Installation abzuschließen |
| Konsole zeigt HTTP 502 direkt nach dem Boot | Die Veeam-Dienste starten noch; wiederholen Sie, wenn `VeeamBackupSvc` und der PostgreSQL-Dienst Running sind |
| Folder-Liste im Assistenten ist leer | Die Folder-Auswahl listet bestehende Präfixe; legen Sie zuerst ein Platzhalter-Objekt unter dem Präfix an, dann Browse |
| Repository-Kapazität zeigt N/A | SOSAPI-Berichte sind für das Backup nicht erforderlich; der Support wird in [rustfs#1511](https://github.com/rustfs/rustfs/issues/1511) verfolgt |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions content/en/developer/integration/backup/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ Use **RustFS** as the object storage backend for backup tools that store reposit
- [Velero](./velero.md)
- [Kopia](./kopia.md)
- [Longhorn](./longhorn.md)
- [Veeam](./veeam.md)

Keep backup jobs in a dedicated bucket and prefix, and use credentials scoped to the required bucket operations.
3 changes: 2 additions & 1 deletion content/en/developer/integration/backup/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"kopia",
"longhorn",
"restic",
"velero"
"velero",
"veeam"
]
}
144 changes: 144 additions & 0 deletions content/en/developer/integration/backup/veeam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
---
title: "Veeam"
description: "Use RustFS as an S3-compatible backup repository for Veeam Backup & Replication, back up an entire computer, and restore files from the stored backup."
---

Veeam Backup & Replication (VBR) is an enterprise backup platform that stores backup data in S3-compatible object storage. This guide shows how to register RustFS as a VBR object storage repository, back up an entire Windows computer with the Veeam Agent, and restore a file from the stored backup.

You need a running RustFS instance reachable over HTTPS, a bucket dedicated to backups, a Windows machine with VBR 13 installed (4 vCPU and 8 GB RAM are a practical minimum), and a Veeam license that includes object storage backup.

:::note[License requirement]

Backup to object storage is an Enterprise-tier Veeam feature. VBR Community Edition can add and validate an S3 repository, but running a backup job to it requires an Enterprise license or the free 30-day evaluation key (Veeam Data Platform Trial Key).

:::

## Architecture

```mermaid
flowchart LR
Computer["Windows computer
(Veeam Agent)"] -->|SigV4 HTTPS| VBR["VBR server"]
VBR -->|S3 API| Traefik["Ingress / TLS"]
Traefik --> RustFS["RustFS"]
RustFS --> Bucket["veeam-repo
(versioning + Object Lock)"]
```

Veeam writes roughly 1 MiB backup blocks into the bucket through the S3 API during backup and reads back only the blocks that contain the requested data during a restore. The bucket prefix in this guide is `veeam`, and the bucket is `veeam-repo`.

## 1. Prepare the bucket and credentials

Create a dedicated bucket with versioning and Object Lock enabled. Versioning is a prerequisite for the Object Lock that Veeam immutability relies on:

```bash
rc bucket create <your-alias>/veeam-repo --with-lock
rc bucket version info <your-alias>/veeam-repo
```

Create a least-privilege policy scoped to the bucket. The policy intentionally omits `s3:CreateBucket`: Veeam offers automatic bucket provisioning, and declining it is the recommended posture when the bucket already exists.

```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject",
"s3:GetObjectVersion","s3:DeleteObjectVersion",
"s3:AbortMultipartUpload","s3:ListMultipartUploadParts",
"s3:ListBucketMultipartUploads",
"s3:PutObjectRetention","s3:GetObjectRetention",
"s3:PutObjectLegalHold","s3:GetObjectLegalHold",
"s3:BypassGovernanceRetention"],
"Resource": ["arn:aws:s3:::veeam-repo/*"]
},
{
"Effect": "Allow",
"Action": ["s3:ListBucket","s3:ListBucketVersions","s3:GetBucketLocation",
"s3:GetBucketVersioning"],
"Resource": ["arn:aws:s3:::veeam-repo"]
}
]
}
```

```bash
rc admin policy create <your-alias> veeam-repo-rw <path-to-policy-file>
rc admin user add <your-alias> veeam <your-secret-key>
rc admin policy attach <your-alias> veeam-repo-rw --user veeam
```

Veeam requires HTTPS for object storage. Terminate TLS in front of RustFS (for example with Traefik or Nginx) using a certificate whose SAN covers the endpoint hostname, and import that certificate into the Veeam server's **Trusted Root Certification Authorities** store.

## 2. Add the RustFS repository in VBR

In the VBR console, go to **Backup Infrastructure → Backup Repositories → Add Repository → Object storage → S3 Compatible**:

1. Service point: your RustFS HTTPS endpoint, Region: `us-east-1`.
2. Credentials: the `veeam` access key and secret key.
3. Bucket: `veeam-repo`, Folder: `veeam`.
4. Optionally enable **Make backups immutable** (the bucket's Object Lock is already enabled).

![Repository wizard: bucket veeam-repo with versioning and Object Lock detected](./images/veeam-repository-bucket.png)

When Veeam reports that automatic bucket provisioning fails with Access Denied, choose **Yes** to disable it and proceed — the bucket exists and the IAM user intentionally cannot create buckets.

On success, the repository is listed as **S3-compatible** with the used space matching the bucket contents:

![RustFS repository listed under Backup Repositories as S3-compatible](./images/veeam-repository-added.png)

## 3. Enroll the protected computer

The backup job alone does not install the Veeam agent. Use a protection group:

1. **Inventory → Physical and Cloud Infrastructure → Add protection group…**
2. Type **Individual computers**, add the machine with its real hostname and local administrator credentials in `HOSTNAME\user` form.
3. Keep **Install Veeam Backup & Replication Agent** enabled, then Apply.

:::note[Windows UAC]

If the agent push fails with an access error, set `LocalAccountTokenFilterPolicy` to `1` under `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System` on the target machine and rescan. After the agent installs, reboot the machine when the Backup agent column shows **Reboot required**.

:::

## 4. Run the backup job

1. **Home → Backup Job → Windows computer…**
2. Computers: **From protection group**, Backup Mode: **Entire computer**.
3. Storage: Backup repository = **RustFS**, retention as needed.
4. Finish, then right-click the job and select **Start**.

After the job completes, the job list shows **Last Result: Success** and the restore point appears under **Home → Backups → Object Storage → RustFS Veeam Backup**:

![Job success and the restore point listed with repository RustFS](./images/veeam-backup-job-success.png)

Verify the objects in RustFS:

```bash
rc object find <your-alias>/veeam-repo/ | tail -1
```

Veeam stores roughly 1 MiB data blocks under `Veeam/Backup/veeam/Clients/{agent-id}/…` with an ETag and a version on every object.

## 5. Restore files

1. **Home → Backups → Object Storage → RustFS Veeam Backup → <computer>**.
2. Right-click the restore point → **Restore guest files…** → Browse.
3. Pick a file in the Backup Browser, restore it to a target folder, and verify its content.

![File-level restore from the RustFS-backed backup via the Backup Browser](./images/veeam-restore-complete.png)

Restoring reads back only the blocks containing the selected file, which validates the full read path against RustFS.

## Troubleshooting

| Symptom | Fix |
|---|---|
| "Backup to object storage requires a valid Enterprise edition license" | Install a license that includes object storage (trial or paid); Community Edition cannot run object storage jobs |
| "backup agent is missing" during the job | Enroll the machine through a protection group (step 3); the job wizard does not push-install agents |
| Agent push fails with access denied | Set `LocalAccountTokenFilterPolicy=1` on the target; use the real hostname, not `localhost` |
| Backup agent column shows "Reboot required" | Reboot the machine to complete the agent installation |
| Console shows HTTP 502 right after boot | Veeam services are still starting; retry after `VeeamBackupSvc` and the PostgreSQL service are Running |
| Folder list is empty in the wizard | The folder picker lists existing prefixes; create a placeholder object under the prefix first, then Browse |
| Repository capacity shows N/A | SOSAPI reporting is not required for backup; support is tracked in [rustfs#1511](https://github.com/rustfs/rustfs/issues/1511) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions content/fr/developer/integration/backup/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ Utilisez **RustFS** comme backend de stockage objet pour les outils de sauvegard
- [Velero](./velero.md)
- [Kopia](./kopia.md)
- [Longhorn](./longhorn.md)
- [Veeam](./veeam.md)

Conservez les tâches de sauvegarde dans un compartiment et un préfixe dédiés, et utilisez des identifiants limités aux opérations de compartiment nécessaires.
3 changes: 2 additions & 1 deletion content/fr/developer/integration/backup/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"kopia",
"longhorn",
"restic",
"velero"
"velero",
"veeam"
]
}
Loading
Loading