Cómo instalar y configurar Servidor Minecraft en Docker

⛰ Minecraft  |  Docker  |  Java Edition

Cómo Instalar Minecraft Java Server en Docker

Monta tu propio servidor de Minecraft con Docker Compose en minutos, sin complicaciones.

 ¿Por qué usar Docker para Minecraft?



Configurar un servidor de Minecraft tradicionalmente requiere instalar Java, descargar archivos del servidor, gestionar dependencias y configurar puertos manualmente. Con Docker, todo este proceso se simplifica en un único archivo de configuración.

La imagen oficial itzg/minecraft-server es mantenida activamente por la comunidad y soporta todos los tipos de servidores: Vanilla, Paper, Purpur, Forge, Fabric, Spigot y más. Además, actualiza automáticamente el servidor cuando arranca el contenedor.

Ventajas clave: Actualizaciones automáticas, backups sencillos, portabilidad entre servidores, aislamiento del sistema y reinicio automático tras caídas.

 Requisitos previos

Antes de comenzar, asegúrate de tener instalado en tu servidor:

  • Docker Engine 20.10 o superior
  • Docker Compose V2 (o la versión standalone)
  • Al menos 2 GB de RAM disponible (recomendado 4 GB para servidores con mods)
  • Puerto 25565 abierto en el firewall
  • Espacio en disco: mínimo 2 GB (puede crecer según el mundo generado)

Instalación rápida de Docker (Ubuntu/Debian)

curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh sudo usermod -aG docker $USER # Instalar Docker Compose plugin sudo apt install docker-compose-plugin

Cierra sesión y vuelve a iniciarla para que los permisos de grupo se apliquen.

 Instalación básica con Docker Compose

Paso 1: Crear el directorio del proyecto

mkdir ~/minecraft-server cd ~/minecraft-server

Paso 2: Crear el archivo docker-compose.yml

Crea el archivo de configuración con tu editor favorito:

nano docker-compose.yml

Contenido básico para un servidor Vanilla:

version: '3.8' services: minecraft: image: itzg/minecraft-server:latest container_name: minecraft-server ports: - "25565:25565" environment: EULA: "TRUE" TYPE: "VANILLA" VERSION: "LATEST" MEMORY: "2G" SERVER_NAME: "Mi Servidor Docker" MOTD: "Bienvenido a mi servidor Minecraft" MAX_PLAYERS: 20 DIFFICULTY: "normal" MODE: "survival" VIEW_DISTANCE: 10 volumes: - ./data:/data restart: unless-stopped tty: true stdin_open: true
⚠️ Importante: La variable EULA: "TRUE" es obligatoria. Al establecerla, aceptas automáticamente el EULA de Mojang/Microsoft. Sin ella, el servidor no arrancará.

Paso 3: Iniciar el servidor

docker compose up -d

El servidor descargará los archivos necesarios y generará el mundo. Este proceso puede tardar unos minutos en el primer inicio.

Paso 4: Verificar el estado

# Ver logs en tiempo real docker compose logs -f # Verificar que el contenedor está corriendo docker compose ps # Comprobar uso de recursos docker stats minecraft-server

Paso 5: Conectarse al servidor

Abre Minecraft Java Edition, ve a Multijugador → Añadir servidor y usa:

  • Desde la misma máquina: localhost
  • Desde otra máquina en la red local: la IP privada del servidor
  • Desde Internet: la IP pública del servidor (requiere abrir puerto 25565 en el router)

 Tipos de servidor disponibles

Cambia el valor de TYPE en el docker-compose.yml para usar diferentes plataformas:

VANILLA

Servidor oficial de Mojang. Sin modificaciones, puro Minecraft.

PAPER

Fork de alto rendimiento de Spigot. Recomendado para plugins y mejor TPS.

PURPUR

Fork de Paper con características adicionales y opciones de personalización.

FABRIC

Mod loader ligero y moderno. Ideal para mods del lado del servidor.

FORGE

El mod loader clásico. Amplia compatibilidad con mods populares.

NEOFORGE

Fork moderno de Forge con mejoras de rendimiento y APIs actualizadas.

SPIGOT

Versión optimizada del servidor vanilla con soporte de plugins.

BUKKIT

Plataforma clásica para plugins. Ahora sustituido por Spigot/Paper.

⚙️ Configuración avanzada

Servidor Paper con plugins

