1 votos

¿Cómo conseguir que el servidor de Minecraft arranque con el sistema?

Estoy tratando de averiguar cómo conseguir mi servidor de Minecraft para iniciar con mi sistema. Actualmente estoy en Ubuntu 21.04, kernel 5.11 y mi DE es Gnome 3. Yo estaba siguiendo este puesto sobre el Ubuntu StackExchange para configurar un servicio de Minecraft en systemd, después de un montón de jugueteo que fue capaz de conseguir que se inicie, pero me da error de Java, y El servidor dice que tengo que aceptar la eula a pesar de que ya tengo.

Esto es lo que hay en mi /etc/systemd/system/minecraft.service archivo:

Description=Minecraft server
Wants=network.target
After=local-fs.target network.target

[Service]
User=minecraft
Group=minecraft
UMask=0027

EnvironmentFile=/etc/conf.d/minecraft
KillMode=none 
SuccessExitStatus=0 1 255

NoNewPrivileges=true
PrivateDevices=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=full

ExecStart=/usr/bin/java -Xms2G -Xmx3G -jar /etc/conf.d/Minecraft/server.jar --nogui
# ExecStop=/usr/bin/mcrcon -H localhost -p ${RCON_PASSWD} stop

[Install]
WantedBy=multi-user.target

Sé que algunas cosas podrían eliminarse de él, como el EnvironmentFile ya que no lo estoy usando, pero no he terminado de recortar esto todavía.

Esto es lo que muestra mi terminal cuando ejecuto sudo systemctl status minecraft.service :

     Loaded: loaded (/etc/systemd/system/minecraft.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Wed 2021-05-12 21:25:55 EDT; 14min ago
    Process: 5036 ExecStart=/usr/bin/java -Xms2G -Xmx3G -jar /etc/conf.d/Minecraft/server.jar --nogui (code=exited, status=0/SUCCESS)
   Main PID: 5036 (code=exited, status=0/SUCCESS)

May 12 21:25:50 terrys-nas java[5036]:         at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
May 12 21:25:50 terrys-nas java[5036]:         at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
May 12 21:25:50 terrys-nas java[5036]:         at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
May 12 21:25:50 terrys-nas java[5036]:         at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:537)
May 12 21:25:50 terrys-nas java[5036]:         at net.minecraft.server.Main.<clinit>(SourceFile:57)
May 12 21:25:50 terrys-nas java[5036]: 2021-05-12 21:25:50,764 main ERROR Null object returned for RollingRandomAccessFile in Appenders.
May 12 21:25:50 terrys-nas java[5036]: 2021-05-12 21:25:50,773 main ERROR Unable to locate appender "File" for logger config "root"
May 12 21:25:55 terrys-nas java[5036]: [21:25:55] [main/ERROR]: Failed to store properties to file: server.properties
May 12 21:25:55 terrys-nas java[5036]: [21:25:55] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
May 12 21:25:55 terrys-nas systemd[1]: minecraft.service: Succeeded.

La versión de Java que estoy utilizando es openjdk versión "1.8.0_292" y el servidor funciona bien si lo inicio manualmente.

Hice un poco más de juego alrededor, decidió borrar todo el directorio de Minecraft y sólo dejar el server.jar en él con la esperanza de que volvería a crear los archivos para mí, entonces yo podría entrar y editarlos, no lo hizo. Sólo server.jar en el directorio.

Si necesitas cualquier otra información sobre mi configuración házmelo saber, gracias por tu tiempo.

2voto

Mattio Puntos 817
  1. Tu salida sugiere que no has configurado el archivo EULA. Ejecute el servidor una vez para generar el archivo (ya lo hizo).

    A continuación, edite eula.txt por lo que dice eula=true . Entonces el servidor se iniciará.

  2. La mayoría de la gente inicia el servidor dentro de un screen sesión. Esto le permite un mayor control.

    Aquí está la mía minecraft.service mostrando cómo el servidor se inicia dentro de un screen y también se puede detener de forma segura llamando a la misma sesión. Su WorkingDirectory y la configuración de la memoria del usuario y del servidor serán diferentes, por supuesto.

    [Unit] Description=Minecraft Server After=network.target

    [Service] RemainAfterExit=yes WorkingDirectory=/home/minecraft User=minecraft

    Start Screen, Java, and Minecraft

    ExecStart=screen -s mc -d -m java -server -Xms512M -Xmx1024M -jar server.jar nogui

    Tell Minecraft to gracefully stop.

    Ending Minecraft will terminate Java

    systemd will kill Screen after the 10-second delay. No explicit kill for Screen needed

    ExecStop=screen -p 0 -S mc -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\015' ExecStop=screen -p 0 -S mc -X eval 'stuff "save-all"\015' ExecStop=screen -p 0 -S mc -X eval 'stuff "stop"\015' ExecStop=sleep 10

    [Install] WantedBy=multi-user.target

  3. BONUS #1: Puedes comprobar que el servidor está funcionando mirando top . Java debería estar consumiendo recursos. Si no es así, entonces su servidor se ha colapsado.

  4. BONUS #2: Puedes ver la salida de la pantalla del servidor de Minecraft en logs/latest.log Es una forma fácil de confirmar que el servidor está funcionando, que el mundo se ha creado con éxito, que la gente puede unirse, etc.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: