Rhinvoice auf Google Drive sichern
Rhinvoice sichert auf Google Drive über rclone, das im Backup-Container enthalten ist, mit einer eigenen Google-OAuth-Client-ID. Die gemeinsame Client-ID von rclone wird im Lauf von 2026 abgeschaltet (rclone.org/drive). Eine eigene anzulegen ist kostenlos und dauert etwa zehn Minuten. Die Backups werden verschlüsselt, bevor sie den Rechner verlassen.
Client-ID bei Google anlegen
Abschnitt betitelt „Client-ID bei Google anlegen“Die Menüs der Google-Cloud-Konsole ändern sich gelegentlich und heissen je nach Sprache anders. Steht ein Name unten nicht dort, wo Sie suchen, folgen Sie den Links und vergleichen Sie mit der Anleitung von rclone.
- Projekt anlegen: console.cloud.google.com/projectcreate, beliebiger Name, z. B. «Rhinvoice Backup». In allen folgenden Schritten muss oben auf der Seite dieses Projekt ausgewählt sein.
- Google Drive API aktivieren: console.cloud.google.com/apis/library/drive.googleapis.com, Aktivieren.
- Zustimmungsbildschirm: console.cloud.google.com/auth/overview, Erste Schritte: ein App-Name (z. B. «rclone»), Ihre Adresse als Support-E-Mail, Zielgruppe Extern, Ihre Adresse als Kontakt, Erstellen.
- Bereich: console.cloud.google.com/auth/scopes,
https://www.googleapis.com/auth/drive.filehinzufügen, Aktualisieren, Speichern. Mit diesem Bereich sieht der Client nur die Dateien, die er selbst anlegt, nicht den Rest Ihres Drive. - Client: console.cloud.google.com/auth/clients, Client erstellen, Typ Desktop-App. Sichern Sie Client-ID und Client-Secret sofort in einem Passwortmanager. Das Secret wird nur jetzt angezeigt.
- App veröffentlichen: console.cloud.google.com/auth/audience, App veröffentlichen. Der Status muss In Produktion lauten.
Solange der Status «Testing» lautet, beendet Google den Zugriff nach sieben Tagen. Die Backups würden eine Woche später aufhören, ohne dass sich etwas geändert hat. Eine App für den eigenen Gebrauch braucht keine Prüfung durch Google. Beim Anmelden bestätigen Sie den Hinweis, dass die App nicht verifiziert ist.
Backup-Container verbinden
Abschnitt betitelt „Backup-Container verbinden“-
Zugriff erlauben, auf einem Rechner mit Webbrowser und rclone 1.75 oder neuer.
readhält ID und Secret vom Bildschirm und aus dem Verlauf der Shell fern:Terminal-Fenster read -rs CID # paste the client ID, press Enterread -rs CSECRET # paste the client secret, press Enterrclone authorize "drive" "$CID" "$CSECRET" --drive-scope drive.fileDer Umfang muss beim Autorisieren gewählt werden. Melden Sie sich an und erlauben Sie den Zugriff. Das Terminal zeigt ein Token: eine Zeile, die mit
{"access_token":beginnt. -
Dem Backup-Container übergeben, auf dem Server, im Rhinvoice-Ordner. Ist das ein anderer Rechner, setzen Sie
CIDundCSECRETdort zuerst auf dieselbe Weise:Terminal-Fenster read -rs TOKENdocker compose run --rm --no-deps backup rclone config create gdrive drive \client_id "$CID" client_secret "$CSECRET" scope drive.file \config_refresh_token false token "$TOKEN"unset TOKEN CID CSECRET -
Den Ordner wählen in
.envund neu starten (docker compose up -d):RESTIC_REPOSITORY=rclone:gdrive:Rhinvoice-Backup -
Ausprobieren: Warten Sie, bis
docker compose logs backupdie Zeilewaiting for requestszeigt, und führen Sie danndocker compose exec backup rhinvoice-backup backupaus. Einstellungen → Backup zeigt das Backup.
Lassen Sie rclone den Ordner anlegen. Ein Ordner, den Sie selbst im Browser angelegt haben, ist mit drive.file unsichtbar: Nennt RESTIC_REPOSITORY einen solchen Ordner, erscheint daneben ein zweiter mit demselben Namen.
Bestehendes Backup auf die eigene Client-ID umstellen
Abschnitt betitelt „Bestehendes Backup auf die eigene Client-ID umstellen“Ein Backup-Container, der NOTICE: … rclone's shared Google Drive client_id ins Log schreibt, verwendet noch die gemeinsame Client-ID. Der neue Client sieht nicht, was der alte geschrieben hat. Der Backup-Container legt deshalb ein neues, leeres Repository an, in einem zweiten Ordner mit demselben Namen. Seit Version 0.6.1 sichert er sofort in ein neues Repository.
Bis Version 0.6.0 sichert der Container nach dem Anlegen des Repositorys nicht von selbst. Bis Sie ein Backup von Hand starten, gibt es kein Backup, das die Installation erreichen kann, während die Übersicht noch das letzte erfolgreiche zeigt.
Legen Sie die Client-ID an und autorisieren Sie wie oben, dann auf dem Server:
docker compose stop backupread -rs CID; read -rs CSECRET; read -rs TOKENdocker compose run --rm --no-deps backup rclone config delete gdrivedocker compose run --rm --no-deps backup rclone config create gdrive drive \ client_id "$CID" client_secret "$CSECRET" scope drive.file \ config_refresh_token false token "$TOKEN"unset TOKEN CID CSECRETdocker compose up -d backupdocker compose logs -f backup # wait for "waiting for requests"docker compose exec backup rhinvoice-backup backup # needed up to 0.6.0: the new repository is emptydocker compose exec backup rhinvoice-backup snapshotsdocker compose exec backup rhinvoice-backup checkDie NOTICE ist aus dem Log verschwunden. Der alte Ordner mit den früheren Backups bleibt in Ihrem Drive. Löschen Sie ihn im Browser, sobald das neue Backup geprüft ist, oder behalten Sie ihn, bis Sie eine Wiederherstellung ausprobiert haben.
Häufige Fragen
Abschnitt betitelt „Häufige Fragen“Warum braucht Google Drive eine eigene Client-ID?
Die gemeinsame Google-Drive-Client-ID von rclone wird im Lauf von 2026 abgeschaltet. Ein Ziel, das sie noch verwendet, schreibt bei jedem Backup eine NOTICE ins Log. Mit einer eigenen Client-ID laufen die Backups weiter.
Warum hat mein Google-Drive-Backup nach einer Woche aufgehört?
Die Google-App steht noch im Status «Testing». Google beendet den Zugriff dann nach sieben Tagen. Veröffentlichen Sie die App, sodass der Status «In production» lautet, und autorisieren Sie neu.
Kann Google meine Backups lesen?
Nein. restic verschlüsselt die Backups, bevor sie den Rechner verlassen. Google Drive speichert nur unlesbare Blöcke, und ohne RESTIC_PASSWORD kann sie niemand wiederherstellen.
Warum liegen zwei gleichnamige Ordner in meinem Drive?
Mit dem Umfang drive.file sieht rclone nur Dateien, die es selbst mit derselben Client-ID angelegt hat. Ein im Browser angelegter Ordner oder einer, der mit einer anderen Client-ID geschrieben wurde, ist unsichtbar, also legt rclone einen zweiten an.