Minecraft (java + bedrock) con podman

Después de algún uso ocasional del servidor local que teníamos para Minecraft en casa y luego de comenzar a usar RHEL en el bastión, Derek me pidió jugar con él hoy en su día de cumpleaños. Como me ve ocasionalmente configurando todo desde la línea de comandos me hizo algunas preguntas, a las que le iba explicando los detalles de lo que hacía.

Decidí habilitarle una cuenta en el bastión para que pudiera acceder por SSH y levantará el mismo el servidor de Minecraft. En el proceso le terminado explicando cómo funciona la arquitectura cliente-servidor, como funcionan los scripts bash, los permisos de ejecución, los contenedores y algunos otros detalles que escapan de mi memoria en este momento.

Quizás Derek no capte todos esos conceptos en este momento, pero tampoco es la primera vez que los escucha, ya que otras veces se los he mencionado. El punto es que a veces la mejor forma de aprender es tocando y rompiendo cosas y así algo aprende en el proceso.

Conectando a todos

Además de la laptop de Derek donde ejecuta principalmente Minecraft Java, no tenemos otros dispositivos que tengan Minecraft Java (que no sea otra laptop que vaya a usar Danté). Así que se me ocurrió explorar algunas opciones para que jueguen ambos.

PojavLauncher (Android)

Después de investigar un poco, descubrí una aplicación de código abierto para Android llamada PojavLauncher. La instalé desde Play Store y funcionó a las mil maravillas, luego de una mínima configuración.

Danté, literalmente me arrancó el teléfono de las manos cuando vio que abrió Minecraft. No me dio ni siquiera tiempo de explicarle cómo funcionaba. Unos segundos después ya estaba picando madera de un árbol con su hermano dentro del servidor.

Como esta versión es Minecraft Java, no tiene ningún problema en conectarse a nuestro servidor de minecraft que se ejecuta con podman. El único problema que encuentro con esta aplicación es que calienta excesivamente mi Poco X3 Pro y sus controles que para mi concepto son bastante complejos. Esta opción requiere una inversión de $0.00.

Minecraft oficial (Android)

Danté a sus cortos 4 años, ha estado expuesto a tecnología mucho más que Derek. Juega Roblox y Terraria en su tablet. Ha jugado con el Nintendo Switch de su hermano muchos juegos. Incluso ha jugado en el Super Nintendo Classic y el Nintendo 64 que hay en casa.

Ante el calentamiento excesivo que produce PojavLauncher, se me ocurrió instalar la versión oficial para Android de Minecraft. El único problema es que ejecuta la versión Minecraft Bedrock y esto me lleva a la disyuntiva de tener otro contenedor con Minecraft Bedrock, pero por fortuna encontre este proyecto: TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate. Geyser actúa como puente entre los clientes de Minecraft Bedrock y Minecraft Java. Esta opción requiere una inversión de $6.99 en la Play Store.

Minecraft (Nintendo Switch)

Derek ya tiene en su Nintendo Switch, Minecraft Dungeons. No es exactamente lo mismo, pero es algo. Como también existe la versión oficial para Nintendo Switch, decidí aventurarme y adquirir la versión digital del juego. Esta opción requiere una inversión de $29.99 en la Nintendo Store.

Minecraft para Nintendo Switch ejecuta también Minecraft Bedrock por lo que potencialmente puedo conectarlo al mismo servidor contenerizado con Geyser y que así jueguen Derek en su computadora con Minecraft Java y Danté desde el Switch con Minecraft Bedrock.

Servidores Minecraft contenerizados

itzg/minecraft

Este contenedor solo es útil si todos los clientes son de Minecraft Java. Anteriormente escribí una pequeña guía sobre como utilizar este contenedor. El contenedor de itzg/minecraft esta diseñado para usar con docker, pero nada nos impide usarla con podman. La función de autopausa diseñada para detener el servidor de minecraft y que no consuma tantos recursos cuando no hay nadie conectado funciona gracias jmighion.

Este es el script con el cual Derek levanta el contenedor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
# start the minecraft server

NAME=minecraft-server
VOLUME=$HOME/minecraft-server/data

podman ps | grep $NAME && exit

TAG=java17-alpine

podman run -d -it --rm -p 25565:25565 -e EULA=TRUE \
    --name $NAME \
    -e SEED=4413479 \
    -e MODE=creative \
    -e SERVER_NAME="Servidor Serrano-Duarte" \
    -e ONLINE_MODE=FALSE \
    -e TZ=America/Panama \
    -e AUTOPAUSE_KNOCK_INTERFACE=tap0 \
    --cap-add=CAP_NET_RAW \
    --network slirp4netns:port_handler=slirp4netns \
    -v $VOLUME:/data itzg/minecraft-server:$TAG

a

TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate

Este contenedor resulta una propuesta interesante ya que integra todo lo que necesitamos para jueguen juntos clientes con Minecraft Java y Minecraft Bedrock. La contraparte es que es un poco más laborioso jugar con semillas específicas o cambiar el modo de juego.

Este es el script con el cual Derek levanta el contenedor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
# start the minecraft server

NAME=minecraft-multi
VOLUME=$HOME/minecraft-multi/data

podman ps | grep $NAME && exit

TAG=latest

podman run -d -it \
    --name minecraft-java-bedrock \
    -p 25565:25565 \
    -p 19132:19132/udp \
    -p 19132:19132 \
    -e NoPermCheck="Y" \
    -e TZ="America/Panama" \
    --restart unless-stopped \
    -v $VOLUME:/minecraft 05jchambers/legendary-minecraft-geyser-floodgate:$TAG

Para modificar la semilla, modo de juego y otras opciones del servidor, vamos a la carpeta donde se encuentra el volumen y editamos el archivo server.properties. Una vez hecho los cambios que necesitamos, eliminamos dentro de la carpeta del volumen worl*

Conclusiones

Luego de toda esta verborrea, Derek se conecta vía SSH al bastión, se mueve al directorio donde está el script que arranca el contenedor con el servidor de Minecraft, lo modifica en caso que quiera cambiar el modo, la semilla o algún otro detalle y finalmente lo ejecuta. Luego de unos segundos se conecta desde su aplicación de Minecraft y su hermano hace lo mismo desde mi teléfono.

Juegan entre ellos, comparten recursos, hacen cosas en las mesas de crafteo, hay risas, de vez en cuando Danté llora cuando algún creeper o esqueleto lo mata.

En fin, Minecraft me ha servido para introducir a Derek al mundo de la línea de comandos y que se cuenta por el mismo de la potencia de esa herramienta.

¿Y yo? Bueno, me uní a su partida para ayudar a Danté a sobrevivir mientras se adaptaba del todo al juego desde el teléfono.


Moisés Serrano Samudio Médico de atención primaria, fotógrafo aficionado, apasionado de las tecnologías relacionadas con el EdTech y el eHealth y diseñador/desarrollador de sitios web de salud. Médico, apasionado del EdTech/eHealth y diseñador/desarrollador de sitios web de salud.
Moisés Serrano Samudio

@linkmoises

Médico de atención primaria, fotógrafo aficionado, apasionado de las tecnologías relacionadas con el EdTech y el eHealth.

Entradas relacionadas

  1. Aún no hay comentarios...

Deja una respuesta

Su email no será publicado. Required fields are marked *