Cómo configurar un servidor Minecraft en una Raspberry Pi

Un servidor Minecraft en una Raspberry Pi title image

Minecraft es uno de los juegos más populares jamás creados. Puedes jugarlo con tus amigos en modo de juego multijugador. ¿Sabías que una Raspberry Pi 4 es lo suficientemente potente como para ejecutar un servidor de Minecraft? En este artículo, aprenderás los fundamentos de las diferentes variaciones que existen, un poco de la historia de Minecraft, y cómo configurar y operar tu propio servidor de Minecraft en tu Raspberry Pi.

Historia de los servidores de Minecraft

Para hablar de los servidores de Minecraft, tenemos que hablar brevemente de las dos "grandes" bifurcaciones de Minecraft.

Mojang, los creadores de Minecraft, crearon originalmente Minecraft en Java.

Nota divertida: Aunque se supone que Java es realmente portátil ("escribe una vez y ejecuta en cualquier lugar"), el juego depende de bibliotecas nativas que son x86. Esto significa que la versión Java de Minecraft no se ejecutará en otras plataformas, como la Raspberry Pi. La Raspberry Pi está basada en ARM (ARMv6 / ARMv7 / ARMv8, dependiendo de la Raspberry Pi que mires).

Explicaciones de Raspi Berry sobre Java

Esta versión de Java Minecraft funciona en máquinas PC, Mac y Linux (x86).

En consecuencia, hay software de servidor compatible con la edición Java (véase más adelante un análisis completo de las diferentes opciones disponibles).

Una segunda versión de Minecraft, escrita desde cero, se llamó MCPE (Minecraft Pocket Edition). Apareció originalmente en Android, y fue escrita en C++. Esta edición fue portada a Windows 10, iOS, PlayStation 4, XBox y Nintendo Switch. Ahora se conoce como Edición de Minecraft Bedrock. (Bedrock se refiere al motor escrito en C++). Esta es ahora la versión principal, que incluye el juego multiplataforma.

Por desgracia, la edición de Bedrock no es compatible con la edición de Java. Esto significa que los jugadores de Mac y Linux no pueden unirse al juego multiplataforma con él.

Y lo que es más importante, requiere su propio software de servidor, del que hablaremos brevemente a continuación.

Xbox tiene un vídeo explicativo de Bedrock frente a Java

Instalación de Spigot en Raspberry Pi OS 32 bit

Esto le guiará a través de la instalación de Spigot. Yo uso una Raspberry Pi 4 de 8 GB para esto, bajo el sistema operativo de 32 bits por defecto para empezar.

Preparar la instalación

Abra un terminal y ejecute los siguientes comandos:

sudo apt-get update
sudo apt-get install git openjdk-8-jre-headless
mkdir /home/pi/spigot-build
cd /home/pi/spigot-build

Esto actualizará la lista de paquetes, e instalará git y OpenJDK 8 (Java Runtime Environment, JRE). Además, creará un nuevo directorio para construir Spigot, y cambiará en él.

A continuación, descargue la versión más actualizada BuildTools.jar del sitio web de SpigotMC. Puede utilizar wget por esto:

wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

Se trata de una descarga rápida de unos 4 MB.

Construir espiga

Ahora empieza la construcción:

java -jar BuildTools.jar

He comenzado la construcción en 13:00usando mi Raspberry Pi 4 de 8GB, y terminó en aproximadamente 13:15 - por lo que tardó aproximadamente una hora y 15 minutos. Aquí hay una captura de pantalla de la salida inicial que verá:

Empezando a construir Spigot terminal de salida

El proceso de construcción utiliza múltiples núcleos en su Raspberry Pi:

Salida de htop del proceso de construcción de Spigot

Y aquí está la pantalla final que verás:

Construcción de Spigot completada, spigot-1.16.4.jar está listo

Una vez terminada la construcción, verás dónde se ha guardado el archivo .jar del servidor Spigot terminado. En mi caso (ya que ha construido spigot-1.16.4.jar), es:

/home/pi/spigot-build/./spigot-1.16.4.jar

El resto de los archivos ya no son necesarios, sólo necesitamos el spigot-*.jar final

Instala tu nuevo servidor Minecraft

Sugiero instalar el servidor Minecraft en la jerarquía de directorios /opt. Vamos a hacer eso en el siguiente paso, y cambiar el nombre del archivo .jar a sólo espiga.jar:

sudo mkdir /opt/spigot
sudo mv /home/pi/spigot-build/spigot-*.jar /opt/spigot/spigot.jar
sudo chown -R pi:pi /opt/spigot

El último comando cambia el propietario de este directorio al usuario pi, lo que le facilitará comenzar con los derechos necesarios, sin tener que crear un nuevo usuario. Para un sistema que está en uso por varias personas, y para mayor seguridad / control sobre los derechos, es posible que desee crear su propio usuario del sistema para ejecutar spigot.

