Entretien et sauvegarde d'un serveur minecraft

Bonjour et bonne année 2019 à vous !

Il y a environ 2 mois j’ai mis en place un serveur minecraft sur un raspberry pi 3 B+ afin de pouvoir jouer avec des amis et permettre à ceux qui ont l’adresse de se connecter quand ils le veulent.

Ce serveur tourne très bien, mais je me pose quelque questions sur la gestion du serveur :

  1. Afin d’optimiser les performances de ma petite framboise, j’ai évité toute interface graphique (tant sur raspbian que sur le serveur avec un petit « nogui » et en lançant le serveur au démarrage du raspberry). Mais je me demande s’il y a une façon « safe » d’éteindre un tel serveur ?
    Je m’explique : lorsque je faisais des serveurs sur windows j’avais l’habitude de les fermer avec une commande stop et là une petite ligne indiquait quelque chose du genre « sauvegarde de la map » et je me sentait rassuré. Du coup je me demandais si couper sauvagement l’alimentation du raspberry pour l’éteindre ne présentait pas un risque de perdre les données du serveur ? S’il y a un risque, comment faire pour stopper de façon « propre » le serveur ?
    Cette question se pose notamment dans le cas où je voudrais utiliser une version plus récente de minecraft, impliquant ainsi une mise à jour du fichier spigot.

  2. Est-il possible de faire une backup régulière (et automatique) des fichiers du serveur ? Faudrait-il pour cela arrêter le serveur pendant quelque minutes ?
    Par exemple, afin d’éviter les ennuis, je me demandais s’il était possible de faire une backup toutes les semaines (mettons le Jeudi à 3h du matin). Cette backup pourrait très bien se faire sur la carte SD à mon sens (à moins que ce ne soit pas une super idée, auquel cas il faudrait peut être un autre support de stockage externe, style clé USB ?).

D’avance merci d’avoir pris le temps de me lire et pour vos retours. Si vous souhaitez d’autres précisions, je suis prêt à les apporter (dans la mesure de mes compétences)… :smile:

Bonjour,
1: Tu peux créer un nouveau service pour démarrer/éteindre le serveur. Va voir ce ce tutoriel mais je pense pas que si tu débranche sauvagement ton Pi il est le temps de sauvegarder tes mondes.Donc avant de le débrancher fait un sudo shutdown -h now.
2: Pour la backup de ton serveur Minecraft voici un script

J’ai écris sa de mémoire il se peut qu’il y est des erreurs dans ce script.
Il te suffira de le mettre de le crontab pour qui soit exécuté automatiquement à une heure précise,mais je te laisse chercher sur internet :slight_smile:

Bonjour,

Merci bien pour ces informations. Je n’ai pas le raspberry sous le coude en ce moment (je suis en vacances et la question m’a effleuré alors que mon esprit était au repos… :sweat_smile: ) donc je passerais à la partie pratique à mon retour.

Du coup, si je comprend bien, pour éviter les soucis, il faut :

  1. Que je sorte mon script actuel de la séquence de démarrage (qui permet simplement de lancer le serveur minecraft sans interface graphique. D’ailleurs il va falloir que je retrouve comment je me suis dépatouillé avec tout ça…)
  2. Créer le script permettant de démarrer le script (visiblement utiliser un screen semble plus pratique pour la suite) au démarrage du raspberry et de l’arrêter « proprement » à l’arrêt du système (il faut bien utiliser la commande shutdown pour ça non ? Et d’ailleurs, si je laisse mon raspberry branché, est-ce qu’il va redémarrer tout seul ou faut-il le débrancher/rebrancher ?[pour être honnête, je préfèrerais la seconde alternative])
  3. Reprendre le script que tu m’a gentiment proposé (et qui me semble parfait pour ce que je souhaite faire) et l’intégrer dans la crontab (qui semble également correspondre à mes besoins, mais qu’est-ce que c’est parfait tout ça !!!).

Malgré mon niveau de débutant, ça me semble faisable ! :blush:
Encore merci pour ces pistes, informations et scripts ! Dès que j’aurais testé tout ça je reviendrais clôturer (soyons optimistes, ça va marcher du premier coup !) ce topic !

Salut,

regarde se tuto pour faire une sauvegarde.
par contre du devras débrancher la carte SD, alors c’est pas exactement ce que tu veux mais avant de te lancer dans les expériences de script tu devrais faire une sauvegarde de ta SD sur un fichier image.
Au moins en cas de problème tu pourra repartir de ce point de sauvegarde.

a+

Salut,

En complément,
Perso pour lancer un script au démarrage, je fais de 2 façons :

En version Console, je fais une modification du programme de démarrage avec sudo nano /etc/rc.local pour ajouter la ligne sudo bash /home/pi/script-en-question.sh (je bosse en bash car je n’y connais rien en python).

