This is an old revision of the document!
Table of Contents
Instalar un servidor en Minecraft sencillo
Intro
Pasos para la instalación de un servidor de Minecraft en linux de forma sencilla y elegante. Nada de complicados scripts o complejas secuencias de pasos.
Creando usuario
Crearemos un usuario que será el que aloje todos los datos del servidor. A mí me gusta crearlo con su propio grupo de seguridad (usuario minecraft, grupo minecraft).
useradd --create-home --user-group --system minecraft2
Instalación y configuración de Java
El servidor tiene que tener instalado java y funcionando. Omito las instrucciones específicas. Simplemente incluyo una breve instruccion para comprobar que nuestro usuario tiene capacidad para ejecutar java:
minecraft@server:~$ java -version java version "1.7.0_75" OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~trusty1) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
Descargar servidor
Se descarga de aquí: https://minecraft.net/download
Para descargar versiones antiguas, es preciso “fabricar” la dirección correcta de descarga. Por ejemplo, la dirección de descarga para la popular versión 1.6.4 es ésta:
https://s3.amazonaws.com/Minecraft.Download/versions/1.6.4/minecraft_server.1.6.4.jar
Para otras versiones, he comprobado que basta con cambiar los números y pegar la url resultante en un navegador.
Simplemente dejaremos el fichero minecraft_server.1.6.4.jar en la carpeta del usuario y le pondremos los permisos adecuados.
Para facilitarnos el mantenimiento en el futuro crearemos un enlace simbólico minecraft.current.jar
que apuntará al servidor actual: así, la actualización de versiones en un futuro pasará sólamente por cambiar el enlace simbólico:
root@server:/home/minecraft# su minecraft minecraft@server:~$ ln -s minecraft_server.1.6.4.jar minecraft.current.jar
Instalar servicio
Para ejecutar minecraft tengo un servicio creado que sencillamente instalaremos en /etc/init.d
–Debian/Ubuntu– o bien en /etc/rc.d
–SuSE–.
Puedes descargarlo aquí:
Al instalarlo, configuraremos la ruta correcta a la máquina virtual java:
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre/
y el directorio home de nuestro usuario “minecraft” (si se llama “minecraft”, te funcionará como está). También hay que configurar el acceso al fichero jar. En nuestro caso nos bastará con poner la ruta del enlace simbólico que creamos en el paso anterior:
SERVER_HOME=/home/minecraft MINECRAFT_JAR=$SERVER_HOME/minecraft.current.jar
Instalando mods y mundo
Apéndice: servicio para ejecutar minecraft
El servicio levanta con los privilegios del usuario minecraft
una máquina virtual java con los parámetros adecuados y la referencia al JAR del servidor. Mi servicio está configurado con unos parámetros de ms y mx (que indican los consumos máximos de la memoria de Java) de 1.500M, aunque pueden configurarse a la baja (configuración mínima 1000M).
Para evitar posibles cuelgues de la máquina virtual java, en el comando stop hago primero un gentle kill y tras cuatro segundos un hard kill, eliminando el fichero PID al final del proceso.
#!/bin/bash # # minecraft.sh - to start / stop the minecraft server # # http://minecraft.gamepedia.com/Tutorials/Setting_up_a_server # ### BEGIN INIT INFO # Provides: minecraft1 # Required-Start: $local_fs $network $syslog # Required-Stop: $local_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Minecraft server 1 ### END INIT INFO JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre/ JAVA=$JAVA_HOME/bin/java SERVER_HOME=/home/minecraft MINECRAFT_JAR=$SERVER_HOME/minecraft.jar PID_FILE=$SERVER_HOME/pidfile umask 022 test -f "$JAVA" || exit 0 test -f "$MINECRAFT_JAR" || exit 0 case $1 in start) echo "Starting minecraft server" cd "$SERVER_HOME" sudo -u minecraft $JAVA -Xms1300M -Xmx1500M -Djava.awt.headless=true -jar "$MINECRAFT_JAR" nogui &> console.log & echo $! > "$PID_FILE" echo "done" ;; stop) echo "Stopping minecraft server" # first make a gentle kill kill $(cat "$PID_FILE") # then sleep and make a hard kill sleep 4s kill -9 $(cat "$PID_FILE") 2> /dev/null rm "$PID_FILE" echo "done" ;; reload) $0 stop $0 start ;; status) if kill -0 $(cat "$PID_FILE") ; then echo "Minecraft process is running" else echo "Minecraft process has stopped" fi ;; *) echo "Usage: $0 start | stop | reload | status" ;; esac exit 0