consejo de seguridad

Ahora puedes intentar iniciar tu nuevo servidor de Minecraft, asignándole 2 GB de RAM:

java -Xms2G -Xmx2G -XX:+UseG1GC -jar spigot.jar nogui

Asignar más de 2700M a spigot en un SO Raspberry Pi de 32 bits ha hecho que el servidor no se inicie para mí:

[47.195s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 320k, guardsize: 0k, detached.
[07:57:48] [Hilo del servidor/ERROR]: Se ha encontrado una excepción inesperada
java.lang.OutOfMemoryError: no se puede crear un hilo nativo: posiblemente se ha agotado la memoria o se han alcanzado los límites de proceso/recursos
at java.lang.Thread.start0(Método Nativo) ~[?:?]
at java.lang.Thread.start(Thread.java:803) ~[?:?]
at java.util.Timer.(Timer.java:177) ~[?:?]
at org.spigotmc.Metrics.start(Metrics.java:217) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at org.spigotmc.SpigotConfig.registerCommands(SpigotConfig.java:91) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:149) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:809) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at java.lang.Thread.run(Thread.java:834) [?:?]
[07:57:48] [Hilo del servidor/ERROR]: Este informe de accidente se ha guardado en: /opt/spigot/./crash-reports/crash-2020-11-23_07.57.48-server.txt
[07:57:48] [Hilo del servidor/INFO]: Parando el servidor
[07:57:48] [Hilo del servidor/INFO]: Guardando jugadores
[07:57:49] [Hilo del servidor/INFO]: Guardando mundos

Como se indica a continuación (gestión de errores / memoria insuficiente), aunque el servidor se inicie correctamente, puede bloquearse con errores de falta de memoriasi le das demasiada memoria - por eso nos quedamos con un seguro máximo de 2 GB aquí. En un sistema operativo de 64 bits que puede ser mayor, por lo que puede utilizar más de la memoria RAM de la Raspberry Pi 4 / 8 GB.

Límites de memoria en el sistema operativo Raspberry Pi de 32 bits

Spigot generará ahora dos nuevos archivos (eula.txt & servidor.propiedades) y un directorio (Registros). Verá un error en la primera ejecución, porque el EULA no ha sido aceptado todavía:

Cargando bibliotecas, por favor espere...
[15:01:09] [main/ERROR]: Fallo al cargar las propiedades del archivo: server.properties
[15:01:09] [main/WARN]: Fallo al cargar eula.txt
[15:01:09] [main/INFO]: Necesitas estar de acuerdo con el EULA para poder ejecutar el servidor. Vaya a eula.txt para más información.

Si echas un vistazo a eula.txt, verás lo siguiente:

#Cambiando la configuración de abajo a TRUE está indicando su acuerdo con nuestro EULA (https://account.mojang.com/documents/minecraft_eula).
#Sun Nov 22 15:01:09 CET 2020
eula=false

Dirígete al sitio web de Mojang y leer el EULA (acuerdo de licencia de usuario final), antes de aceptarlo realmente.

Así es como se acepta. Ejecutar

nano /opt/spigot/eula.txt

Y edita la última línea para que diga

eula=true

Guardar con Ctrl + O (y pulsar Enter), y salir con Ctrl + X

Iniciar Spigot desde la línea de comandos

Ahora intente ejecutar el comando para iniciar el servidor de nuevo:

java -Xms2G -Xmx2G -XX:+UseG1GC -jar spigot.jar nogui

El servidor Spigot Minecraft se iniciará e inicializará.

Spigot se inicia con éxito después de haber aceptado el EULA

Durante este tiempo, la carga de su CPU estará cerca de 100 % en todos los núcleos:

htop muestra la carga del sistema durante la inicialización de Spigot

Durante el inicio, se mostrarán algunas informaciones útiles (extraídas aquí):

[15:09:05] [Hilo del servidor/INFO]: Iniciando el servidor minecraft versión 1.16.4
[15:09:06] [Hilo del servidor/INFO]: Tipo de juego por defecto: SURVIVAL
[15:09:09] [Hilo del servidor/INFO]: Iniciando servidor Minecraft en *:25565

La última línea citada anteriormente muestra que su servidor de Minecraft se vincula a todas las direcciones IP de la Raspberry Pi, y a puerto 25565 en esas direcciones IP.

La empresa tomó 190.812 s (o unos tres minutos) en mi Raspbery Pi 4 / 8GB de serie. Una vez que haya terminado, verá un aviso:

El indicador que puede utilizar para interactuar con el servidor

Interacción con el servidor Spigot

Tipo

help

en esta indicación (sin la /), para obtener una lista de posibles comandos:

se muestra una lista de posibles comandos para interactuar con el servidor

