Synology NAS – Backup-Dump von Gitea Docker-Container erstellen

Meine Gitea-Instanz läuft seit einiger Zeit auf meiner Synology NAS in einem Docker-Container, jedoch ohne eine Sicherung. Ohne ein komplettes Backup ist es auch schwer Gitea mal auf einen anderen Server umzuziehen. Gitea bietet da zum Glück eine recht einfache Möglichkeit einen vollständigen Dump zu erstellen, das alle Daten enthält und das auf einem neuen Server wieder hergestellt werden kann.

Die Anleitung zum Installieren von Gitea auf eine Synology findet ihr hier
Gitea auf einem Synology NAS installieren

In der offiziellen Gitea-Dokumentation findet ihr die Anleitung für den Backup & Restore Prozess.
https://docs.gitea.io/en-us/backup-and-restore/. Den Weg habe ich auch ausprobiert, leider hat das nicht ganz so funktioniert, wie ich mir das vorgestellt habe. Deshalb habe ich mich daran gemacht einen anderen Weg zu finden, der dann von Erfolg gekrönt war.

Schritt 1

Im ersten Schritt ist ein Terminal direkt im installierten Docker Container über die Weboberfläche zu öffnen.

Dorcker Terminal öffnen
Dorcker Terminal öffnen

 

Schritt 2

Im zweiten Schritt wird der Dump von Gitea erstellt. Es ist folgendes zu beachten:

  1. Das Terminal gilt nur für das Docker-Image. Ihr könnt nicht in ein andere Verzeichnis auf der Synology wechseln, z.B. euer Home-Verzeichnis
  2. In dem Verzeichnis in dem ihr den Dump-Befehl ausführt wird dieser abgelegt, in diesem Beispiel wird es in das Verzeichnis /tmp gelegt.
  3. Den Dump-Befehl müsst ihr zwingend als User git ausführen.

Nachdem das Terminal geöffnet wurde könnt ihr kontrollieren, mit welchem Benutzer ihr angemeldet seit

bash-5.1# whoami
root

In diesem Fall ist es der Benutzer root

Wir wechseln mal in das Verzeichnis /tmp

bash-5.1# cd /tmp

Nun können wir den Benutzer wechseln und den Dump-Befehl ausführen.

bash-5.1# su git
bash-5.1# /app/gitea/gitea dump -c /data/gitea/conf/app.ini

Der Befehl braucht je nach Größe von Gitea einige Zeit, bis er durchgelaufen ist. Danach könnt ihr mit ls den Inhalt des Verzeichnisses /tmp auflisten lassen und siehe da, es ist ein zip-Ordner vorhanden

bash-5.1# ls
git-dump-****.zip
Gitea Dump erstellen
Gitea Dump erstellen

Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


Schritt 3

Der Gitea-Dump liegt nun im Docker-Verzeichnis eurer Gitea-Instanz. Damit der Dump auch entsprechend gesichert werden kann oder auf einem anderen Server wieder hergestellt werde kann, müssen wir den in ein anderes Verzeichnis kopieren.

In diesem Beispiel kopiere ich das zip-Archiv in das Home-Verzeichnis meines Benutzers. Dabei ist zu beachten, dass das Kopieren über eine SSH-Sitzung durchgeführt wird, mit der ich vollen Zugriff auf die Ordner und Verzeichnisstruktur der Synology erhalte.

Das zip-Archiv suche ich über den Befehl find. Ihr benötigt dafür sudo-Rechte, da sonst nicht jedes Verzeichnis durchsucht werden kann.

sudo find -name gitea-dump-***.zip

Das Ergebnis sieht dann in etwa so aus:

sudo find -name gitea-dump-1628841406.zip
./volume1/@docker/btrfs/subvolumes/2ab4ca5373f218cc4e13255a65c1014decda2ab650bbb8ae2eddb32be21417bf/tmp/gitea-dump-1628841406.zip
find Gitea zip
find Gitea zip

