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.