Por ejemplo, con el comando listaPuedes ver cuántos jugadores están conectados:

la lista muestra que no hay jugadores de un máximo de 20 jugadores en línea

Utilizando el comando versiónpuede ver la versión actual de su servidor, y si hay un servidor más nuevo disponible. Tenga en cuenta que tendrá que reconstruir el spigot.jar para actualizar el servidor.

Salida de versión. Este servidor está ejecutando CraftBukkit versión git-Spigot-a19903d-167ff59 (MC: 1.16.4) (Implementación de la API versión 1.16.4-R0.1-SNAPSHOT). Está ejecutando la última versión

No doy abasto ¿Está sobrecargado el servidor? La advertencia de correr detrás

Lo más probable es que vea resultados como

[08:06:11] [Hilo del servidor/WARN]: ¡No puedo seguir el ritmo! ¿Está el servidor sobrecargado? Se está ejecutando con 8444ms o 168 ticks de retraso

Encuentra la dirección IP de tu servidor Raspberry Pi Minecraft

Si no estás seguro de cuál es la dirección IP de tu Raspberry Pi, puedes encontrarla simplemente escribiendo:

ip -4 addr show

Esto mostrará una salida similar a la siguiente:

El ip -4 addr muestra la salida en la Raspberry Pi

Busca la entrada eth0 (2 en mi caso), que es la LAN de la Raspberry Pi. La dirección IP es el bit después de inet, y antes de la barra. En mi caso 192.168.1.235 :

Las partes importantes donde se encuentra la dirección IP

Conéctate a tu servidor de Minecraft

