
Paquet Minecraft pour Synology NAS – Resoudre les problemes d’un serveur MineCraft
METTRE À JOUR – Les instructions et les remarques sur cette page s'appliquent aux packages Minecraft et CraftBukkit hébergés sur mon dépôt. Fonctionne maintenant sur les modèles QorIQ CPU Synology!
Minecraft est un jeu intriguant. Je ne l'ai acheté que récemment, après qu'un ami l'ait recommandé. Il y a beaucoup à aimer: le style visuel rétro saisissant, la musique douce et sporadique, explorer le monde généré par les procédures, la façon logique de concevoir les objets, la collaboration multijoueur et le gameplay émergent. Notch, son créateur, mérite certainement la fortune sur laquelle il est assis. Je vous recommande vivement de regarder ce court documentaire à ce sujet.
Juste après avoir publié le package Java pour Synology, quelques personnes ont indiqué vouloir utiliser ce logiciel pour installer un serveur Minecraft. Maintenant que j'ai le jeu, j'ai décidé d'essayer aussi. J'avais supposé que les processeurs ARM ne seraient pas capables de l'exécuter, et les premiers tests ont semblé le confirmer. J’ai décidé qu’il serait néanmoins intéressant de créer un paquet car les unités Intel CPU NAS seraient bien, surtout avec leur RAM supplémentaire. Cependant, avec un peu de performances, il fonctionne de manière acceptable (pas de décalage en cas d’extraction de blocs) sur mon DS111 alimenté par ARM, qui ne dispose que de 256 Mo. La charge du processeur est de 100% pendant un certain temps au début, mais peu de temps après sa lecture, elle se stabilise à environ 60%. J'ai brièvement testé avec deux joueurs connectés et après un peu de retard au début (une seconde de retard pour exploiter un bloc), il semble s'être calmé.