En version graphique, je fais un sudo nano /etc/xdg/lxsession/LXDE-pi/autostart pour modifier la séquence de démarrage de l’utilisateur pi.
Et tu ajoutes ta ligne bash /home/pi/script-en-question.shcomme précédemment sauf que ça lance le script seulement une fois l’interface graphique ouverte.

Et pour finir, oui, oui, cron est bien utile pour les choses récurrentes :slight_smile:

Pour les sauvegardes, il est inutile d’en faire si tu n’es pas sûr de pouvoir les utiliser.
Donc faire des copies sur support externe et toujours essayer de les réinjecter … parce que se retrouver avec 15 sauvegardes mais aucune exploitable, ça énerve :wink:

++

+1 @Nabla

Dans ma vie professionnelle, j’ai vu des entreprises fermer car elles avaient des supports de sauvegarde informatique mais pas la procédure pour les restaurer. L’intervention d’experts en informatique n’ont fait que constater que les dizaines de k7 de sauvegardes étaient en plus inexploitables.

A+

Bonjour NykoTera,
Quand tu tape sudo shutdown -h now, tu arrêtes raspbian et tous les services (donc ton serveur minecraft si tu a suivi le tutoriel pour le mettre dans le /etc/init.d. Si non, va voir mon 1er post),ensuite tu peux le débrancher. Si tu veux rebooter le Pi, fait un sudo reboot. Sa t’évitera de le débrancher et de le rebrancher.

Salut

je plussoie aussi le test de la sauvegarde, ça m’a sauver la vie sur un NAS raide 5 sous openmediavault.
c’est un peut long, mais quand même moins que tout reconfigurer.

a+

Bien le bonjour à tous.

Je reviens vers vous avec du nouveau. En fait pour lancer mon serveur au démarrage du raspberry je suis passé par systemd en utilisant ces infos. Du coup je me demandais ce qu’il vous semblait être le plus sûr et surtout, le plus simple comme méthode (le init.d ou le systemd) ?

En attendant, je fais des test pour faire une sauvegarde. :slightly_smiling_face:

Bonjour,

Le choix entre init.d ou systemd dépend de la version de Raspbian utilisée.
Il est le système d’init par défaut dans Debian (donc Raspbian) depuis Jessie.

A+

Bien le bonjour,

Après un bon moment de silence je reviens vers vous avec de bonnes nouvelles. En effet, grâce à vos indications j’ai réussi à faire ce que je voulais. Résumons donc un petit peu ce que ça donne dans les faits.

Comme j’utilise la dernière version de raspbian, j’ai donc utilisé systemd pour gérer à la fois le lancement au démarrage, l’arrêt « propre » du serveur, et même la sauvegarde par récurrence. Pour ce faire google m’a pas mal aidé et notamment ce projet.

Au final j’ai 4 fichiers qui me permettent de faire ce que je souhaite (il serait possible de réduire à 3, mais j’avoue que là ça marche et je n’ai pas tellement envie de bidouiller tout ça… :smiley:)

Du coup j’ai gardé le petit script « run.sh » que j’avais placé dans le dossier où se trouvent les fichiers du serveur et c’est toujours lui qui lance le serveur.
Le reste se passe dans le dossier /etc/systemd/system, soit 3 fichiers :

  • Un fichier .service qui me permet de démarrer le serveur au démarrage du raspberry
  • un fichier .service qui me permet d’arrêter le serveur, sauvegarder mon dossier dans un fichier .tar et ensuite redémarrer le serveur (largement inspiré du script de CaptainChapi)
  • Un fichier .timer qui me permet de lancer le service précédent au moment voulu

Si ça intéresse quelqu’un, je partage volontiers le contenu de ces services.

Une fois que j’ai terminé ces bidouilles (et que ça fonctionnait) j’ai bien sûr fait une petite sauvegarde complète (ça m’embêterait de devoir tout recommencer).

Au final, je me posais 2 petites questions pour paufiner un peu tout ça (moi, en demander toujours plus ?) :

  • Afin de ne pas me retrouver avec des tonnes de fichiers inutiles, est-ce qu’il existe un moyen de ne garder que les 2 derniers en date par exemple ?
  • Est-ce qu’il est possible d’envoyer ces fichiers directement sur un cloud (j’avoue que j’utilise pas mal dropbox par exemple…) ?

Encore merci pour votre aide !