Necesitarás (por supuesto 🙂 Minecraft, que puedes conseguir en el sitio web oficial de Minecraft. Necesitas la versión Java de Minecraft, como ya se ha comentado.

Haz clic en Minecraft Java Edition

Si todavía no tienes Minecraft y necesitas comprarlo, tendrás que crear una cuenta de Mojang. Recibirás un correo electrónico de recibo con tu compra, que incluye los enlaces de descarga para Windows, macOS, Linux, Arch Linux y Debian (¡ten en cuenta que tienen que ser sistemas x86 como se ha comentado antes!)

Para Windows, por ejemplo, obtendrás MinecraftInstaller.msi:

Asistente de configuración de Minecraft Launcher

Al iniciar Minecraft, aparecerá una pantalla de inicio de sesión:

Pantalla de inicio de sesión de Minecraft

Después de iniciar la sesión, verás una pantalla de resumen, con un botón de reproducción.

Al hacer clic en Play, Minecraft descargará primero la última versión, en mi caso 1.16.4

Una vez terminada la descarga, aparecerá la pantalla principal del juego:

La pantalla principal del juego te ofrece la posibilidad de elegir entre un jugador, un multijugador y los reinos de Minecraft.

Haz clic en Multiplayer aquí. Aparecerá una advertencia sobre el juego en línea de terceros, haga clic en Proceder aquí (opcional: también puede marcar la casilla no volver a mostrar esta pantalla).

Precaución: Juego en línea de terceros

Ahora obtendrás un aviso de seguridad de Windows (si estás jugando en Windows):

Aviso de seguridad del Firewall de Windows

Haga clic en Permitir acceso aquí ("Zugriff zulassen" en alemán).

Ahora verá la siguiente pantalla:

Jugar al multijugador, buscar juegos en la red local

Para empezar rápidamente, haga clic en Conexión Directa, e introduzca aquí la dirección IP de su servidor (vea más arriba cómo averiguar cuál es):

Conexión directa, con la posibilidad de introducir la dirección del servidor y de unirse a un servidor

Minecraft recordará la dirección IP para la siguiente sesión, y te la sugerirá automáticamente

Haz clic en "Join Server". Se conectará y mostrará brevemente una pantalla de carga:

ip -4 addr show

Por último, verás el Menú del Juego:

Menú del juego

Haz clic en "Volver al juego" para empezar a jugar en tu nuevo servidor de Minecraft.

¡Minecraft Multiplayer en su propio servidor Raspberry Pi Minecraft!

Puedes pulsar F3 mientras juegas, para que aparezca una superposición con información, donde puedes ver que efectivamente estás conectado a un servidor Spigot, y comprobar la versión de Minecraft:

F3 abre una superposición con algunas estadísticas e información de depuración en Minecraft (mientras que F11 hará que vaya a pantalla completa)
Si dejas el juego sin atención durante algún tiempo en el modo de supervivencia, probablemente morirás. "buyzero fue asesinado por Zombie", dándote la opción de Respawn o ir a la pantalla de título

Salida en su servidor Raspberry Pi Minecraft

Una vez que te hayas conectado, hay algunos resultados adicionales en tu servidor de Minecraft:

[15:53:32] [Autentificador de usuario #1/INFO]: UUID del jugador buyzero es e76a3199-3ed0-4064-8086-d9f565235f71
[15:53:33] [Hilo del servidor/INFO]: buyzero[/192.168.1.202:51388] ha iniciado sesión con el id de entidad 435 en ([mundo]25.5, 64.0, 137.5)

El comando lista ahora muestra que un usuario está conectado:

[15:57:05] [Hilo del servidor/INFO]: Hay 1 de un máximo de 20 jugadores en línea: buyzero

Además, se mostrarán los eventos relacionados con tus jugadores:

[16:04:24] [Hilo del servidor/INFO]: buyzero fue asesinado por Zombie

Utilizando el comando op buyzero puede hacer que el usuario buyzero sea un operador del servidor (sustituya su nombre de usuario según corresponda):

op buyzero
[08:09:18] [Hilo del servidor/INFO]: Hizo buyzero un operador del servidor

Detener el servidor de Minecraft de la espita

Si estás en el prompt de tu servidor de Minecraft, escribe Detener seguido de Enter. Esto detendrá el servidor, guardará el mundo y le devolverá a la línea de comandos:

Detener

[08:36:57] [Hilo del servidor/INFO]: Parando el servidor
[08:36:57] [Hilo del servidor/INFO]: Parando el servidor
[08:36:57] [Hilo del servidor/INFO]: Guardando jugadores
[08:36:57] [Hilo del servidor/INFO]: buyzero perdió la conexión: Servidor cerrado
[08:36:57] [Hilo del servidor/INFO]: buyzero abandonó el juego
[08:36:57] [Hilo del servidor/INFO]: Guardando mundos
[08:36:57] [Hilo del servidor/INFO]: Guardando trozos para el nivel 'ServerLevel[world]'/minecraft:overworld
[08:37:02] [Hilo del servidor/INFO]: ThreadedAnvilChunkStorage (mundo): Todos los chunks están guardados
[08:37:02] [Hilo del servidor/INFO]: Guardando trozos para el nivel 'ServerLevel[world_nether]'/minecraft:the_nether
[08:37:05] [Hilo del servidor/INFO]: ThreadedAnvilChunkStorage (DIM-1): Todos los chunks están guardados
[08:37:05] [Hilo del servidor/INFO]: Guardando chunks para el nivel 'ServerLevel[world_the_end]'/minecraft:the_end
[08:37:10] [Hilo del servidor/INFO]: ThreadedAnvilChunkStorage (DIM1): Todos los chunks están guardados
[08:37:10] [Hilo del servidor/INFO]: ThreadedAnvilChunkStorage (mundo): Todos los chunks están guardados
[08:37:10] [Hilo del servidor/INFO]: ThreadedAnvilChunkStorage (DIM-1): Todos los chunks están guardados
[08:37:10] [Hilo del servidor/INFO]: ThreadedAnvilChunkStorage (DIM1): Todos los chunks están guardados

Sus usuarios verán la siguiente pantalla:

Conexión perdida / Servidor cerrado / Volver a la lista de servidores

Creación de un servicio systemd

https://github.com/sindastra/systemd-minecraft

Tratamiento de errores

memoria insuficiente

Conexión perdida, excepción interna: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen (el host remoto cerró la conexión existente)

La captura de pantalla anterior muestra el mensaje de error que verán los jugadores que se conecten a tu servidor, mientras que en el lado del servidor, verás la siguiente salida de registro:

No hay suficiente memoria para que el entorno de ejecución de Java continúe.
La asignación de memoria nativa (malloc) falló al asignar 1438248 bytes para Chunk::new
Un archivo de informe de errores con más información se guarda como:
/opt/spigot/hs_err_pid1531.log

Los datos de repetición del compilador se guardan como:
/opt/spigot/replay_pid1531.log

En este caso, tienes que ajustar la configuración de la memoria. Según la recomendación de este artículo, debe ser alrededor de 1000 MB a 1500 MB menos que la memoria del sistema disponible en su Raspberry Pi. Tenga en cuenta, que para un sistema operativo de 32 bits el proceso sólo puede abordar un poco menos de 4 GB de RAM en total, por lo que incluso con una Raspberry Pi de 32 bits, el total que le da a su servidor de Minecraft debe ser menos de 2500 MB - 2000 MB para estar en el lado seguro (2GB).

Conclusión:

Siguiendo esta guía, podrás ejecutar tus propios servidores de Raspberry Pi Minecraft y jugar con tus amigos.

Referencias / Lecturas complementarias

"Minecraft" es una marca comercial de Mojang Synergies AB
Este sitio web no está afiliado a Minecraft.

1 Comentarios

  1. [...] puedes utilizar una Raspberry Pi como servidor web, servidor de archivos, servidor de impresión, servidor multimedia, servidor de Minecraft y servidor IoT [...].

Deja un comentario