Iniciar un servidor Minecraft automáticamente: servicio systemd y tarea cron
Tras un reinicio del servidor, tu servidor de Minecraft debería volver a funcionar por sí solo. Te mostramos la unidad de servicio systemd como camino limpio y la tarea cron con @reboot como alternativa.
¿Quieres que tu servidor de Minecraft vuelva a estar en línea por sí solo tras un reinicio del servidor root, sin que tengas que conectarte por SSH? Entonces estás en el lugar adecuado.
Te mostramos dos caminos: la unidad de servicio systemd como solución limpia y recomendada, y la clásica tarea cron con @reboot como alternativa rápida. Ambas variantes funcionan en todas las distribuciones de Linux habituales, es decir, en Debian, Ubuntu, AlmaLinux y Rocky Linux.
systemd o tarea cron: ¿cuál es el camino adecuado?
Una tarea cron con @reboot se configura rápido, pero solo conoce un único momento: el arranque del sistema. Si ahí sale algo mal, o si el servidor se cae más tarde, no ocurre nada más.
Una unidad de servicio systemd es el camino limpio y aporta varias ventajas:
- El servidor arranca solo cuando la red está realmente lista, en lugar de hacerlo tras un tiempo de espera estimado.
- Tras una caída, systemd reinicia el servidor automáticamente.
- Manejas el servidor con los comandos habituales
systemctl start,stop,restartystatus. - Los mensajes de error acaban en el journal y se pueden rastrear con
journalctl.
Por eso recomendamos la vía de systemd. La tarea cron la describimos más abajo como alternativa para los casos en los que systemd no está disponible.
Preparación: anota el comando de inicio, el usuario y el directorio
Antes de empezar necesitas tres datos de tu instalación actual:
- El comando de inicio de tu archivo "start.sh", por ejemplo
screen -dmS spigot java -Xmx4G -jar spigot.jar - El usuario con el que se ejecuta el servidor, en el ejemplo "spigot"
- El directorio en el que se encuentra el archivo del servidor, en el ejemplo
/home/spigot/server
El contenido típico de un start.sh tiene este aspecto:
#¡Esto es solo un ejemplo! Usa el contenido de tu propio start.sh.
screen -S spigot java -Xmx2G -jar spigot.jar
Importante: para el arranque automático, screen -S tiene que convertirse obligatoriamente en screen -dmS. El motivo: screen -S abre una sesión interactiva y espera un terminal. Durante el arranque del sistema no hay ningún terminal, así que el inicio fallaría. screen -dmS, en cambio, arranca la sesión directamente en segundo plano.
Si todavía no has instalado ningún servidor de Minecraft, primero te ayudará nuestra guía Instalar un servidor de Minecraft en Debian.
Crear una unidad de servicio systemd para el servidor de Minecraft
Crear el archivo de la unidad
Como root, crea un nuevo archivo de servicio:
nano /etc/systemd/system/minecraft.service
Introduce el siguiente contenido y adapta el usuario, el directorio, la memoria RAM y el nombre del archivo a tu instalación:
[Unit]
Description=Minecraft-Server
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
User=spigot
WorkingDirectory=/home/spigot/server
ExecStart=/usr/bin/screen -dmS spigot java -Xmx4G -jar spigot.jar
ExecStop=/usr/bin/screen -S spigot -X stuff "stop\n"
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
Las líneas más importantes de un vistazo:
AfteryWantsse encargan de que el servidor solo arranque cuando la red está disponible.Userdefine con qué usuario se ejecuta el servidor. No lo hagas funcionar nunca como root.WorkingDirectoryes el directorio con el archivo del servidor. Sin este dato, Java no encuentra el archivo JAR.ExecStopenvía el comando "stop" a la sesión de screen. Así el servidor guarda el mundo correctamente en lugar de ser terminado de golpe.Restart=on-failurereinicia el servidor automáticamente tras una caída,RestartSecdefine el tiempo de espera en segundos.
Guarda el archivo con "CTRL + X", luego "Y" y "Enter".
Activar e iniciar el servicio
Después, systemd lee el nuevo archivo, activa el arranque automático e inicia el servidor de inmediato:
systemctl daemon-reload
systemctl enable --now minecraft
El estado actual lo compruebas con:
systemctl status minecraft
Si la salida muestra "active", el servicio está en marcha. Si hay problemas, el journal entrega el mensaje de error exacto:
journalctl -u minecraft -n 50
Acceder a la consola del servidor
El servidor sigue ejecutándose dentro de una sesión de screen. Como esa sesión pertenece al usuario "spigot", cambia primero a ese usuario y abre después la consola:
su spigot
screen -r spigot
Con "CTRL + A + D" vuelves a salir de la consola sin detener el servidor.
Detener y reiniciar el servidor
A partir de ahora controlas el servidor a través de systemd:
systemctl stop minecraft
systemctl restart minecraft
Si quieres desactivar de nuevo el arranque automático, basta con:
systemctl disable minecraft
Alternativa: arranque automático mediante una tarea cron con @reboot
Si prefieres no crear una unidad de servicio, también puedes conseguir el arranque automático a través de la crontab del usuario correspondiente. Abre la crontab con:
export VISUAL=nano; crontab -e
Añade tu comando de inicio como última línea, con el prefijo @reboot:
@reboot <contenido de tu archivo start.sh>
#Este es el aspecto aproximado que debería tener el parámetro de inicio, puede diferir de tu propio script de arranque.
@reboot screen -dmS <nombre-del-screen> java -Xmx<AMOUNT>G -jar <directorio y nombre del archivo del servidor de Minecraft>.jar
#EJEMPLO:
@reboot screen -dmS spigot java -Xmx2G -jar /home/spigot/spigot.jar
Aquí también debes asegurarte de usar screen -dmS y no screen -S. Cómo arrancar del mismo modo cualquier otra aplicación o script al iniciar el servidor lo explica nuestra guía Ejecutar programas automáticamente al iniciar el servidor.
Probar el arranque automático
No te fíes de que la configuración sea correcta, pruébala una vez a propósito. Reinicia el servidor:
reboot
Espera uno o dos minutos, vuelve a conectarte por SSH y comprueba con systemctl status minecraft o con screen -ls si el servidor de Minecraft está funcionando de nuevo. Conéctate además con el cliente del juego para asegurarte de que el servidor es realmente accesible.
Errores frecuentes con el arranque automático
- screen -S en lugar de screen -dmS: con diferencia, el error más habitual. Sin
-dmel servidor no arranca durante el inicio. - Directorio incorrecto: Java no encuentra el archivo JAR. Comprueba
WorkingDirectoryo indica en la tarea cron la ruta completa al archivo JAR. - Usuario incorrecto: si el servicio se ejecuta como root, los archivos del mundo recién creados pertenecen después a root, y el usuario real del servidor ya no puede escribir en ellos.
- Memoria RAM insuficiente: si el valor detrás de
-Xmxes mayor que la RAM libre, el kernel termina el proceso de Java poco después del arranque.
Preguntas frecuentes
systemd o tarea cron: ¿cuál es la mejor opción?
¿Por qué hay que cambiar screen -S por screen -dmS?
¿Cómo accedo a la consola del servidor tras un inicio automático?
¿systemd reinicia mi servidor también después de una caída?
¿Cómo compruebo que el arranque automático funciona de verdad?
2024-2026 KernelHost GmbH. Todos los derechos reservados. Esta guía está protegida por derechos de autor. Su publicación en otros sitios web, aunque sea de forma parcial o modificada, no está permitida sin nuestro consentimiento por escrito. Las citas con indicación de la fuente y un enlace son muy bienvenidas.