PS [08/02/2019] : Je viens de trouver réponse à mes dernières questions. Pour faire court, voilà le type de solution que j’ai implémenté dans mon service de sauvegarde (juste après le redémarrage du serveur) :

  • Pour ne garder que les fichiers les plus récents (nombre à choisir), je passe par une succession de commandes de type ls -1rt | head | xargs -I TOTO rm TOTO
  • Pour la sauvegarde cloud il existe Dropbox-Uploader qui permet d’utiliser dropbox en commande bash. Et là on peut faire de même et ne garder que les fichiers qui nous intéressent et uploader les fichiers nouvellement créés !
    Pour conclure, je le répète, si ça vous intéresse je partagerais volontiers les fichiers utilisés pour parvenir à mes fins, c’est à dire :
  1. Le script bash qui me permet de lancer minecraft (même si celui-ci n’est pas très difficile à lancer)
  2. Le service qui lance le serveur minecraft au démarrage du raspberry et l’éteint proprement (lorsque l’on éteint proprement le serveur)
  3. Le service qui stoppe le serveur, sauvegarde les fichiers du serveur dans une archive, ne garde que les 2 dernières archives, relance le serveur, et envoie les archives sur un espace dropbox (pour sauvegarde)
  4. Le timer qui lance le service de sauvegarde toutes les semaines (j’ai choisi le Jeudi à 3h du matin…)

Bonjour , c’est un super projet que vous avez fait, je souhaiterais faire la même chose avec mon nouveau raspberry pi , pourriez vous me donner accès a ce projet ? ( Lien Google Drive ou Dropbox ? ) Merci d’avance !

Bonjour,
Merci, j’avoue avoir cherché pas mal de choses pour me simplifier la vie… :grin:

Du coup je ne suis pas à mon domicile pour le moment, donc je n’ai pas accès à tous les fichiers du serveur et tout et tout. Mais je partagerais volontiers les éléments de projet (peut être plutôt via Google Drive je pense).

Juste une précision, en ce moment ça merdouille. En effet, j’ai modifié la structure du projet en profondeur grâce à l’aide du forum développez.net. Mais ça c’est Ok, ça fonctionne…
Par contre, pour une raison que j’ignore, l’upload vers dropbox ne fonctionne pas en ce moment. Donc je fais de l’upload à la main (et c’est looong, c’est pour ça que c’était bien quand il se débrouillait sans moi).

En résumé, dès que je suis de retour chez moi je regarde si les problèmes n’ont pas été corrigés (j’ai vu qu’il y avait eu une maj récente du projet DropboxUploader et j’ai eu une réponse à ma question sur le projet github) et si ça fonctionne bien, je partagerais le projet ici.

Pas de soucis , je ne suis pas pressé . Merci bcp !

Slt , je vient de recevoir mon raspberry pi 4 , avez vous eu le temps de finir ?

Bonjour,

Oui, c’est bon, j’ai eu le temps de finir. Tout est revenu à la normale. Du coup tous les éléments sont trouvables sur ce github. Je dois encore compléter le readme sur lequel il manque d’utiles précisions…

Juste quelque précisions :

  • Les fichiers .service et .timer doivent impérativement être rangés dans /etc/systemd/system
  • Pour paramétrer dropbox_uploader il faut absolument le faire en root pour que l’upload fonctionne. Un sudo dropbox_uploader suffira.
  • Pensez à actualiser les chemins dans les fichiers (vers le serveur, vers dropbox_uploader, vers les dossiers de sauvegarde,…). En fait, tous les fichiers sont à modifier sauf le run.sh
  • Je ne sais pas quelle version du raspberry pi 4 vous avez pris, mais si vous disposez de plus d’1Gb de RAM, n’hésitez pas à modifier le run.sh pour permettre au serveur de l’exploiter.
  • Si vous souhaitez désactiver certaines fonctionnalités (par exemple, la sauvegarde des logs), il suffit d’ajouter un # au début de la ligne concernée dans le fichier updatespigot.sh.
  • Dernier conseil, je recommande d’avoir un dossier pour le serveur, un dossier pour l’extraction des éléments buildtools (il créée beaucoup de chose en fonctionnement. D’ailleurs, c’est dans ce même dossier que je range le script updatespigot.sh), un dossier pour les sauvegardes du serveur, un fichier pour les sauvegardes des logs.

C’est à peu près tout ce à quoi je pense. Si vous avez des soucis, des questions, n’hésitez pas à me les poser, j’oublie peut être une chose ou deux…

NB : Ce n’est pas pour tout de suite, mais je compte faciliter la procédure d’installation en créant un script qui installera automatiquement les différents fichiers, quitte à demander à l’utilisateur d’indiquer des noms de fichier, voire des chemins de dossiers… Mais ce n’est clairement pas pour tout de suite…

Voilà, j’espère que ça vous sera utile.

Salut, je reçois mon raspberry pi4 demain peut t’on ce contacter en priver car j’ai du mal à comprendre comment tout bien configurer.
Mon discord :nailil#0624

Bonjour,

Je suis de retour à mon domicile et j’ai pu fouiller un peu mes archives. Après quelque tests je suis parvenu à stabiliser une version de mon installeur maison.
Il n’est pas encore complet mais devrais permettre de faire le gros des manipulations sans se poser de questions (testé sur une machine virtuelle raspbian).
Il y a 2 ou 3 manips à faire après, mais c’est détaillé.
Si vous voulez je peux être dispo sur discord.

A plus