Kopia als Backup einrichten
Wie ihr wisst, liebe ich Open Source. Open Source bietet diverse Vorteile, die einen komplett eigenen Blog-Eintrag brauchen.
Momentan brauche ich eine Backup-Lösung für mein Paperless-ngx, dass ich auf meinen kleinen Homeserver gehostet habe.
Ich habe mich Kopia unter den verschiedenen Open Source Lösungen wie restic oder borg entschieden. Warum? Der ausschlaggebende Grund war für mich, dass Kopia ein Server Modus bietet, Deduplizierung und Verschlüsselung beherrscht und zusätzlich CLI Tools für Clients hat. Kopia läuft zum Zeitpunkt des Erstellen dieses Blogbeitrages unter einer Apache-2.0, dass auch ein kommerziellen Nutzer theoretisch erlaubt.
Warum war für mich Deduplizierung ein wichtiges Feature? Die Deduplizierung verhindert dass Speichern von redundanten Daten. Kopia unterteilt die zu speichernden Daten in Chunks auf und speichert deren Hash. Falls der Hash bereits existiert muss dieser nicht nochmal gespeichert werden. Im Anschluss werd der Chunk verschlüsselt.
When Kopia sees a file to backup, it first splits its data into “chunks” with the configured splitter. Then compute its hash with the configured hash algorithm, and compare it against the existing database. If a matching hash is found, this chunk is already stored, thus can be safely discarded
Quelle: https://kopia.io/docs/advanced/compression/
Kopia installieren
Ich arbeite auf einen Ubuntu Machine und erstelle als Erstes einen neuen Ordner. Damit man die Anleitung folgen kann, muss man bereits Docker installiert haben.
mkdir -p /opt/kopiaAls nächstes legt man die Docker Compose Datei in den \opt Ordner.

sudo mkdir -p /opt/kopia/tls
sudo openssl req -x509 -newkey rsa:4096 -nodes \
-keyout /opt/kopia/tls/kopia.key \
-out /opt/kopia/tls/kopia.crt \
-days 825 \
-subj "/CN=kopia"
Schlüssel und Zertifikat erstellen.
In dem Kopia Pfad \opt\kopia starte nun die Compose Datei
sudo docker compose up -d
In der WebUI kannst du dich mit deinem Passwort und User, dass du in der Compose Datei angegeben hast anmelden. Danach erstelle ein Repository erstellen und dann den Pfand /repository/XXX angeben.

Wenn man ein Kopia Repository anlegt, dann muss der Ordner in dem Pfad repository auch existieren:


Caddy Reverse Proxy
Damit man einen Zugriff auf den Kopia Server von außerhalb mit HTTPS ermöglicht, braucht es einen Reverse Proxy wie Caddy.
Als erstes erstellt man die Ordner, die Caddy benötigt:
mkdir -p /opt/caddy/Caddyfile
mkdir -p /opt/caddy/data
mkdir -p /opt/caddy/config:Einstellung für das Caddyfile:
{
email MAIL-ADRESSE
}
kopia.DOMAIN.de {
reverse_proxy https://kopia:51515 {
transport http {
# weil wir oben self-signed nutzen:
tls_insecure_skip_verify
}
}
}
Verbindung vom Client A zum Server
Nutzer erstellen
Auf dem Client A:
whoami
hostname -sAuf dem Kopia Server:
sudo docker exec -it Kopia kopia server users add USER@HOSTNAME_CLIENT_A --user-password 'EIN_STARKES_PASSWORT'Um die Änderung sofort wirksam zu machen, einmal die compose file runter und hochfahren.
sudo docker compose down && sudo docker compose up sudo docker compose down && sudo docker compose up -d
Auf Client A:
kopia repository connect server --url=https://kopia.deinedomain.de:443Dann User und Passwort eingeben das man im vorherigen Schritt angegeben hat angeben.
Repository befühlen:
kopia snapshot create /etc
kopia snapshot create /var/lib/docker
kopia snapshot listAuf Client B Snapshot herunterladen und überprüfen
User für Client B auf Server erstellen.
sudo docker exec -it Kopia kopia server users add USER@HOSTNAME_CLIENT_B --user-password 'EIN_STARKES_PASSWORT'User z.B. noahk und hostname beispeilweise mabookpro
Richtige Rechte setzen um den Snapshot herunterladen zu können:
sudo docker exec -it Kopia kopia server acl add --user "USER@HOSTNAME_CLIENT_B" --access READ --target type=snapshot,username=USER_NAME,hostname=HOSTNAME_CLIENT_Asudo docker exec -it Kopia kopia server acl add \
--user="noahk@macbookpro" --access=READ --target=type=contentMinimale Permission um Daten zu lesen ist ein READ Access für den bestimmten Nutzer zu haben und den eigentlich Content Blob lesen zu können.
sudo docker exec -it Kopia kopia server acl remove --delete a01f3f94ba05b972d9ae8b1c6f27e76dEine Regel löschen
Erst in den Docker Container einloggen
sudo docker exec -it Kopia shkopia snapshot restore "root@tower:/data" /tmpFazit
Mit Docker kann man schnell eine Kopia Instanz aufsetzen. Kopia unterstützt diverser Clients mit dem hauseigenen CLI Tools. Ich hoffe, dass ich die grundlegenden Schritte ausführlich genug erklärt habe, damit man erfolgreich Kopia auf seinen eigenen Server installieren kann.