In diesem Blogpost zeige ich Dir, wie Du mithilfe eines Raspberry Pi Snapshots von Digital Ocean Droplets automatisiert erstellen kannst. Die Snapshots helfen Dir dabei, Sicherungen Deiner Droplets zu machen, ohne auf kostenpflichtige Backups zurückgreifen zu müssen. Wir nutzen dafür einen Cronjob, der täglich um 2 Uhr nachts läuft und Snapshots erstellt. Zusätzlich legen wir fest, wie viele alte Snapshots behalten werden, bevor der älteste gelöscht wird. Zum Schluss erfährst Du auch, wie Du den API-Schlüssel bei Digital Ocean korrekt einrichtest, damit alles reibungslos funktioniert.
Diese Lösung eignet sich hervorragend, wenn Du Deine Infrastruktur mit minimalen Kosten sicher betreiben möchtest. So kannst Du regelmäßige Snapshots machen, um im Notfall schnell auf eine ältere Version Deines Systems zurückzugreifen.
Voraussetzungen und Vorbereitung
Bevor wir loslegen, benötigst Du einige Voraussetzungen:
- Raspberry Pi: Ein Raspberry Pi mit einem installierten Betriebssystem (z.B. Raspberry Pi OS) und einer funktionierenden Netzwerkverbindung.
- Digital Ocean Account (Affiliate Link): Du benötigst ein aktives Konto bei Digital Ocean, um Droplets und API-Zugriffe zu verwalten.
- Digital Ocean API-Schlüssel: Diesen richten wir im Laufe der Anleitung ein.
- Python und pip: Python sollte auf Deinem Raspberry Pi installiert sein, ebenso das Python-Paketmanagement-Tool
pip
, um notwendige Bibliotheken zu installieren. - Digital Ocean Python-Client: Diesen werden wir verwenden, um auf die API von Digital Ocean zuzugreifen.
Jetzt geht es los!
Schritt-für-Schritt Anleitung
1. Erstelle den API-Schlüssel bei Digital Ocean
Bevor der Raspberry Pi Snapshots erstellen kann, musst Du einen API-Schlüssel generieren, der den Zugriff auf Dein Digital Ocean-Konto erlaubt.
- Logge Dich bei Digital Ocean ein.
- Gehe im Menü auf „API“ und wähle „Token/Keys“.
- Klicke auf „Generate New Token“.
- Gib dem Token einen Namen (z.B. „RaspberryPi-Backup“).
- Wähle „Read and Write“-Rechte, damit der Token nicht nur Daten lesen, sondern auch Snapshots erstellen und löschen kann.
- Klicke auf „Generate Token“ und kopiere den API-Schlüssel, der angezeigt wird. Speichere diesen sicher, da er nach dem Schließen nicht mehr angezeigt wird.
2. Installiere die notwendigen Tools auf dem Raspberry Pi
Nun müssen wir sicherstellen, dass alle nötigen Tools auf Deinem Raspberry Pi installiert sind.
- Verbinde Dich per SSH oder direkt mit Deinem Raspberry Pi.
- Aktualisiere die Paketliste:
sudo apt update
- Installiere Python und pip (falls noch nicht installiert):
sudo apt install python3 python3-pip
- Installiere den Digital Ocean Python-Client:
pip3 install digitalocean
3. Schreibe ein Python-Skript zur Snapshot-Erstellung
Erstelle ein Python-Skript, das die Snapshots automatisch erstellt und alte Snapshots löscht. Das Skript nutzt den Digital Ocean API-Schlüssel, den Du erstellt hast.
- Erstelle eine neue Datei, z.B.
snapshot_script.py
:
nano snapshot_script.py
- Füge den folgenden Code in die Datei ein:
import digitalocean import datetime # Dein Digital Ocean API-Schlüssel API_TOKEN = 'DEIN_API_KEY_HIER' DROPLET_ID = 'DEIN_DROPLET_ID_HIER' MAX_SNAPSHOTS = 5 # Maximale Anzahl an Snapshots, die behalten werden sollen # Verbinde mit der Digital Ocean API manager = digitalocean.Manager(token=API_TOKEN) droplet = manager.get_droplet(DROPLET_ID) # Erstelle einen Snapshot mit Zeitstempel timestamp = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S') snapshot_name = f'snapshot_{timestamp}' droplet.take_snapshot(snapshot_name, power_off=True) # Hol dir alle Snapshots des Droplets snapshots = droplet.get_snapshots() # Sortiere die Snapshots nach Erstellungsdatum (älteste zuerst) snapshots.sort(key=lambda s: s.created_at) # Lösche alte Snapshots, wenn es mehr als MAX_SNAPSHOTS gibt if len(snapshots) > MAX_SNAPSHOTS: for snapshot in snapshots[:-MAX_SNAPSHOTS]: print(f"Lösche alten Snapshot: {snapshot.name}") snapshot.destroy()
4. Finde die Droplet ID
Um die Droplet-ID zu finden, die Du für das Skript benötigst, folge diesen Schritten:
- Logge Dich in Dein Digital Ocean Dashboard ein.
- Gehe auf die Übersichtsseite Deines Droplets.
- In der URL findest Du eine ID ähnlich wie
12345678
. Das ist die Droplet ID.
Trage diese ID in das Skript an der Stelle von DEIN_DROPLET_ID_HIER
ein.
5. Teste das Skript
Führe das Skript einmal manuell aus, um sicherzustellen, dass alles funktioniert:
python3 snapshot_script.py
Das Skript sollte jetzt einen Snapshot erstellen und gegebenenfalls alte Snapshots löschen. Überprüfe Dein Digital Ocean Dashboard, um sicherzustellen, dass der Snapshot korrekt angelegt wurde.
6. Erstelle einen Cronjob für die Automatisierung
Um das Skript jeden Tag um 2 Uhr nachts automatisch auszuführen, verwenden wir einen Cronjob.
- Öffne den Cronjob-Editor:
crontab -e
- Füge die folgende Zeile am Ende der Datei ein, um das Skript täglich um 2 Uhr auszuführen:
0 2 * * * /usr/bin/python3 /pfad/zu/deinem/snapshot_script.py >> /var/log/snapshot.log 2>&1
Hinweis: Stelle sicher, dass der Pfad zu Deinem Python-Skript korrekt ist. Du kannst den Pfad mit pwd
im Verzeichnis des Skripts herausfinden.
- Speichere und schließe die Datei. Der Cronjob ist nun aktiv und wird täglich um 2 Uhr nachts laufen.
7. Überprüfe die Logs
Um zu überprüfen, ob der Cronjob erfolgreich ausgeführt wird, kannst Du die Log-Datei einsehen, die wir im Cronjob definiert haben:
cat /var/log/snapshot.log
Hier werden alle Ausgaben des Skripts protokolliert.
Fazit
Mit dieser Anleitung hast Du erfolgreich einen Raspberry Pi dazu genutzt, automatisierte Snapshots von Digital Ocean Droplets (Affiliate Link) zu erstellen und alte Snapshots zu löschen, um Speicherplatz zu sparen. Du hast einen Cronjob eingerichtet, der dieses Skript täglich um 2 Uhr ausführt, und Du hast festgelegt, wie viele alte Snapshots behalten werden, bevor der älteste gelöscht wird. So hast Du eine kostengünstige und zuverlässige Backup-Lösung implementiert, ohne auf kostenpflichtige automatische Backups von Digital Ocean zurückgreifen zu müssen.