Sichere deine Home Assistant Backups auf jedem S3-kompatiblen Speicher.
Diese Integration erweitert die eingebaute Backup-Funktion von Home Assistant um Unterstützung für jeden S3-kompatiblen Speicher, nicht nur AWS S3. Funktioniert mit:
- ☁️ AWS S3
- 🗄️ MinIO
- 💾 Wasabi
- 🔒 Backblaze B2
- 🌊 DigitalOcean Spaces
- ☁️ Cloudflare R2
- 🏢 Synology C2 Object Storage
- 🚗 Garage (verteilter selbst gehosteter Speicher)
- 🖥️ Selbst gehosteter S3-kompatibler Speicher
- Und jeder andere S3-kompatible Anbieter!
- Installation über HACS oder manuell (siehe Installation)
- Home Assistant neustarten
- Einstellungen → Geräte & Dienste → Integration hinzufügen
- Nach "BAUERGROUP - S3 Compatible Backup" suchen
- Zugangsdaten eingeben:
- Access Key ID
- Secret Access Key
- Bucket-Name (muss bereits existieren!)
- Endpoint URL
- Region
- Einstellungen → System → Backups → S3-Speicher als Backup-Ziel auswählen
- 📦 Vollständige Backup-Unterstützung - Hochladen, Herunterladen, Auflisten und Löschen von Backups
- 🔄 Multipart-Upload - Effiziente Verarbeitung großer Backups (>20MB)
- 🌍 Region-Unterstützung - Konfiguriere jede Region für deinen S3-Endpunkt
- 🔗 Benutzerdefinierte Endpunkte - Funktioniert mit jeder S3-kompatiblen API
- 🔐 Sicher - Verwendet Zugangsdaten (Access Key ID + Secret Access Key)
- 🚀 Asynchron - Nicht-blockierende Operationen mit aiobotocore
- 💾 Caching - Effiziente Backup-Auflistung mit 5-Minuten-Cache
- 🔑 Re-Authentifizierung - Automatische Aufforderung bei abgelaufenen Zugangsdaten
- ⚙️ Rekonfiguration - Einstellungen ändern ohne die Integration zu entfernen
- Öffne HACS in Home Assistant
- Gehe zu Integrationen
- Klicke auf das ⋮ Menü → Benutzerdefinierte Repositories
- Repository hinzufügen:
- URL:
https://github.com/bauer-group/IP-HomeassistantS3CompatibleBackup - Kategorie: Integration
- URL:
- Klicke Installieren
- Home Assistant neustarten
cd /config/custom_components
git clone https://github.com/bauer-group/IP-HomeassistantS3CompatibleBackup.git bauergroup_s3compatiblebackupDann Home Assistant neustarten.
- Einstellungen → Geräte & Dienste → Integration hinzufügen
- Suche nach "S3 Compatible Backup"
- Konfiguriere:
| Feld | Beschreibung | Beispiel |
|---|---|---|
| Access Key ID | Dein S3 Access Key | AKIAIOSFODNN7EXAMPLE |
| Secret Access Key | Dein S3 Secret Key | wJalrXUtnFEMI/K7MDENG/... |
| Bucket-Name | Ziel-Bucket (muss existieren) | meine-ha-backups |
| Endpoint URL | S3-kompatibler Endpunkt | https://s3.eu-central-1.amazonaws.com |
| Region | Speicher-Region | eu-central-1 |
| Speicher-Präfix | Stammordner für Backups (optional) | homeassistant |
Nach der Konfiguration erscheint die Integration automatisch als Backup-Speicherort in Home Assistant:
- Gehe zu Einstellungen → System → Backups
- Erstelle ein neues Backup
- Wähle deinen S3-Speicher als Backup-Ziel
- Dein Backup wird in deinen S3-Bucket hochgeladen
Backups werden in einer Ordnerstruktur innerhalb deines Buckets organisiert:
mein-bucket/
└── homeassistant/ # Speicher-Präfix (konfigurierbar)
└── backups/ # Fester Unterordner
├── Home_Assistant_2025-12-02.tar
├── Home_Assistant_2025-12-02.metadata.json
├── Home_Assistant_2025-12-01.tar
├── Home_Assistant_2025-12-01.metadata.json
└── ...
Jedes Backup besteht aus zwei Dateien:
{backup-name}.tar- Das eigentliche Backup-Archiv{backup-name}.metadata.json- Backup-Metadaten für Home Assistant
Der Speicher-Präfix ermöglicht:
- Backups von anderen Daten im selben Bucket zu trennen
- Mehrere Home Assistant Instanzen mit verschiedenen Präfixen zu betreiben
- Einen Bucket für verschiedene Anwendungen zu teilen
Wenn du deine S3-Konfiguration ändern musst (Bucket, Endpunkt, Zugangsdaten, etc.):
- Gehe zu Einstellungen → Geräte & Dienste
- Finde BAUERGROUP - S3 Compatible Backup
- Klicke auf das ⋮ Menü → Neu konfigurieren
- Aktualisiere deine Einstellungen und speichere
Wenn deine Zugangsdaten ablaufen oder ungültig werden, fordert Home Assistant automatisch zur erneuten Authentifizierung auf:
- Du siehst eine Benachrichtigung, dass die Authentifizierung fehlgeschlagen ist
- Klicke auf die Benachrichtigung oder gehe zu Einstellungen → Geräte & Dienste
- Klicke auf Neu konfigurieren bei der Integration
- Gib deine neue Access Key ID und Secret Access Key ein
- Gehe zur AWS S3 Konsole
- Klicke Bucket erstellen
- Gib einen eindeutigen Bucket-Namen ein (z.B.
meine-homeassistant-backups) - Wähle deine bevorzugte Region (z.B.
eu-central-1) - Lasse Gesamten öffentlichen Zugriff blockieren aktiviert (empfohlen)
- Klicke Bucket erstellen
- Gehe zur IAM Konsole
- Klicke Benutzer → Benutzer erstellen
- Gib einen Benutzernamen ein (z.B.
homeassistant-backup) - Klicke Weiter
- Wähle Richtlinien direkt anfügen
- Klicke Richtlinie erstellen und verwende das JSON unten
- Füge die erstellte Richtlinie dem Benutzer hinzu
- Klicke Benutzer erstellen
- Gehe zum Benutzer → Sicherheitsanmeldeinformationen → Zugriffsschlüssel erstellen
- Wähle Anwendung, die außerhalb von AWS ausgeführt wird
- Speichere Access Key ID und Secret Access Key
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "HomeAssistantBackupPermissions",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::DEIN-BUCKET-NAME",
"arn:aws:s3:::DEIN-BUCKET-NAME/*"
]
}
]
}Hinweis: Ersetze
DEIN-BUCKET-NAMEdurch deinen tatsächlichen Bucket-Namen.
| Feld | Wert |
|---|---|
| Access Key ID | AKIA... (von IAM) |
| Secret Access Key | ... (von IAM) |
| Bucket-Name | meine-homeassistant-backups |
| Endpoint URL | https://s3.eu-central-1.amazonaws.com |
| Region | eu-central-1 |
AWS S3 Endpoint-URLs nach Region:
| Region | Endpoint URL |
|---|---|
| US East (N. Virginia) | https://s3.us-east-1.amazonaws.com |
| US West (Oregon) | https://s3.us-west-2.amazonaws.com |
| EU (Frankfurt) | https://s3.eu-central-1.amazonaws.com |
| EU (Irland) | https://s3.eu-west-1.amazonaws.com |
| Asien-Pazifik (Tokio) | https://s3.ap-northeast-1.amazonaws.com |
| Asien-Pazifik (Sydney) | https://s3.ap-southeast-2.amazonaws.com |
Vollständige Liste: AWS S3 Endpunkte
MinIO ist ein leistungsstarker, S3-kompatibler Objektspeicher, den du selbst hosten kannst.
Docker:
docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
-v /pfad/zu/daten:/data \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
minio/minio server /data --console-address ":9001"Docker Compose:
version: '3.8'
services:
minio:
image: minio/minio
container_name: minio
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./minio-data:/data
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
command: server /data --console-address ":9001"- Öffne die MinIO Konsole unter
http://dein-server:9001 - Melde dich mit den Root-Zugangsdaten an
- Gehe zu Buckets → Bucket erstellen
- Gib den Bucket-Namen ein (z.B.
homeassistant-backups) - Gehe zu Access Keys → Access Key erstellen
- Speichere Access Key und Secret Key
| Feld | Wert |
|---|---|
| Access Key ID | dein-access-key |
| Secret Access Key | dein-secret-key |
| Bucket-Name | homeassistant-backups |
| Endpoint URL | http://dein-minio-server:9000 |
| Region | us-east-1 (Standard für MinIO) |
Tipp: Für HTTPS konfiguriere MinIO mit TLS-Zertifikaten oder verwende einen Reverse Proxy.
Wasabi bietet Hot Cloud Storage ohne Egress-Gebühren.
- Melde dich bei der Wasabi Konsole an
- Klicke Bucket erstellen
- Gib Bucket-Name ein und wähle Region
- Klicke Bucket erstellen
- Gehe zu Access Keys → Neuen Access Key erstellen
- Lade die Zugangsdaten herunter oder kopiere sie
| Feld | Wert |
|---|---|
| Access Key ID | dein-wasabi-access-key |
| Secret Access Key | dein-wasabi-secret-key |
| Bucket-Name | dein-bucket-name |
| Endpoint URL | https://s3.eu-central-1.wasabisys.com |
| Region | eu-central-1 |
Wasabi Endpoint-URLs nach Region:
| Region | Endpoint URL |
|---|---|
| US East 1 (N. Virginia) | https://s3.us-east-1.wasabisys.com |
| US East 2 (N. Virginia) | https://s3.us-east-2.wasabisys.com |
| US Central 1 (Texas) | https://s3.us-central-1.wasabisys.com |
| US West 1 (Oregon) | https://s3.us-west-1.wasabisys.com |
| EU Central 1 (Amsterdam) | https://s3.eu-central-1.wasabisys.com |
| EU Central 2 (Frankfurt) | https://s3.eu-central-2.wasabisys.com |
| EU West 1 (London) | https://s3.eu-west-1.wasabisys.com |
| EU West 2 (Paris) | https://s3.eu-west-2.wasabisys.com |
| AP Northeast 1 (Tokio) | https://s3.ap-northeast-1.wasabisys.com |
| AP Northeast 2 (Osaka) | https://s3.ap-northeast-2.wasabisys.com |
| AP Southeast 1 (Singapur) | https://s3.ap-southeast-1.wasabisys.com |
| AP Southeast 2 (Sydney) | https://s3.ap-southeast-2.wasabisys.com |
Backblaze B2 ist eine günstige Cloud-Speicherlösung mit S3-kompatibler API.
- Melde dich bei Backblaze B2 an
- Klicke Bucket erstellen
- Gib einen eindeutigen Bucket-Namen ein
- Setze Dateien im Bucket sind: auf Privat
- Klicke Bucket erstellen
- Notiere den Endpunkt (z.B.
s3.us-west-004.backblazeb2.com)
- Gehe zu App Keys → Neuen Application Key hinzufügen
- Gib einen Namen ein (z.B.
homeassistant-backup) - Wähle Zugriff auf Bucket(s) erlauben: deinen Bucket
- Aktiviere diese Fähigkeiten:
listBucketslistFilesreadFileswriteFilesdeleteFiles
- Klicke Neuen Key erstellen
- Wichtig: Kopiere den
applicationKeysofort (wird nur einmal angezeigt!) - Notiere die
keyID(das ist deine Access Key ID)
| Feld | Wert |
|---|---|
| Access Key ID | keyID vom Application Key |
| Secret Access Key | applicationKey vom Application Key |
| Bucket-Name | dein-bucket-name |
| Endpoint URL | https://s3.us-west-004.backblazeb2.com |
| Region | us-west-004 |
Wichtig: Die Region muss zum Endpunkt passen. Extrahiere sie aus der Endpunkt-URL (z.B.
s3.us-west-004.backblazeb2.com→ Region istus-west-004).
DigitalOcean Spaces ist ein S3-kompatibler Objektspeicherdienst.
- Melde dich bei DigitalOcean an
- Gehe zu Spaces Object Storage → Space erstellen
- Wähle eine Rechenzentrumsregion
- Wähle Dateiauflistung einschränken (empfohlen)
- Gib einen eindeutigen Namen ein
- Klicke Space erstellen
- Gehe zu API → Spaces Keys → Neuen Key generieren
- Gib einen Namen ein und klicke Key generieren
- Kopiere Key und Secret
| Feld | Wert |
|---|---|
| Access Key ID | DO... (dein Spaces Key) |
| Secret Access Key | ... (dein Spaces Secret) |
| Bucket-Name | dein-space-name |
| Endpoint URL | https://fra1.digitaloceanspaces.com |
| Region | fra1 |
DigitalOcean Spaces Endpunkte:
| Region | Endpoint URL |
|---|---|
| New York (NYC3) | https://nyc3.digitaloceanspaces.com |
| San Francisco (SFO3) | https://sfo3.digitaloceanspaces.com |
| Amsterdam (AMS3) | https://ams3.digitaloceanspaces.com |
| Singapur (SGP1) | https://sgp1.digitaloceanspaces.com |
| Frankfurt (FRA1) | https://fra1.digitaloceanspaces.com |
| Sydney (SYD1) | https://syd1.digitaloceanspaces.com |
Cloudflare R2 ist ein S3-kompatibler Objektspeicher ohne Egress-Gebühren.
- Melde dich beim Cloudflare Dashboard an
- Gehe zu R2 Object Storage → Bucket erstellen
- Gib einen Bucket-Namen ein
- Klicke Bucket erstellen
- Gehe zu R2 Object Storage → R2 API-Tokens verwalten
- Klicke API-Token erstellen
- Wähle Berechtigungen:
- Object Read & Write für deinen Bucket
- Klicke API-Token erstellen
- Kopiere Access Key ID und Secret Access Key
- Finde deine Account ID in der Cloudflare Dashboard-URL oder auf der R2-Übersichtsseite
| Feld | Wert |
|---|---|
| Access Key ID | deine-r2-access-key-id |
| Secret Access Key | dein-r2-secret-access-key |
| Bucket-Name | dein-bucket-name |
| Endpoint URL | https://<ACCOUNT_ID>.r2.cloudflarestorage.com |
| Region | auto |
Hinweis: Ersetze
<ACCOUNT_ID>durch deine Cloudflare Account ID.
Garage ist ein leichtgewichtiges, selbst gehostetes, geo-verteiltes Speichersystem mit S3-kompatibler API. Es ist für Self-Hosting und kleine Deployments konzipiert.
Docker:
docker run -d \
--name garage \
-p 3900:3900 \
-p 3901:3901 \
-p 3902:3902 \
-v /pfad/zu/garage/data:/var/lib/garage/data \
-v /pfad/zu/garage/meta:/var/lib/garage/meta \
-v /pfad/zu/garage.toml:/etc/garage.toml \
dxflrs/garage:latestDocker Compose:
version: '3.8'
services:
garage:
image: dxflrs/garage:latest
container_name: garage
ports:
- "3900:3900" # S3 API
- "3901:3901" # RPC
- "3902:3902" # Web/Admin
volumes:
- ./garage/data:/var/lib/garage/data
- ./garage/meta:/var/lib/garage/meta
- ./garage.toml:/etc/garage.toml# Bucket erstellen
garage bucket create homeassistant-backups
# API-Schlüssel erstellen
garage key create homeassistant-backup-key
# Berechtigungen für den Bucket vergeben
garage bucket allow homeassistant-backups --read --write --key homeassistant-backup-key| Feld | Wert |
|---|---|
| Access Key ID | GK... (deine Garage Key ID) |
| Secret Access Key | ... (dein Garage Secret Key) |
| Bucket-Name | homeassistant-backups |
| Endpoint URL | http://dein-garage-server:3900 |
| Region | garage |
Wichtig: Die Region muss auf
garagegesetzt werden (oder die Region, die in deinergarage.tomlkonfiguriert ist). Die Verwendung einer anderen Region (wieus-east-1) führt zu einem "invalid_credentials"-Fehler mit der Meldung:Authorization header malformed, unexpected scope.Falls du Fehler wie
unexpected scope: 20251215/us-east-1/s3/aws4_requestsiehst, ändere die Region vonus-east-1aufgarage.
Synology C2 bietet S3-kompatiblen Cloud-Speicher.
- Melde dich bei Synology C2 Object Storage an
- Erstelle einen neuen Bucket
- Notiere die Endpunkt-URL für deine Region
- Gehe zu deinen Kontoeinstellungen
- Erstelle neue Zugangsdaten
- Speichere Access Key und Secret Key
| Feld | Wert |
|---|---|
| Access Key ID | dein-c2-access-key |
| Secret Access Key | dein-c2-secret-key |
| Bucket-Name | dein-bucket-name |
| Endpoint URL | https://eu-002.s3.synologyc2.net |
| Region | eu-002 |
Synology C2 Endpunkte:
| Region | Endpoint URL |
|---|---|
| Europa | https://eu-002.s3.synologyc2.net |
| Nordamerika | https://us-001.s3.synologyc2.net |
| Taiwan | https://tw-001.s3.synologyc2.net |
Für alle Anbieter benötigen deine Zugangsdaten diese Berechtigungen:
| Berechtigung | Zweck |
|---|---|
s3:PutObject |
Backup-Dateien hochladen |
s3:GetObject |
Backups herunterladen/wiederherstellen |
s3:DeleteObject |
Alte Backups löschen |
s3:ListBucket |
Verfügbare Backups auflisten |
s3:AbortMultipartUpload |
Fehlgeschlagene Uploads abbrechen |
s3:ListMultipartUploadParts |
Multipart-Uploads fortsetzen |
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "HomeAssistantBackupPermissions",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::DEIN-BUCKET-NAME",
"arn:aws:s3:::DEIN-BUCKET-NAME/*"
]
}
]
}Sicherheits-Best-Practice: Verwende immer die minimal erforderlichen Berechtigungen. Erstelle einen dedizierten Benutzer/Key für Home Assistant Backups.
- Überprüfe, ob Access Key ID und Secret Access Key korrekt sind
- Stelle sicher, dass die Zugangsdaten die erforderlichen Berechtigungen haben
- Prüfe, ob die Zugangsdaten nicht abgelaufen oder widerrufen sind
- Überprüfe, ob die Endpoint-URL korrekt und erreichbar ist
- Prüfe deine Netzwerkverbindung und Firewall-Regeln
- Bei selbst gehosteten Lösungen (MinIO) stelle sicher, dass der Server läuft
- Bucket-Namen müssen kleingeschrieben sein
- Bucket-Namen müssen zwischen 3-63 Zeichen lang sein
- Bucket-Namen dürfen nur Buchstaben, Zahlen und Bindestriche enthalten
- Der Bucket muss bereits existieren (diese Integration erstellt keine Buckets)
- Stelle sicher, dass die URL mit
http://oderhttps://beginnt - Prüfe auf Tippfehler in der Endpoint-URL
- Überprüfe, ob die Region zum Endpunkt passt
- Warte bis zu 5 Minuten (Backup-Liste wird gecacht)
- Prüfe die Home Assistant Logs auf Fehler
- Überprüfe, ob der Bucket
.metadata.json-Dateien enthält
Füge zu configuration.yaml hinzu:
logger:
default: info
logs:
custom_components.bauergroup_s3compatiblebackup: debug
aiobotocore: debug
botocore: debugDu kannst deine S3-Verbindung mit der AWS CLI testen:
# AWS CLI installieren
pip install awscli
# Zugangsdaten konfigurieren
aws configure --profile homeassistant
# Gib Access Key ID, Secret Access Key und Region ein
# Bucket-Auflistung testen
aws s3 ls s3://dein-bucket-name --profile homeassistant --endpoint-url https://deine-endpoint-url
# Datei-Upload testen
echo "test" > test.txt
aws s3 cp test.txt s3://dein-bucket-name/test.txt --profile homeassistant --endpoint-url https://deine-endpoint-url
# Datei-Download testen
aws s3 cp s3://dein-bucket-name/test.txt test-download.txt --profile homeassistant --endpoint-url https://deine-endpoint-url
# Aufräumen
aws s3 rm s3://dein-bucket-name/test.txt --profile homeassistant --endpoint-url https://deine-endpoint-url
rm test.txt test-download.txt| Anbieter | Kostenlose Stufe | Egress-Gebühren | Min. Speichergebühr | S3-kompatibel |
|---|---|---|---|---|
| AWS S3 | 5 GB (12 Monate) | Ja | Nein | Nativ |
| Backblaze B2 | 10 GB | Kostenlos bis 3x Speicher | Nein | Ja |
| Wasabi | Nein | Nein | Ja (1 TB min) | Ja |
| Cloudflare R2 | 10 GB | Nein | Nein | Ja |
| DigitalOcean Spaces | Nein | Ja | 5$/Monat | Ja |
| MinIO | Selbst gehostet | N/A | N/A | Ja |
| Garage | Selbst gehostet | N/A | N/A | Ja |
MIT-Lizenz - siehe LICENSE Datei für Details.
Beiträge sind willkommen! Bitte eröffne ein Issue oder einen Pull Request.