Backup di Discourse su un droplet DO su dispositivo NAS

Ciao, sto cercando un modo per eseguire backup automatizzati del mio nuovo forum Discourse (configurato su un droplet di Digital Ocean) sul dispositivo NAS della mia rete domestica. Come posso farlo?

Non sono un programmatore e non saprei da dove iniziare per creare un plugin a questo scopo.

Il modo più semplice è eseguire un’attività automatizzata (cron job). A seconda del NAS che possiedi, puoi eseguire comandi Linux di base, come rsync.

Hai bisogno di un metodo per collegare il NAS e il Droplet; una volta trovato, penso che utilizzare un plugin sarebbe eccessivo. Ti basta qualcosa di simile al codice qui sotto, da eseguire sul tuo NAS tramite un cron job:

rsync -avz --progress -e "ssh -i ~/.ssh/id-rsa" example.com:/var/discourse/shared/standalone/backups /folder/in/the/nas

La possibilità di eseguire qualcosa di questo tipo dipende, come ho detto sopra, dal tipo di NAS che possiedi.

Grazie, Mario. Ho un vecchio Netgear ReadyNAS Ultra 6 con OS6, che credo possa supportare questo approccio (lo verificherò).

Immagino che parte del problema per me consista nell’identificare quali file o cartelle eseguire il backup: presumo solo il database? (e presumo che tutte le immagini/allegati pubblicati siano incorporati al suo interno?)

Quale percorso dovrei utilizzare per trovare il database? Il database è addirittura memorizzato come file all’interno della directory di Discourse? Ho dato un’occhiata in /var/discourse e, con i miei occhi inesperti, non ho notato nulla che sembrasse un file di database.

Vuoi attivare i backup giornalieri e ottenere

 /var/discourse/shared/standalone/backups/default

Grazie Jay, sembra essere la soluzione giusta!
È corretto assumere che, se ho impostato ‘includi i caricamenti con i backup’, non ci sia altro da mantenere in backup, nel caso in cui in futuro dovessi ricominciare da zero su un altro server?

(assumendo che i plugin di terze parti che ho utilizzato non diventino improvvisamente nuovamente non disponibili per il download)

Inoltre, esiste un modo per pulire automaticamente la directory dei backup giornalieri, in modo che, ad esempio, vengano mantenuti sul server non più degli ultimi 7 giorni di backup giornalieri?

Sì, ci sono delle impostazioni nella Dashboard di Amministrazione, al momento non ricordo i nomi esatti. Lo script che ti ho inviato in precedenza utilizza già il percorso predefinito in cui vengono archiviati i backup.

Tuttavia, con rsync sul NAS e quel comando, puoi configurarlo in modo che cancelli anche i vecchi backup dal NAS: sei pronto.

Grazie, Mariano
Nel forum di ReadyNAS è stato suggerito che l’uso di cron su ReadyNAS è possibile ma non ideale, e che i ‘timer systemd’ integrati sono migliori. Non sono sicuro che permettano funzionalità avanzate come la pulizia remota delle directory.

Attualmente sto avendo problemi con errori ‘Permission denied (publickey)’ ogni volta che provo a connettermi da ReadyNAS al mio server Discourse, anche se ho aggiunto la chiave pubblica di ReadyNAS all’elenco degli utenti SSH su Digital Ocean.

Aggiornerò qui se farò progressi, per chiunque altro stia provando a fare la stessa cosa.

La pulizia viene eseguita direttamente da Discourse sul droplet, ma rsync ha un’infinità di opzioni, quindi puoi personalizzare il processo di copia dei backup a tuo piacimento.

Assicurati di riavviare il server SSH; a volte questo risolve alcuni problemi relativi alle chiavi pubbliche.

Grazie Mariano
Ho appena riavviato il server con un ciclo di alimentazione, ma ricevo ancora:

Permesso negato (publickey).
rsync: connessione chiusa inaspettatamente (0 byte ricevuti finora) [Receiver]
rsync error: errore inspiegabile (codice 255) in io.c(235) [Receiver=3.1.3]

Senza dubbio il problema è da parte mia, probabilmente sto tentando di accedere con l’utente sbagliato o qualcosa del genere. Ho provato ad accedere da ReadyNAS utilizzando il nome che ho associato alla chiave pubblica quando l’ho aggiunta a Digital Ocean, nonché ‘root’. Nessuno dei due sembra funzionare.

Hai già effettuato l’accesso al server con una chiave? Come quando hai installato Discourse o ricostruito l’applicazione?

Potrebbe essere (anche se non dovrebbe) che l’SSH sul server abbia l’autenticazione pubblica disabilitata, o forse il NAS sta usando la chiave sbagliata per effettuare l’accesso.

Ricorda di modificare il nome e il percorso della chiave corretta in questa parte del comando "ssh -i ~/.ssh/id-rsa"

*** MODIFICA ***
Grazie Mariano. Alla fine è riuscito a funzionare.

In sintesi, per chiunque altro stia cercando di farlo;

  1. Abilita SSH su ReadyNAS ReadyNAS OS 6: SSH access support and configuration guides - NETGEAR Support

  2. Usa PuTTY per accedere al server Digital Ocean e digita

nano /root/.ssh/authorized_keys

  1. Nell’editor, incolla il testo della chiave pubblica utilizzato da ReadyNAS, aggiungendolo alla fine del file /root/.ssh/authorized_keys (fai attenzione a non sovrascrivere eventuali chiavi già presenti).

  2. Nelle impostazioni della finestra di dialogo di backup di ReadyNAS, ho utilizzato::

Nome: Backup tramite Rsync su SSH remoto (selezione dal menu a tendina)
Host: mydomain.com (o indirizzo IP del server)
Porta: 22
Percorso: /var/discourse/shared/standalone/backups/default
Login: root

(Si noti che, se hai seguito correttamente le istruzioni per configurare ReadyNAS per l’accesso SSH, nessuna passphrase SSH sarà associata alla coppia di chiavi pubblica/privata SSH di ReadyNAS. Questo è piuttosto importante, poiché la finestra di dialogo di backup di ReadyNAS non prevede una passphrase)

All’inizio questo processo non ha funzionato completamente per me: utilizzando il pulsante ‘Test’ nella finestra di dialogo di backup di ReadyNAS con queste impostazioni, la connessione è avvenuta con successo, ma l’avvio del backup ha generato l’errore ‘Spazio su disco superato (122)’.
Tuttavia, dopo un paio d’ore, senza alcun intervento evidente da parte mia, quando il processo di backup si è avviato automaticamente all’ora prestabilita, questa volta ha funzionato correttamente.

È possibile che i miei precedenti tentativi di stabilire una connessione e di eseguire test con impostazioni diverse avessero avuto qualche effetto residuo che ostacolava il processo, oppure che il fatto di essere contemporaneamente connesso al server dal mio PC come root tramite PuTTY e come root tramite FileZilla (entrambi utilizzando la chiave predefinita per root) e poi tentare di accedere come root tramite l’utilità di backup del dispositivo ReadyNAS (utilizzando la chiave pubblica di ReadyNAS aggiunta a root) fosse problematico.