Salta ai contenuti

Questa pagina è stata tradotta automaticamente. Le segnalazioni sono benvenute: segnalare un errore di traduzione su GitHub oppure scrivere a hello@rhinvoice.com.

Backup di Rhinvoice su Google Drive

Lettura: 4 min

Rhinvoice fa il backup su Google Drive tramite rclone, che fa parte del container di backup, con un Suo client ID OAuth di Google. Il client ID condiviso di rclone «is being retired and will stop working during 2026» (rclone.org/drive). Crearne uno proprio è gratuito e richiede circa dieci minuti. I backup vengono cifrati prima di lasciare il computer.

I menu della console Google Cloud cambiano di tanto in tanto. Se un nome qui sotto non è dove lo cerca, segua i link e confronti con i passi di rclone.

  1. Creare un progetto: console.cloud.google.com/projectcreate, un nome qualsiasi, per esempio «Rhinvoice Backup». In tutti i passi seguenti questo progetto deve essere quello selezionato in alto nella pagina.
  2. Attivare la Google Drive API: console.cloud.google.com/apis/library/drive.googleapis.com, Enable.
  3. Schermata di consenso: console.cloud.google.com/auth/overview, Get started: un nome dell’app (per esempio «rclone»), il Suo indirizzo come e-mail di supporto, pubblico External, il Suo indirizzo come contatto, Create.
  4. Scope: console.cloud.google.com/auth/scopes, aggiunga https://www.googleapis.com/auth/drive.file, Update, Save. Con questo scope il client vede solo i file che crea lui stesso, non il resto del Suo Drive.
  5. Client: console.cloud.google.com/auth/clients, Create client, tipo Desktop app. Conservi subito il client ID e il client secret in un gestore di password. Il secret viene mostrato solo ora.
  6. Pubblicare l’app: console.cloud.google.com/auth/audience, Publish app. Lo stato deve essere In production.
  1. Consentire l’accesso, su un computer con un browser e rclone 1.75 o più recente. read tiene ID e secret lontani dallo schermo e dalla cronologia della shell:

    Finestra del terminale
    read -rs CID # incollare il client ID, premere Invio
    read -rs CSECRET # incollare il client secret, premere Invio
    rclone authorize "drive" "$CID" "$CSECRET" --drive-scope drive.file

    Lo scope va scelto durante l’autorizzazione. Acceda e consenta l’accesso. Il terminale stampa un token: una riga che inizia con {"access_token":.

  2. Passarlo al container di backup, sul server, nella cartella di Rhinvoice. Se si tratta di un altro computer, imposti prima lì CID e CSECRET allo stesso modo:

    Finestra del terminale
    read -rs TOKEN
    docker 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
  3. Scegliere la cartella in .env e riavviare (docker compose up -d):

    RESTIC_REPOSITORY=rclone:gdrive:Rhinvoice-Backup
  4. Provare: attenda che docker compose logs backup mostri waiting for requests, poi esegua docker compose exec backup rhinvoice-backup backup. Impostazioni → Backup mostra il backup.

Lasci che sia rclone a creare la cartella. Una cartella creata da Lei nel browser è invisibile con drive.file: se RESTIC_REPOSITORY indica una cartella simile, accanto ne appare una seconda con lo stesso nome.

Un container di backup che registra NOTICE: … rclone's shared Google Drive client_id usa ancora il client ID condiviso. Il nuovo client non vede ciò che ha scritto il vecchio. Il container di backup crea quindi un nuovo repository vuoto in una seconda cartella con lo stesso nome. Dalla versione 0.6.1 esegue subito un backup nel nuovo repository.

Crei il client ID e autorizzi come sopra, poi sul server:

Finestra del terminale
docker compose stop backup
read -rs CID; read -rs CSECRET; read -rs TOKEN
docker compose run --rm --no-deps backup rclone config delete gdrive
docker 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
docker compose up -d backup
docker compose logs -f backup # attendere "waiting for requests"
docker compose exec backup rhinvoice-backup backup # necessario fino alla 0.6.0: il nuovo repository è vuoto
docker compose exec backup rhinvoice-backup snapshots
docker compose exec backup rhinvoice-backup check

Il NOTICE sparisce dal log. La vecchia cartella con i backup precedenti resta nel Suo Drive. La elimini nel browser una volta controllato il nuovo backup, oppure la conservi finché non ha provato un ripristino.

Perché Google Drive richiede un mio client ID?

Il client ID condiviso di rclone per Google Drive viene ritirato e smette di funzionare nel corso del 2026. Un remote che lo usa ancora registra un NOTICE a ogni backup. Con un Suo client ID i backup continuano a funzionare.

Perché il mio backup su Google Drive si è fermato dopo una settimana?

L’app Google è ancora nello stato «Testing». Google termina allora l’accesso dopo sette giorni. Pubblichi l’app affinché il suo stato sia «In production» e autorizzi di nuovo.

Google può leggere i miei backup?

No. restic cifra i backup prima che lascino il computer. Google Drive conserva solo blocchi illeggibili, e nessuno può ripristinarli senza RESTIC_PASSWORD.

Perché nel mio Drive ci sono due cartelle con lo stesso nome?

Con lo scope drive.file rclone vede solo i file che ha creato lui stesso con lo stesso client ID. Una cartella creata nel browser, o scritta con un altro client ID, gli è invisibile, quindi ne crea una seconda.