Bonjour, je cherche un moyen d’effectuer des sauvegardes automatisées de mon nouveau forum Discourse (installé sur un droplet Digital Ocean) vers un appareil NAS sur mon réseau domestique. Comment puis-je y parvenir ?
Je ne suis pas développeur et je ne sais pas par où commencer pour créer un plugin à cette fin.
La méthode la plus simple consiste à exécuter un type de tâche automatisée (tâche cron). Selon le NAS que vous possédez, vous pouvez exécuter des commandes Linux de base, comme rsync.
Vous devez disposer d’un moyen de connecter le NAS et le Droplet. Une fois ce moyen identifié, je pense qu’un plugin serait excessif, par exemple. Il vous suffit de quelque chose comme le code ci-dessous à exécuter sur votre NAS dans une tâche cron
Merci Mario. J’ai un ancien Netgear ReadyNAS ultra 6 sous OS6, qui, je crois, pourrait prendre en charge cette approche (je vais enquêter).
Je suppose que le problème pour moi réside dans l’identification des fichiers ou dossiers à sauvegarder – je présume qu’il s’agit uniquement de la base de données ? (et je suppose que toutes les images et pièces jointes publiées sont intégrées dedans ?)
Quel chemin utiliser pour trouver la base de données ? La base de données est-elle même stockée sous forme de fichier dans le répertoire Discourse ? J’ai fouillé dans /var/discourse et, à mon œil inexpérimenté, je n’ai rien vu qui ressemble à un fichier de base de données.
Merci Jay, cela semble être la solution idéale !
Est-il raisonnable de supposer que, si j’ai activé l’option « inclure les pièces jointes avec les sauvegardes », il n’y a rien d’autre à sauvegarder, au cas où je devrais repartir de zéro sur un autre serveur ?
(en supposant que les plugins tiers que j’utilise ne deviendront pas soudainement indisponibles pour téléchargement)
Par ailleurs, existe-t-il un moyen de nettoyer automatiquement le répertoire des sauvegardes quotidiennes, de sorte que, par exemple, seules les sauvegardes des 7 derniers jours soient conservées sur le serveur ?
Oui, il existe des paramètres dans le tableau de bord d’administration, mais je ne me souviens plus de leurs noms pour l’instant. Le script que je vous ai envoyé précédemment utilise déjà le chemin par défaut où les sauvegardes sont stockées.
Cependant, avec rsync sur le NAS et cette commande, vous pouvez le configurer pour qu’il supprime également les anciennes sauvegardes du NAS. Vous êtes donc prêt.
Merci Mariano
Sur le forum ReadyNAS, il a été suggéré que l’utilisation de cron sur ReadyNAS est possible mais pas idéale, et que les « systemd timers » intégrés sont préférables. Je ne sais pas si cela permet des opérations aussi avancées que le nettoyage de répertoires distants.
Je rencontre actuellement des erreurs « Permission denied (publickey) » chaque fois que j’essaie de me connecter depuis ReadyNAS vers mon serveur Discourse, même si j’ai ajouté la clé publique de ReadyNAS à la liste des utilisateurs SSH sur Digital Ocean.
Je reviendrai ici si je fais des progrès, pour toute personne qui tente la même chose.
Le nettoyage est effectué directement par Discourse sur le droplet, mais rsync possède une multitude d’options, ce qui vous permet de personnaliser le processus de copie des sauvegardes selon vos préférences.
Assurez-vous de redémarrer le serveur SSH ; cela résout parfois certains problèmes de clés publiques.
Sans aucun doute, le problème vient de moi, j’essaie probablement de me connecter avec le mauvais utilisateur ou autre chose — bien que j’aie essayé de me connecter depuis ReadyNAS en utilisant le nom que j’ai donné à cette clé publique lors de son ajout à Digital Ocean, ainsi que ‘root’. Aucun des deux ne semble fonctionner.
Avez-vous déjà connecté au serveur avec une clé ? Par exemple, lors de l’installation de Discourse ou de la reconstruction de l’application ?
Il est possible (bien que cela ne devrait pas être le cas) que l’authentification publique SSH soit désactivée sur le serveur, ou que le NAS utilise la mauvaise clé pour se connecter.
N’oubliez pas de modifier le nom et le chemin de la clé correcte dans cette partie de la commande : "ssh -i ~/.ssh/id-rsa"
Utilisez PuTTY pour accéder au serveur Digital Ocean et tapez
nano /root/.ssh/authorized_keys
Dans l’éditeur, copiez-collez le texte de la clé publique utilisé par ReadyNAS, en l’ajoutant à la fin du fichier /root/.ssh/authorized_keys (faites attention de ne pas écraser les clés déjà présentes).
Dans les paramètres de la boîte de dialogue de sauvegarde ReadyNAS, j’ai utilisé :
Nom : Sauvegarde via Rsync sur SSH distant (sélection dans la liste déroulante)
Hôte : mydomain.com (ou adresse IP du serveur)
Port : 22
Chemin : /var/discourse/shared/standalone/backups/default
Identifiant : root
(À noter que si vous avez correctement suivi les instructions pour configurer ReadyNAS pour l’accès SSH, aucune phrase de passe SSH ne sera associée à sa paire de clés publique/privée SSH. C’est assez important, car la boîte de dialogue de sauvegarde ReadyNAS ne prévoit pas de phrase de passe)
Au début, ce processus n’a pas fonctionné complètement pour moi - l’utilisation du bouton ‘Test’ dans la boîte de dialogue de sauvegarde ReadyNAS avec ces paramètres a bien abouti à une connexion réussie, mais le lancement d’une sauvegarde a généré l’erreur ‘Quota disque dépassé (122)’
Mais quelques heures plus tard, sans aucune intervention évidente de ma part, lorsque le processus de sauvegarde s’est lancé à nouveau à l’heure auto-désignée, cette fois-ci, cela a simplement fonctionné comme il se doit.
Il est possible que mes efforts précédents pour établir une connexion et tester avec différents paramètres aient eu un effet résiduel qui entravait les choses, ou peut-être que le fait d’être simultanément connecté au serveur depuis mon PC en tant que root via PuTTY en même temps que root via FileZilla (tous deux utilisant la clé par défaut pour root) et ensuite essayer de se connecter en tant que root via l’utilitaire de sauvegarde du dispositif ReadyNAS (en utilisant la clé publique de ReadyNAS qui avait été ajoutée à root) était problématique.