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.
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.
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.
Ver logs de arranque
Consulta los logs para verificar que la instalación de la versión, modloader o modpack seleccionados se completa correctamente.
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.
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.
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.
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.
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.
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 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.
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.
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
Referencias oficiales
- Repositorio GitHub: https://github.com/itzg/docker-minecraft-server
- Documentación oficial (ReadTheDocs): https://docker-minecraft-server.readthedocs.io/
- Imagen en Docker Hub: https://hub.docker.com/r/itzg/minecraft-server
- Comunidad Discord: https://discord.gg/DXfKpjB
- Imagen Bedrock complementaria: https://github.com/itzg/docker-minecraft-bedrock-server
- Ejemplos de configuración: https://github.com/itzg/docker-minecraft-server/tree/master/examples
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