version: '3.8' services: minecraft: image: itzg/minecraft-server:latest container_name: minecraft-paper ports: - "25565:25565" environment: EULA: "TRUE" TYPE: "PAPER" VERSION: "1.21.1" MEMORY: "4G" MOTD: "Servidor Paper con Plugins" MAX_PLAYERS: 30 VIEW_DISTANCE: 12 ENABLE_RCON: "true" RCON_PASSWORD: "tu-password-segura" RCON_PORT: 25575 volumes: - ./data:/data - ./plugins:/data/plugins restart: unless-stopped tty: true stdin_open: true

Descarga los archivos .jar de los plugins y colócalos en la carpeta ./plugins.

Servidor Forge con mods

environment: EULA: "TRUE" TYPE: "FORGE" VERSION: "1.20.1" MEMORY: "6G" MODS_FILE: /extras/mods.txt REMOVE_OLD_MODS: "true" volumes: - ./data:/data - ./mods:/data/mods - ./mods.txt:/extras/mods.txt:ro

Coloca los archivos .jar de los mods en ./mods o lista URLs en mods.txt para descarga automática.

Opciones adicionales útiles

environment: # Whitelist ENABLE_WHITELIST: "true" WHITELIST: "jugador1,jugador2,jugador3" # Operadores OPS: "admin1,admin2" # Configuración de mundo LEVEL_TYPE: "minecraft:normal" SEED: "" SPAWN_PROTECTION: 0 ENABLE_COMMAND_BLOCK: "true" # PvP y dificultad PVP: "true" DIFFICULTY: "hard" # Zona horaria TZ: "Europe/Madrid"

️ Gestión y comandos útiles

Acceder a la consola del servidor

# Conectar a la consola (escribir comandos directamente) docker attach minecraft-server # Desconectarse sin parar el servidor: Ctrl+P, luego Ctrl+Q # Ejecutar comandos individuales sin conectarse docker exec minecraft-server rcon-cli say Hola jugadores! docker exec minecraft-server rcon-cli list docker exec minecraft-server rcon-cli op NombreJugador

Detener y reiniciar el servidor

# Detener el servidor limpiamente docker exec minecraft-server rcon-cli stop docker compose down # Reiniciar el servidor docker compose restart # Actualizar la imagen y recrear el contenedor docker compose pull docker compose up -d

Backups del mundo

# Forzar guardado antes del backup docker exec minecraft-server rcon-cli save-all docker exec minecraft-server rcon-cli save-off # Crear backup comprimido con fecha tar -czf minecraft-backup-$(date +%Y%m%d-%H%M%S).tar.gz ./data # Reactivar guardado automático docker exec minecraft-server rcon-cli save-on

 Configuración de firewall

Para que los jugadores externos puedan conectarse, debes abrir el puerto 25565:

En Linux (UFW)

sudo ufw allow 25565/tcp sudo ufw status

En router doméstico

Si alojas el servidor desde casa, configura el port forwarding en tu router:

  • Puerto externo: 25565
  • Puerto interno: 25565
  • Protocolo: TCP
  • IP interna: la IP local de tu servidor
Consejo: Asigna una IP estática local a tu servidor desde la configuración DHCP del router para que el port forwarding no se rompa al cambiar la IP.

⚡ Optimización y rendimiento

  • Asigna memoria suficiente: 2GB mínimo para vanilla, 4-6GB para servidores con mods.
  • Reduce VIEW_DISTANCE: Valores entre 8-10 reducen significativamente la carga del servidor.
  • Usa Paper en lugar de Vanilla: Mejora el rendimiento sin perder compatibilidad.
  • Limita recursos del contenedor: Añade deploy.resources.limits en el compose para evitar que consuma toda la RAM del sistema.
  • Backups regulares: Automatiza backups con cron o usa la imagen itzg/mc-backup que se integra automáticamente.

 Solución de problemas comunes

El contenedor no arranca

# Revisar logs completos docker compose logs minecraft # Verificar que el puerto no esté ocupado sudo netstat -tulpn | grep 25565

Error de permisos en volúmenes

# El contenedor corre como UID 1000 por defecto sudo chown -R 1000:1000 ./data

Servidor muy lento o con lag

  • Aumenta la memoria asignada en MEMORY
  • Reduce VIEW_DISTANCE a 8 o menos
  • Usa Paper en lugar de Vanilla
  • Verifica que tu servidor tiene suficiente CPU y RAM libre

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.