Off-Site-Backup mit Duplicati auf Unraid
Überblick
Ich betreibe ein Unraid-basiertes NAS-System. Die darauf gespeicherten Daten möchte ich in regelmässigen Abständen automatisch auf ein zweites NAS-System an einem anderen Standort sichern.
Die folgende Beschreibung zeigt, wie ich dieses System einrichte.
Komponentenübersicht
Zwei Unraid-basierte Systeme (lokaler Speicher und Backup-Server)
Docker-Container (auf jedem System beide für ein bidirektionales Backup):
- Duplicati
- SFTP-Server
Docker auf Unraid
Obwohl viele How-to-Artikel empfehlen, das Unraid Community Applications Plugin
zu verwenden, ziehe ich es vor, die Unraid-Images selbst auszuwählen und die Kontrolle über die Konfiguration zu behalten. Daher verwende ich das Unraid Community Applications Plugin
nicht.
Docker-Container: SFTP-Server
Quellcode des Docker-Images: https://github.com/atmoz/sftp
Dieses Image bietet ein einfaches, aber konfigurierbares Setup eines SFTP-Servers.
Es ist wichtig, einen eigenen SSH-Host-Schlüssel bereitzustellen, um Probleme bei der Verwendung des SFTP-Servers als Duplicati-Ziel zu vermeiden.
Obwohl Duplicati die Authentifizierung über SSH-Schlüssel unterstützt, habe ich es nicht zum Laufen gebracht. Am Ende habe ich die Authentifizierung per Benutzername und Passwort verwendet.
Beispielkonfiguration
Port-Zuordnungen:
App | Host |
---|---|
22 |
10500 |
Der Host-Port muss auf dem Router gemappt werden.
Volumen-Mappings:
App | Host |
---|---|
/home/bu/backup |
/path_to_backup |
/etc/ssh/ssh_host_ed25519_key |
/path_to_c1/keys/ssh_host_ed25519_key |
/etc/ssh/ssh_host_rsa_key |
/path_to_c1/keys/ssh_host_rsa_key |
/etc/sftp/users.conf |
/path_to_c1/users.conf |
/path_to_backup
: Pfad zum Speicherort der Sicherungsdateien
/path_to_c1
: Pfad zu den Konfigurationsdateien von Container 1
/path_to_c1
und /path_to_backup
beginnen normalerweise mit /mnt/user
Inhalt von users.conf
: bu:ThisIsATopSecretPassword
Docker-Container: Duplicati
Quellcode des Docker-Images: https://github.com/linuxserver/docker-duplicati
Dieses Image stellt eine konfigurierbare Instanz von Duplicati bereit. Duplicati bietet verschlüsselte, inkrementelle Backups auf einem externen Speicher, z. B. einem SFTP-Server.
Beispielkonfiguration
Port-Zuordnungen:
App | Host |
---|---|
8200 |
8200 |
Der Host-Port muss auf dem Router gemappt werden.
Volume-Mappings:
App | Host |
---|---|
/source/documents |
/path_to_documents |
/config |
/path_to_c2/config |
/path_to_documents
: Pfad zum Speicherort der Dateien, die Sie sichern möchten
Sie können so viele Quellverzeichnisse hinzufügen, wie Sie möchten.
/Pfad_zu_c2
: Pfad zu den Konfigurationsdateien von Container 2
/path_to_documents
und /path_to_c2
beginnen normalerweise mit /mnt/user
Erreichen des Backup-Servers - DNS
Sie können den myfritz.net-Dienst nutzen, um eine Subdomain auf myfritz.net
zu erhalten, die auf Ihren AVM-Router zeigt. Für die Schönheit können Sie einen CNAME-Eintrag verwenden, der auf die myfritz-Subdomain zeigt.
Sie können auch jeden anderen dynamischen DNS-Dienst verwenden.
Beispielkonfiguration
some_system.myfritz.net
zeigt auf die öffentliche IP des Servers. Der A-Record wird von der Fritz Box erneuert, nachdem er auf myfritz.net registriert wurde.- Der Eintrag
location1.example.org
zeigt auf die Subdomainmyfritz.net
. Hierfür wird ein CNAME-Eintrag verwendet.
Erreichen des Backup-Servers - Port-Mapping
Sie müssen einen Port auf Ihrem Router auf den SFTP-Server mappen.
Beispielkonfiguration
- Port
20
auflocation1.example.org
zeigt auf Port10500
auf dem SFTP-Server-Container.
Duplicati-Backup-Aufgaben einrichten
Verwenden Sie bei einem geplanten Auftrag die folgenden Optionen für das Sicherungsziel:
Option | Wert |
---|---|
Speichertyp | SFTP (SSH) |
Server und Port | location1.example.org:20 |
Pfad auf dem Server | /home/bu/backup |
Benutzernamen | bu |
Passwort | ThisIsATopSecretPassword |
Wenn Sie mehrere Sicherungsquellen haben, erstellen Sie für jede Quelle einen separaten Auftrag. Falls Sie eine vollständige Sicherung benötigen, können Sie die wichtigen Quellen zuerst wiederherstellen.
Verwenden Sie für jede Aufgabe ein eigenes Verzeichnis auf dem Backup-Server, um die Dinge sauber zu halten!
Risikoanalyse
Datendiebstahl auf lokalem Server
Ein kleines zusätzliches Risiko entsteht durch diese Einrichtung, da Duplicati auf Ihre Quellen zugreifen kann.
Abhilfe: Sorgen Sie für eine korrekte Konfiguration von Duplicati, z.B. verwenden Sie einen Passwortschutz für den Zugriff auf die Duplicati-Web-Oberfläche.
Datendiebstahl auf dem Backup-Server
Solange Sie die richtigen Einstellungen verwenden, werden die Backup-Dateien auf Duplicati verschlüsselt, bevor sie auf den Backup-Server übertragen werden.
Abhilfe: Stellen Sie sicher, dass die SSH-Authentifizierungsinformationen und die Verschlüsselung des Backups a) getrennt und b) an einem sicheren Ort gespeichert werden.
Datenverlust durch Defekt auf lokalem Server
Der Sinn dieser Einrichtung ist es, dieses Risiko zu mindern!
Das Wichtigste: Prüfen Sie, ob Sie eine gelöschte Datei aus dem Backup wiederherstellen können. Verlassen Sie sich nicht blind auf ein Backup-System, von dem Sie sich nicht überzeugt haben, dass es funktioniert.
Datenverlust durch fehlenden Zugriff auf das Backup
Für den Fall, dass Ihr lokales System komplett zerstört wird und Sie kein Backup der wichtigen Teile der Konfiguration haben, können Sie nichts aus den Backups wiederherstellen.
Abhilfe:
- Stellen Sie sicher, dass Sie die Passphrase für die Backup-Verschlüsselung an einem sicheren Ort gespeichert haben
- Stellen Sie sicher, dass Sie Zugriff auf die Sicherungsdateien haben
Datenverlust durch Defekt am Backup-Server
Falls der Backup-Server komplett zerstört wird, ist Ihr Backup verloren.
Abhilfe:
- Verwenden Sie ein zusätzliches Backup (z.B. Offline-Backup in Form einer Festplatte)
- Prüfen Sie regelmässig, ob der Backup-Server noch aktiv ist
Datenverlust durch Verschlüsselungstrojaner
Falls Sie einen Verschlüsselungstrojaner auf Ihrem System haben, können Ihre Daten verschlüsselt werden. Je nach Trojaner können Sie die Verschlüsselung erst nach einigen Tagen bemerken.
Abhilfe:
- Stellen Sie sicher, dass Sie Duplicati so konfigurieren, dass alte Backups auf dem Backup-System verbleiben
- Stellen Sie sicher, dass Sie keine Verbindung zum SFTP-Backup-Server auf einem anderen System als dem Duplicati-Container herstellen