Servidor Minecraft Java Edition con Docker

Publicado por


Docker

Servidor Minecraft Java Edition con Docker

Imagen Docker que automatiza la instalación y actualización de versiones, modloaders y modpacks al inicio del contenedor

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Servidor Minecraft Java Edition con Docker en el canal GENBYTE:

¿Qué es Servidor Minecraft Java Edition con Docker?

itzg/docker-minecraft-server es una imagen Docker diseñada para ejecutar un servidor de Minecraft Java Edition. Su característica principal es la capacidad de instalar y actualizar automáticamente versiones del juego, cargadores de mods (modloaders), modpacks y plugins en el arranque del contenedor. El proyecto está mantenido activamente, cuenta con más de 14.000 estrellas en GitHub y se distribuye bajo licencia Apache-2.0. La imagen oficial está disponible en Docker Hub como itzg/minecraft-server y la documentación completa se encuentra en docker-minecraft-server.readthedocs.io.

Gestión automática de versiones, modloaders, modpacks y plugins mediante variables de entorno al iniciar el contenedor

Características principales

Instalación automática de versiones

Descarga y configura automáticamente la versión de Minecraft especificada (LATEST, SNAPSHOT o versión concreta) al iniciar el contenedor.

Soporte para múltiples tipos de servidor

Compatible con Vanilla, Paper, Spigot, Purpur, Fabric, Forge, Quilt, NeoForge y otros cargadores de mods y plataformas de modpacks.

Gestión de mods y plugins

Descarga automática de mods y plugins desde URLs, CurseForge, Modrinth u otras fuentes, con limpieza de archivos obsoletos.

Configuración por variables de entorno

Todas las propiedades del servidor (server.properties), ajustes de JVM, EULA, RCON y demás parámetros se configuran mediante variables de entorno.

Compatibilidad Bedrock opcional

Permite añadir compatibilidad con clientes Bedrock mediante Geyser/Floodgate o usando la imagen hermana itzg/minecraft-bedrock-server.

Herramientas integradas

Incluye rcon-cli para administración remota, mc-monitor para healthchecks, mc-server-runner para ejecución robusta y mc-image-helper para gestión de imágenes.

Requisitos del sistema

  • Docker Engine 20.10 o superior
  • Docker Compose v2 (recomendado) o docker-compose v1
  • Mínimo 2 GB de RAM disponibles para el contenedor (recomendado 4 GB o más para modpacks)
  • Puerto 25565 TCP accesible para conexiones de jugadores
  • Sistema de archivos con soporte para volúmenes persistentes (bind mount o named volume)

Instalación con Docker Compose

Despliegue básico con Docker Compose

Crea un archivo docker-compose.yml con el siguiente contenido. El contenedor requiere aceptar la EULA mediante la variable EULA=true y expone el puerto 25565. Los datos del servidor se persisten en un volumen llamado data.

services:
mc:
image: itzg/minecraft-server
environment:
EULA: "true"
ports:
– "25565:25565"
volumes:
– data:/data
stdin_open: true
tty: true
restart: unless-stopped
volumes:
data: {}

Iniciar el servidor

Ejecuta docker compose up -d para descargar la imagen, crear el volumen y arrancar el contenedor en segundo plano. La primera descarga de la versión de Minecraft puede tardar varios minutos.

docker compose up -d

Ver logs de arranque

Consulta los logs para verificar que la instalación de la versión, modloader o modpack seleccionados se completa correctamente.

docker compose logs -f mc

Acceder al proyecto

Conexión de jugadores (Java Edition)

Los jugadores se conectan mediante la IP del host y el puerto 25565 (puerto por defecto de Minecraft Java Edition). Si el contenedor está en la misma máquina, usa localhost:25565.

Consola del servidor (stdin/tty)

Gracias a stdin_open: true y tty: true, puedes adjuntarte a la consola del servidor con docker attach mc o docker compose attach mc para ejecutar comandos de operador (op, gamemode, etc.). Desadjunta con Ctrl+P, Ctrl+Q.

RCON (administración remota)

El contenedor incluye rcon-cli. Habilita RCON definiendo RCON_PASSWORD y RCON_PORT (por defecto 25575) en las variables de entorno. Luego usa docker exec mc rcon-cli <comando> para administrar el servidor sin adjuntar la consola.

Healthcheck integrado

El Dockerfile define un healthcheck que ejecuta mc-health cada 30 segundos tras un periodo inicial de 2 minutos. Docker reiniciará el contenedor si el healthcheck falla repetidamente (restart: unless-stopped).

