El objetivo
Montar un servidor de Minecraft para jugar con amigos que sea:
- Económico: auto-pause cuando no hay jugadores para no consumir recursos
- Moddeado: mods de rendimiento y calidad de vida
- Monitorizado: métricas exportadas a Prometheus
- Seguro: whitelist, sin acceso público innecesario
Stack
| Componente | Tecnología |
|---|---|
| Runtime | Docker (itzg/minecraft-server) |
| Mod Loader | Fabric 1.21.10 |
| Mods | Modrinth (descarga automática) |
| Métricas | Prometheus Exporter |
| OS | VPS Linux |
Docker Compose
El servidor se despliega con una sola imagen Docker que gestiona todo:
services:
server:
image: itzg/minecraft-server:java25
environment:
TYPE: FABRIC
VERSION: 1.21.10
MEMORY: 6G
ENABLE_AUTOPAUSE: true
AUTOPAUSE_TIMEOUT_EST: 600
MODRINTH_PROJECTS: |
lithium
krypton
ferrite-core
distanthorizons
fallingtree
universal-graves
spark
fabricexporter
Auto-Pause inteligente
Una de las mejores funcionalidades: el servidor se pausa automáticamente cuando no hay jugadores conectados durante 10 minutos. Esto reduce el consumo de CPU de ~100% a prácticamente 0%.
ENABLE_AUTOPAUSE: true
AUTOPAUSE_TIMEOUT_INIT: 120 # Segundos tras arranque
AUTOPAUSE_TIMEOUT_EST: 600 # Segundos sin jugadores
Cuando un jugador se conecta, el servidor se reanuda automáticamente en ~2 segundos.
Mods de rendimiento
El servidor usa Fabric como mod loader con mods centrados en rendimiento:
| Mod | Función |
|---|---|
| Lithium | Optimización de game logic |
| Krypton | Optimización de networking |
| Ferrite Core | Reducción de uso de RAM |
| Chunky | Pre-generación de chunks |
| Spark | Profiler para identificar lag |
Mods de gameplay
| Mod | Función |
|---|---|
| Distant Horizons | LODs para ver más lejos |
| Falling Tree | Tala árboles completos |
| Universal Graves | No pierdes items al morir |
| Ping Wheel | Ping en pantalla para comunicarse |
| Xaero’s World Map | Mapa del mundo |
Monitorización
El servidor exporta métricas a Prometheus en el puerto 9940:
- Players online
- TPS (ticks por segundo)
- Uso de memoria JVM
- Chunks cargados
Esto se integra con Grafana para tener dashboards de rendimiento del servidor.
Seguridad
- Whitelist: solo jugadores autorizados
- RCON: gestión remota del servidor con contraseña
- Puertos mínimos: solo 25565 (game) + 9940 (metrics)
Resultado
Un servidor de Minecraft que cuesta prácticamente nada cuando no se usa, arranca solo cuando alguien se conecta, y tiene monitorización completa para detectar problemas de rendimiento.