🐳 Minecraft + Docker: Mi configuración personal para no sufrir con Java
Source: Dev.to
No soy ningún gurú de Java, y seré honesto: gestionar servidores de Minecraft siempre me pareció un rompecabezas extraño. A pesar de que Minecraft pueda parecer un juego “random” de poner cubitos, la gestión técnica detrás de un servidor (hilos, memoria, recolección de basura) es un reto de optimización fascinante.
En su momento intenté crear plugins (con resultados… “interesantes”), pero aprendí a la mala que la verdadera batalla casi siempre es la configuración.
¿Te ha pasado? Quieres jugar un Survival con amigos, buscas “mejor configuración paper 1.21” y terminas con 20 pestañas abiertas y tres wikis que se contradicen.
Cansado de copiar y pegar las mismas líneas de configuración una y otra vez, se me ocurrió armar Paper Config Optimized. No quería hacer “otra guía más”. Quería un lugar donde centralizar de verdad las mejores prácticas de la comunidad en archivos listos para usar. De hecho, me he vuelto tan fan de esta “infraestructura como código” que hace poco hice mi primera contribución al repositorio oficial de la imagen de Docker que usamos (PR #3076 en itzg/docker-minecraft-server) y planeo seguir aportando para mejorar el ecosistema.
Configuración Docker Compose
services:
mc:
image: itzg/minecraft-server
container_name: paper-lite
restart: unless-stopped
ports:
- "25565:25565"
# Consola interactiva (nunca está de más para ver qué pasa)
stdin_open: true
tty: true
environment:
# Papeleo burocrático de Mojang y elección del software (Paper vuela)
EULA: "TRUE"
TYPE: "PAPER"
# Siempre a la última. Vivir al límite.
VERSION: "LATEST"
# Activamos las flags de Aikar.
# Créeme, no quieres gestionar el Garbage Collector manualmente.
USE_AIKAR_FLAGS: "true"
# Zona horaria (cámbiala a la tuya para no volverte loco con los logs)
TZ: "America/Santiago"
# ✨ LA MAGIA:
# Inyecta las configs optimizadas del repositorio automáticamente al iniciar.
PAPER_CONFIG_REPO: "https://raw.githubusercontent.com/Alpha018/paper-config-optimized/main"
volumes:
- ./minecraft-data:/data
Lo importante aquí es que le estamos diciendo a Docker dos cosas clave:
- Usa Aikar’s Flags – para que Java no se ponga caprichoso con la memoria.
- Descargar las configs del repositorio – para que el juego corra fluido sin tener que tocar nada.
Cómo iniciar el servidor
- Guarda el bloque anterior en un archivo llamado
docker-compose.yml. - Abre una terminal en la carpeta donde está el archivo.
- Ejecuta:
docker compose up -d
Docker descargará la imagen, inyectará las configuraciones optimizadas y pondrá el servidor en marcha.
Ventajas y limitaciones
| Aspecto | Detalle |
|---|---|
| Velocidad | Pasas de “cero” a “servidor optimizado” en 2 minutos. |
| Mantenimiento | Con PAPER_CONFIG_REPO, si mañana salen nuevas mejoras de rendimiento, solo reinicias el contenedor para aplicarlas. |
| Estabilidad | Usar las Aikar’s Flags elimina el ~90 % de los tirones de lag causados por Java. |
| Caja negra | Si te gusta ajustar cada milímetro de la view‑distance a mano, sentirás que pierdes algo de control (aunque siempre puedes sobrescribir los archivos). |
| Dependencia | Dependes de que el repositorio (o tu fork) esté en línea para descargar las configs al inicio. |
Esta configuración es ideal para lo que llamo “Survival Técnico Lite”. Si planeas montar una comunidad pública masiva (50 + jugadores) o quieres entender por qué 12 GB de RAM es mi número mágico para servidores grandes, consulta la guía técnica más profunda.
Guía Técnica Avanzada
☕ Échale un ojo a la Guía Técnica Avanzada en Buy Me a Coffee
Agradecimientos
A una chica que, sin saberlo, me empujó a seguir creando y programando en mi tiempo libre. A quien alguna vez fue mi chispa: para “YLP”, con gratitud… y con cicatrices que también enseñan.