Minecraft indiquant la distance de tirage et la charge du serveur s'exécutant sur un Synology DS111
Sommaire
Installation
- Ce paquet n'est pas spécifique à la CPU. Si vous avez Java, cela fonctionnera. Pour le moment, cela signifie les processeurs ARM, Intel et QorIQ PowerPC, mais pas les anciens PowerPC.
- Dans le Panneau de configuration de l'utilisateur dans DSM, activez le service User Homes.
- Installez le package directement à partir du Centre de paquets dans DSM. Dans Paramètres -> Sources de paquets ajouter mon URL de référentiel de paquets qui est http://packages.pcloadletter.co.uk. Vous devrez d'abord installer l'un de mes packages Java SE pour Embedded (Java 6 ou 7).
Remarques
- Le paquet récupère le fichier jar du serveur minecraft à partir de Mojang lors de son installation. Je me plie à leur souhait que personne ne le redistribue.
- Le script serveur démon vérifie la quantité de RAM système et adapte la taille du segment de mémoire Java de manière appropriée. Il applique également quelques modifications de performances à Java pour tenter de réduire la latence de la récupération de place.
- La première fois que vous exécutez le serveur, un nouveau monde sera créé, ce qui peut prendre quelques minutes. Vous ne pouvez pas interrompre cela, mais vous pouvez vérifier la progression en consultant à plusieurs reprises l'onglet Log.
- Étant donné que le temps que cela prend pour jouer à Minecraft peut être considérable, lorsque vous désinstallez le paquet, la sauvegarde sera sauvegardée. monde dossier et paramètres à /volume1/public/minecraftworld.todaysdate.bak pour empêcher la suppression accidentelle.
- Le package prend en charge les mises à niveau vers les versions futures tout en préservant la monde dossier et paramètres du serveur.
- Si vous souhaitez transplanter un dossier mondial existant sur le serveur, copiez-le dans / volume1 / @ appstore / Minecraft. Vous aurez aussi besoin de courir chown -R minecraft / volume1 / @ appstore / Minecraft accorder la propriété des fichiers à l'utilisateur démon.
- La première fois que vous exécutez le package, le fichier de configuration du serveur /volume1/@appstore/Minecraft/server.properties est généré. Lors de son prochain lancement, mon script réduit la distance de dessin par défaut pour les processeurs ARM de 10 morceaux à 7 morceaux. Cela était approprié pour mon DS111 afin d'éviter la latence lors de l'extraction de blocs, mais vous souhaiterez peut-être le réduire davantage sur les unités NAS de la série J qui ont moins de RAM et les processeurs plus lents. Autres fichiers du serveur (white-list.txt etc.) se trouvent dans le même dossier. Pour CraftBukkit, les fichiers sont dans le dossier. /volume1/@appstore/Craftbukkit/server.properties (notez la capitalisation – le projet CraftBukkit a semblé changer cela alors que j'avais déjà créé le paquet avec un minuscule «b»).
- Le moyen le plus simple d’éditer ces fichiers de configuration si vous n’êtes pas vraiment sûr de Linux est d’installer le package Merty de Config File Editor, qui nécessite également l’installation du package officiel Synology Perl (à partir de DSM 4.2). Chargez Config File Editor, puis dans le menu déroulant, éditez sa propre configuration (la dernière de la liste) et ajoutez les lignes suivantes:
/volume1/@appstore/Minecraft/server.properties,Minecraft-properties
/volume1/@appstore/Minecraft/white-list.txt,Minecraft-whitelist
/volume1/@appstore/Minecraft/ops.txt,Minecraft-ops
Assurez-vous d’ajouter une ligne vierge supplémentaire en dessous, sauvegardez, puis relancez CFE et vous aurez des entrées pour Minecraft dans la liste déroulante. Vous devez redémarrer le package Minecraft pour que les modifications prennent effet. - Il était un peu délicat d’arrêter le serveur en douceur sans tuer le processus Java. Nous avons besoin qu'il s'éteigne correctement pour enregistrer les morceaux actifs sur le disque en premier. La plupart des guides sur le Net utilisent le écran binaire qui n’est pas inclus dans Synology DSM, et je ne voulais pas avoir à créer de version du paquet pour chaque architecture de CPU. J'ai trouvé que je pourrais utiliser queue envoyer la dernière ligne du fichier /tmp/stdin.minecraft au serveur (/tmp/stdin.craftbukkit pour le package CraftBukkit). Voici comment Arrêtez la commande est émise. Vous pouvez envoyer vos propres commandes, par exemple echo say Bonjour les joueurs >> /tmp/stdin.minecraft. Vous pouvez vérifier que la commande a bien été reçue en consultant le journal du serveur dans le Centre de paquets.
- Le serveur s'exécute sur le port TCP par défaut pour Minecraft (25565). Vous devrez donc transférer ce port sur votre routeur si vous souhaitez qu'il soit accessible au public.
Scripts de paquets
Pour plus d’informations, voici les scripts de package afin que vous puissiez voir ce qu’il va faire. Vous pouvez obtenir plus d'informations sur le fonctionnement des packages en lisant le wiki de Synology Package.
installer.sh
#! / bin / sh # -------- Script d'installation MINECRAFT / CRAFTBUKKIT # -------- paquet maintenu à pcloadletter.co.uk si [ "$SYNOPKG_PKGNAME" == "Minecraft" ]; puis DOWNLOAD_PATH = "http://s3.amazonaws.com/MinecraftDownload/launcher" DOWNLOAD_FILE = "minecraft_server.jar" UPGRADE_FILES = "monde server.properties * .txt" Fi si [ "$SYNOPKG_PKGNAME" == "Craftbukkit" ]; puis DOWNLOAD_PATH = "http://cbukk.it" DOWNLOAD_FILE = "craftbukkit-beta.jar" UPGRADE_FILES = "server.properties * .txt * .yml world world_nether world_the_end plugins bukkit_update" Fi DOWNLOAD_URL = "$ DOWNLOAD_PATH / $ DOWNLOAD_FILE" DAEMON_USER = "` echo $ SYNOPKG_PKGNAME | awk 'print tolower ($ _)' `" DAEMON_ID = "Utilisateur du démon $ SYNOPKG_PKGNAME" DAEMON_PASS = "` openssl rand 12 -base64 2> / dev / null` " MIGRATION_FOLDER = "$ DAEMON_USER _data_mig" ENGINE_SCRIPT = "/ var / packages / $ SYNOPKG_PKGNAME /scripts/launcher.sh" INSTALL_FILES = "$ DOWNLOAD_URL" source / etc / profile TEMP_FOLDER = "` find / -maxdepth 2 -name '@tmp' | head -n 1` " PRIMARY_VOLUME = "/` echo $ TEMP_FOLDER | cut -f2 -d '/' `" WORLD_BACKUP = "$ PRIMARY_VOLUME / public / $ DAEMON_USER world.`date + "% d-% b "` .bak " preinst () si [ -z $JAVA_HOME ]; puis echo "Java n'est pas installé ou n'est pas configuré correctement. JAVA_HOME n'est pas défini." echo "Téléchargez et installez le package Java Synology à partir de http://wp.me/pVshC-z5" sortie 1 Fi si [ ! -f $JAVA_HOME/bin/java ]; puis echo "Java n'est pas installé ou n'est pas configuré correctement. Le binaire Java n'a pas pu être localisé." echo "Téléchargez et installez le package Java Synology à partir de http://wp.me/pVshC-z5" sortie 1 Fi # est le service utilisateur à la maison activé? UH_SERVICE = peut-être synouser --add userhometest Testing123 "Utilisateur Test utilisateur" 0 "" "" UHT_HOMEDIR = `cat / etc / passwd postinst () cut -f6 -d ':' `" su - $ DAEMON_USER -s / bin / sh -c "echo export HOME = '$ DAEMON_HOME ' >> .profile" #changer le propriétaire de l'arborescence de dossiers chown -R $ DAEMON_USER $ SYNOPKG_PKGDEST sortie 0 preuninst () # assurez-vous que le serveur est arrêté su - $ DAEMON_USER -s / bin / sh -c "$ ENGINE_SCRIPT arrêter $ SYNOPKG_PKGNAME $ SYNOPKG_PKGDEST" dormir 10 #si un monde existe, sauvegardez-le dans le dossier public, juste au cas où ... si [ -d $SYNOPKG_PKGDEST/world ]; puis si [ ! -d $WORLD_BACKUP ]; puis mkdir -p $ WORLD_BACKUP Fi pour ITEM dans $ UPGRADE_FILES; faire mv $ SYNOPKG_PKGDEST / $ ITEM $ WORLD_BACKUP terminé Fi sortie 0 postuninst () #remove démon utilisateur synouser --del $ DAEMON_USER Répertoire de base de l'utilisateur #remove daemon (nécessaire depuis DSM 4.1) [ -e /var/services/homes/$DAEMON_USER ] && rm -r / var / services / homes / $ DAEMON_USER sortie 0 preupgrade () # assurez-vous que le serveur est arrêté su - $ DAEMON_USER -s / bin / sh -c "$ ENGINE_SCRIPT arrêter $ SYNOPKG_PKGNAME $ SYNOPKG_PKGDEST" dormir 10 #si un monde existe, sauvegardez-le si [ -d $SYNOPKG_PKGDEST/world ]; puis mkdir $ SYNOPKG_PKGDEST /../$ MIGRATION_FOLDER pour ITEM dans $ UPGRADE_FILES; faire si [ -e $SYNOPKG_PKGDEST/$ITEM ]; puis mv $ SYNOPKG_PKGDEST / $ ITEM $ SYNOPKG_PKGDEST /../$ MIGRATION_FOLDER Fi terminé Fi sortie 0 postupgrade () # utiliser les fichiers de données migrés de la version précédente si [ -d $SYNOPKG_PKGDEST/../$MIGRATION_FOLDER/world ]; puis pour ITEM dans $ UPGRADE_FILES; faire si [ -e $SYNOPKG_PKGDEST/../$MIGRATION_FOLDER/$ITEM ]; puis mv $ SYNOPKG_PKGDEST /../$ MIGRATION_FOLDER / $ ITEM $ SYNOPKG_PKGDEST Fi terminé rmdir $ SYNOPKG_PKGDEST /../$ MIGRATION_FOLDER L'utilisateur #daemon a été supprimé et recréé. Nous devons donc réinitialiser la propriété (nouvel UID). chown -R $ DAEMON_USER $ SYNOPKG_PKGDEST Fi sortie 0
start-stop-status.sh
#! / bin / sh # -------- MINECRAFT / CRAFTBUKKIT script start-stop-status # -------- paquet maintenu à pcloadletter.co.uk DAEMON_USER = "` echo $ SYNOPKG_PKGNAME | awk 'print tolower ($ _)' `" DAEMON_ID = "Utilisateur du démon $ SYNOPKG_PKGNAME" ENGINE_SCRIPT = "/ var / packages / $ SYNOPKG_PKGNAME /scripts/launcher.sh" DAEMON_USER_SHORT = `echo $ DAEMON_USER | couper -c 1-8` daemon_status () ps cas 1 $ en début) DAEMON_HOME = "` cat / etc / passwd | grep "$ DAEMON_ID" | cut -f6 -d ':' `" # Définissez le fuseau horaire actuel pour Java afin que les horodatages des journaux soient précis #nous devons utiliser les noms de fuseaux horaires modernes pour que Java puisse déterminer l'heure d'été SYNO_TZ = `cat /etc/synoinfo.conf | grep fuseau horaire | cut -f2 -d '"'` SYNO_TZ = `grep" ^ $ SYNO_TZ "/ usr / share / zoneinfo / Timezone / tzname | sed -e "s /^.*= //" ` grep "^ export TZ" $ DAEMON_HOME /. profile> / dev / null && sed -i "s% ^ export TZ =. * $% export TZ = '$ SYNO_TZ'%" $ DAEMON_HOME /. profile || echo export TZ = '$ SYNO_TZ ' >> $ DAEMON_HOME /. profile su - $ DAEMON_USER -s / bin / sh -c "$ ENGINE_SCRIPT début $ DAEMON_USER $ SYNOPKG_PKGDEST &" sortie 0 ;; Arrêtez) su - $ DAEMON_USER -s / bin / sh -c "$ ENGINE_SCRIPT arrêter $ DAEMON_USER $ SYNOPKG_PKGDEST" sortie 0 ;; statut) if daemon_status; puis sortie 0 autre sortie 1 Fi ;; bûche) echo "$ SYNOPKG_PKGDEST /server.log" sortie 0 ;; esac
launcher.sh
#! / bin / sh # -------- Script de lancement du serveur MINECRAFT / CRAFTBUKKIT # -------- paquet maintenu à pcloadletter.co.uk # -------- Permet un arrêt en douceur du serveur sans fichiers binaires spécifiques à la CPU # -------- Vous pouvez envoyer des commandes au serveur en cours d'exécution de la manière suivante: # -------- echo say Bonjour les joueurs >> /tmp/stdin.minecraft # -------- echo say Bonjour les joueurs >> /tmp/stdin.craftbukkit DAEMON_USER = 2 $ SYNOPKG_PKGDEST = 3 $ DAEMON_USER_SHORT = `echo $ DAEMON_USER | couper -c 1-8` JAR_FILE = $ SYNOPKG_PKGDEST / $ 2.jar cas 1 $ en début) si [ -f /tmp/stdin.$DAEMON_USER ]; puis rm /tmp/stdin.$DAEMON_USER Fi touchez /tmp/stdin.$DAEMON_USER cd $ SYNOPKG_PKGDEST si [ ! -f syno-marker.txt ]; puis si [ -f server.properties ]; puis sed -i "s / Un serveur Minecraft / Un serveur Synology Minecraft /" server.properties Le processeur #ARM est très en retard, réduisez donc la distance de dessin de 10 à 6 morceaux cat / proc / cpuinfo | grep "architecture du processeur: 5TE"> / dev / null && sed -i "s / ^ view-distance = 10 / view-distance = 6 /" server.properties #enregistre que ces mods ont été faits echo config mis à jour> syno-marker.txt Fi Fi JAVA_OPTS = '- XX: + UseConcMarkSweepGC -XX: + CMSIncrementalPacing -XX: + AggressiveOpts' RAM = $ ((`free | grep Mem: | sed -e" s / ^ * Mem: * ([0-9]* ). * $ / 1 / "` / 1024)) si [ $RAM -le 128 ]; puis JAVA_MAX_HEAP = 80M elif [ $RAM -le 256 ]; puis JAVA_MAX_HEAP = 192M elif [ $RAM -le 512 ]; puis JAVA_MAX_HEAP = 448M elif [ $RAM -le 1024 ]; puis JAVA_MAX_HEAP = 896M elif [ $RAM -le 2048 ]; puis JAVA_MAX_HEAP = 1792M elif [ $RAM -gt 2048 ]; puis JAVA_MAX_HEAP = 2048M Fi JAVA_START_HEAP = $ JAVA_MAX_HEAP tail -n 0 -f /tmp/stdin.$DAEMON_USER | java -Xmx $ JAVA_START_HEAP -Xms $ JAVA_MAX_HEAP $ JAVA_OPTS -jar $ JAR_FILE nogui ;; Arrêtez) echo say arrêter .. >> /tmp/stdin.$DAEMON_USER dormir 5 echo stop >> /tmp/stdin.$DAEMON_USER dormir 10 tuer -9 `ps | grep "^ *[0-9]* $ DAEMON_USER_SHORT. * Tail -n 0 -f /tmp/stdin.$DAEMON_USER "| sed -e" s / ^ * ([0-9]* ). * $ / 1 / "` si [ -f /tmp/stdin.$DAEMON_USER ]; puis rm /tmp/stdin.$DAEMON_USER Fi ;; esac
Changelog:
- 0015 mis à jour vers Minecraft 1.5.2, CraftBukkit beta 1.5.2-R0.1
- 0014 mis à jour vers Minecraft 1.4.7, CraftBukkit beta 1.4.7-R0.1 et correctifs pour DSM 4.2
- 013 mis à jour vers Minecraft 1.4.6 et CraftBukkit beta 1.4.6-R0.3
- 012 mis à jour vers Minecraft 1.4.5 et CraftBukkit 1.3.2-R1.0
- 011 mis à jour à Minecraft 1.4.2
- 010 mis à jour vers Minecraft 1.3.2 et CraftBukkit 1.3.1-R2.0
- 009 scripts de package entièrement réécrits pour unifier les packages Minecraft et CraftBukkit
- 008 mis à jour vers Minecraft 1.3.1, unifie la plupart des scripts en un script d'installation unique et intégrant des améliorations mineures de mes autres packages
- 007 mis à jour vers Minecraft 1.2.3
- 006 Réduit le tas Java max à 80 Mo sur des systèmes de 128 Mo, le fuseau horaire fixe prend en charge chaque démarrage de serveur
- 005 Correction du comportement de la taille maximale du tas Java sur les systèmes de plus de 2 Go de RAM.
- 004 problème SSL wget fixe empêchant le téléchargement du fichier jar sur certains systèmes
- 003 mis à jour vers Minecraft 1.1
- Les fichiers de configuration du serveur 002 sont également migrés lors des mises à niveau de version et sauvegardés lors de la désinstallation. Les modifications de mon script pour server.properties sont fabriqués qu'une seule fois, plutôt que chaque démarrage
- 001 première version publique
Commentaires
Laisser un commentaire