n8n im Queue-Modus mit Redis, PostgreSQL-Persistenz und sauberem Prozess-Supervising — das unspektakuläre, zuverlässige Setup, das Neustarts und Lastspitzen übersteht. Die Automatisierungsschicht hint
Ein vollständiges Muster von Lab bis Produktion: k3s in Docker mit eingebettetem etcd, Rancher für das Management, MetalLB für Layer-2-LoadBalancer-IPs, replizierter Longhorn-Speicher und Traefik-Ingr
Selbst gehosteter, S3-kompatibler Objektspeicher für Backups: MinIO hinter einem Nginx-Proxy, dazu ein rclone-basierter Backup-Agent mit versionierten Buckets. Ihre Offsite-Backups ohne Cloud-Rechnung.
Ein Deployment-Guide mit lauffähigen Beispielen — kein herunterladbares Produkt. Alles unten ist die tatsächlich eingesetzte Konfiguration, gekürzt auf das, worauf es ankommt.
services:
minio:
image: minio/minio:${MINIO_VERSION:-RELEASE.2025-09-07T16-13-09Z}
container_name: minio-server
restart: unless-stopped
command: server /data --console-address ":9001"
ports:
- ${MINIO_API_PORT:-9000}:9000
- ${MINIO_CONSOLE_PORT:-9001}:9001
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-change-me}
MINIO_DOMAIN: ${MINIO_DOMAIN:-minio.example.com}
MINIO_BROWSER: ${MINIO_BROWSER:-on}
MINIO_PROMETHEUS_AUTH_TYPE: public
volumes:
- minio-data:/data
- ./config/minio:/etc/minio:ro
healthcheck:
test:
- CMD
- curl
- -f
- http://localhost:9000/minio/health/live
interval: 15s
timeout: 5s
retries: 5
start_period: 10s
networks:
- storage
backup-agent:
image: minio/mc:${MC_VERSION:-RELEASE.2025-08-13T08-35-41Z}
container_name: minio-backup
restart: unless-stopped
entrypoint:
- /bin/sh
- -c
command:
- |
# Configure alias for local MinIO
mc alias set local http://minio:9000 \
${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD}
# Configure alias for remote backup (if configured)
if [ -n "${BACKUP_ENDPOINT}" ]; then
mc alias set remote ${BACKUP_ENDPOINT} \
${BACKUP_ACCESS_KEY} ${BACKUP_SECRET_KEY}
fi
# Run backup script on schedule
while true; do
echo "[$$] Running backup at $$(date)"
sh /config/backup.sh 2>&1 || echo "Backup failed"
sleep ${BACKUP_INTERVAL:-86400}
done
volumes:
- ./config:/config:ro
depends_on:
minio:
condition: service_healthy
networks:
- storage
Auszug — minio, backup-agent aus der Compose-Datei. Die übrigen Services (proxies, init jobs, exporters) folgen demselben Muster und binden ihre Konfiguration aus einem config/-Verzeichnis ein.
Kopieren Sie .env.example zu .env und setzen Sie mindestens:
MINIO_VERSION=latest
MINIO_API_PORT=9000
MINIO_CONSOLE_PORT=9001
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=change-me
MINIO_DOMAIN=minio.example.com
.env setzen — niemals die Beispielwerte übernehmenDie klassische Regel — drei Kopien, zwei Medien, eine extern — landet sauber auf diesem Stack. Kopie eins sind die Live-Daten dort, wo sie entstehen. Kopie zwei ist der MinIO-Bucket auf der eigenen Hardware, geschrieben vom rclone-Agent nach Zeitplan. Kopie drei ist der externe Push: Weil der Agent S3 spricht, bekommt dieselbe Job-Definition ein zweites Ziel — irgendein externes S3 — und dieselben Retention-Regeln gelten für beide. Zwei Medien sind damit natürlich erfüllt (lokale Platte und Objektspeicher), und die externe Kopie macht aus einem Hausbrand oder Ransomware-Ereignis keinen Totalverlust mehr, sondern eine unbequeme Wiederherstellung. Der wunde Punkt ejedes 3-2-1-Setups ist nie das Kopieren; es sind die Retention-Policy, die niemand aufgeschrieben hat, und der Restore, den niemand geprobt hat.
Versionierung verändert, was Löschen bedeutet. Aktiviert bewahrt jedes Überschreiben das alte Objekt als Nicht-mehr-aktuelle Version, und jedes Löschen schreibt nur einen Delete-Marker, statt Daten zu entfernen — Wiederherstellen ist dann nur, den Marker zu entfernen oder eine ältere Version zurückzukopieren. Der Preis ist Speicherwachstum, das Lifecycle-Regeln einzäunen: Nicht-aktuelle Versionen für ein festes Fenster behalten (90 Tage sind ein vernünftiger Default für Backup-Buckets) und Delete-Marker auslaufen lassen, sobald keine Versionen mehr existieren. Der rclone-Agent setzt diese Regeln pro Bucket — Retention wird damit Konfiguration im Git statt eines Guten-Vorsatzes. Eine Angewohnheit, die sich lohnt: monatlich das Bucket-Wachstum prüfen, denn unbegrenzte alte Versionen sind der stillste Plattenfüller in einem selbst gehosteten Setup.
Warum selbst gehostetes S3 statt Backblaze B2 oder AWS S3? Drei Gründe: Datensouveränität (die Kopien verlassen nie die eigene Hardware), keine Egress-Gebühren bei Restores und LAN-geschwindige Wiederherstellung. Der Preis ist, dass Sie die Dauerhaftigkeit selbst verantworten — genau deshalb gehören ein externer Kopie-Ort oder versionierte Buckets dazu.
Warum MinIO statt einfach auf ein Dateisystem zu sichern? Die S3-API ist das De-facto-Interface der Backup-Welt — rclone, restic und Veeam sprechen sie nativ. Versionierte Buckets, Lifecycle-Regeln und Bucket-Policies kommen aus dem Protokoll statt aus handgestrickten Skripten, und ein späterer Wechsel zu Cloud-S3 ist ein Endpoint-Wechsel.
Wie schützt Bucket-Versionierung vor Ransomware?
Mit aktivierter Versionierung erzeugt ein Überschreiben oder Löschen nur
einen neuen Versionsmarker, statt das alte Objekt zu zerstören. Verschlüsselte
Dateien sind dann bloß die neueste Version; die intakten Vorgänger bleiben
wiederherstellbar, solange der Angreifer nicht an die Root-Credentials kommt —
deshalb gehört das Root-Passwort in die .env, nicht in die Config des
Backup-Tools.
Was macht der rclone-Agent konkret? Er läuft nach Zeitplan, synchronisiert oder kopiert von den Quellen in versionierte MinIO-Buckets und wendet Retention auf alte Versionen an. Weil er S3 spricht, pusht derselbe Job auch zu jedem externen S3 — eine Config deckt lokale und externe Kopien.
Ein Guide, kein Produkt. Diese Seite ist Deployment-Dokumentation mit lauffähigen Beispielen — kein Zip, kein Download, kein Supportvertrag. Sie adaptieren die Muster auf Ihre eigene Umgebung, und das Ergebnis gehört Ihnen.
Wenn Sie das produktionsreif in Ihrer Infrastruktur wollen: Backup-Architektur dieser Art ist Teil meines Infrastruktur-Consultings — Details auf der Consulting-Seite.