Damit haben wir da zip-Archiv gefunden und wir können es in das Home-Verzeichnis kopieren. Nach dem Kopieren wird es auf der Weboberfläche in der File Station angezeigt.

Prüft den Pfad zum Home-Verzeichnis eures Benutzers.

sudo cp ./volume1/@docker/btrfs/subvolumes/2ab4ca5373f218cc4e13255a65c1014decda2ab650bbb8ae2eddb32be21417bf/tmp/gitea-dump-1628841406.zip /var/services/homes/benutzer
Kopieren in das Home-Verzeichnis
Kopieren in das Home-Verzeichnis

Schritt 4

Nun könnt ihr ganz bequem das zip-Archiv über die File Station herunterladen, entpacken und anschauen.

Gitea Dump
Gitea Dump

Photo by Markus Spiske on Unsplash

2 Antworten auf „Synology NAS – Backup-Dump von Gitea Docker-Container erstellen“

  1. Hi Stefan,
    zunächst einmal vielen Dank für deine Beiträge zum Thema Gitea! Ich habe heute von Gitlab auf Gitea migriert (Gitlab war für unsere Anwendung einfach zu mächtig und Ressourcenhungrig/träge) und bin soweit sehr zufrieden und überrascht, wie performant Gitea ist. Deine Beiträge waren hierfür sehr hilfreich.

    Ich habe noch einen kleinen Verbesserungsvorschlag zum Thema Backup. Ich vertraue mir selber nicht regelmäßige Backups zu erstellen, daher brauche ich dafür eine automatische Lösung. Ich konnte meine Lösung die ich bei Gitlab Jahrelang benutzt habe erfolgreich anpassen und wollte sie mit dir und anderen Lesern teilen.

    Folgende Schritte habe ich durchgeführt:

    1. In Docker auf die Details der Gitea Instanz gehen, unter Volume einen neuen Ordner vom NAS in den Container mappen (In meinem Fall xyz/Backups/Gitea -> /backup). Nach einem reboot des Containers erscheint dieser Ordner im root. In diesem Ordner liegen später die Backups.
    2. In der DSM Systemsteuerung -> Aufgabenplaner eine neue Geplante Aufgabe mit einem Benutzerdefinierten Skript anlegen. Bei mir ist der Name „Gitea Backup“, Benutzer root, Zeitplan täglich um 4 Uhr.
    3. Unter Aufgabeneinstellungen kommt die eigentliche Aufgabe rein (Zum Debuggen kann man das Häkchen setzen und sich E-Mails zu der Aufgabe zusenden lassen):

    —————-
    docker exec -u git -i -w /tmp gitea-gitea1 bash -c ‚/app/gitea/gitea dump -c data/gitea/conf/app.ini‘
    docker exec -u root -i gitea-gitea1 bash -c ‚mv /tmp/* /backup/‘
    —————-

    Dieses Skript erstellt im Container zunächst ein dump als User „git“ im Ordner „/tmp“. Mit dem zweiten Befehl wird der gesamte Inhalt des „/tmp“ Ordners in den von uns angelegten „/backup“ Ordner als user „root“ verschoben. „gitea-gitea1“ ist der Name meiner Gitea Instanz

    Da dieser Ordner irgendwann vollläuft, muss dort natürlich aufgeräumt werden ? Dieses Skript habe ich noch nicht in der Praxis getestet, dieser lief aber mit einem anderen Pfad bei mir lange Zeit problemlos.

    1. Wie oben eine neue tägliche Aufgabe um 5 Uhr anlegen (Heißt bei mir „Gitea Backup cleanup“). Skript:

    —————-
    find /volume1/xyz/Backups/Gitea -mtime +30 -delete
    —————-

    Dieser löscht Dateien die zuletzt vor ungefähr einem Monat modifiziert worden sind.

    Die Namen, Zeiten, Pfade etc. müssen natürlich auf die jeweiligen Anforderungen bei euch angepasst werden.

    Ich hoffe mein Kommentar hilft weiter. Bei Fragen einfach Antworten ?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.