Casos de uso

  • Servidor Vanilla sencillo para amigos o familia
  • Servidor con Paper/Spigot/Purpur para mejor rendimiento y plugins
  • Servidor modded con Forge, Fabric, Quilt o NeoForge
  • Despliegue de modpacks completos desde CurseForge, Modrinth, FTB, ATLauncher o URLs directas
  • Entornos de prueba con versiones SNAPSHOT o versiones antiguas específicas
  • Servidores híbridos Java/Bedrock añadiendo Geyser y Floodgate
  • Automatización de actualizaciones programadas mediante reinicios del contenedor

Configuración avanzada

Seleccionar versión y tipo de servidor

Define VERSION (ej. 1.21.1, LATEST, SNAPSHOT) y TYPE (VANILLA, PAPER, SPIGOT, PURPUR, FABRIC, FORGE, QUILT, NEOFORGE, etc.). Para modloaders, usa FORGE_VERSION, FABRIC_VERSION, etc. Consulta la documentación para la lista completa de tipos y versiones soportadas.

environment:
EULA: "true"
TYPE: "PAPER"
VERSION: "1.21.1"

Configurar propiedades del servidor

Cualquier propiedad de server.properties se establece con el prefijo SERVER_ y el nombre en mayúsculas con guiones bajos. Ejemplo: SERVER_MOTD, SERVER_MAX_PLAYERS, SERVER_DIFFICULTY, SERVER_ONLINE_MODE.

environment:
SERVER_MOTD: "Mi servidor GENBYTE"
SERVER_MAX_PLAYERS: "20"
SERVER_DIFFICULTY: "hard"
SERVER_ONLINE_MODE: "true"

Instalar mods y plugins automáticamente

Usa MODS, PLUGINS, MODPACK o variables específicas como CURSEFORGE_API_KEY, MODRINTH_PROJECT_ID. Los archivos se descargan en /data/mods y /data/plugins al inicio y se limpian los que ya no estén en la lista.

environment:
MODS: "https://example.com/mod1.jar,https://example.com/mod2.jar"
PLUGINS: "https://example.com/plugin.jar"
# O usar modpacks
MODPACK: "https://www.curseforge.com/minecraft/modpacks/mi-modpack/files/1234567"

Ajustes de JVM y memoria

Controla la memoria con MEMORY (ej. 4G) y parámetros adicionales con JVM_OPTS. El script de inicio calcula heurísticamente los flags de GC si no se especifican.

environment:
MEMORY: "4G"
JVM_OPTS: "-XX:+UseG1GC -XX:MaxGCPauseMillis=50"

UID/GID y permisos de archivos

Por defecto el contenedor corre como UID=1000 GID=1000. Cambia UID y GID para que coincidan con el usuario del host y evitar problemas de permisos en bind mounts.

environment:
UID: "1000"
GID: "1000"

Gestión y mantenimiento

Actualizar la imagen y versión del servidor

Descarga la imagen más reciente y reinicia el contenedor. Si VERSION=LATEST, el script de inicio descargará la última versión estable de Minecraft o del modloader seleccionado.

docker compose pull
docker compose up -d

Copias de seguridad del mundo

Los datos del mundo están en el volumen data (montado en /data). Realiza backups copiando el contenido del volumen o usando docker run –volumes-from con una imagen de backup. Detén el servidor antes de copiar para consistencia.

# Ejemplo: backup a tar.gz en host
docker compose stop mc
docker run –rm -v minecraft_data:/data -v $(pwd):/backup alpine tar czf /backup/mundo-$(date +%F).tar.gz -C /data .
docker compose start mc

Limpiar mods/plugins obsoletos

El script de inicio elimina automáticamente de /data/mods y /data/plugins los archivos que ya no estén listados en las variables MODS/PLUGINS/MODPACK. No se requiere acción manual.

Revisar healthcheck y logs

Comprueba el estado de salud con docker inspect –format='{{.State.Health.Status}}' mc. Los logs del healthcheck y del servidor están disponibles en docker compose logs mc.

docker inspect –format='{{.State.Health.Status}}' mc

Stack técnico

  • Base: eclipse-temurin:25-jre (OpenJDK 25 JRE)
  • Shell: scripts de inicio y utilidades en Bash
  • Go: easy-add, restify, rcon-cli, mc-monitor, mc-server-runner, mc-image-helper (binarios estáticos)
  • Java: Log4jPatcher para mitigación de CVE-2021-44228
  • Docker: multi-stage build, BuildKit, healthcheck nativo, volúmenes, variables de entorno
  • Documentación: Sphinx/ReadTheDocs

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *