Skip to content
Saltar al contenido
Volver al Blog
Docker-MC-Proxy: Ejecutando una Red de Servidores Minecraft

Docker-MC-Proxy: Ejecutando una Red de Servidores Minecraft

Alexandru Maftei
Alexandru Maftei
@ice
Actualizado
24 vistas
TL;DR:Docker-mc-proxy ejecuta proxies de Minecraft como BungeeCord y Velocity en un contenedor, permitiéndote dividir jugadores entre múltiples servidores backend. Perfecto para comunidades en crecimiento o redes con alto tráfico que necesitan balanceo de carga y redundancia.
GitHub - Proyecto de comunidad Minecraft

docker-mc-proxy (itzg/docker-mc-proxy)

Imagen Docker que proporciona una variedad de proxies de Minecraft, como BungeeCord y Velocity

Marcar en GitHub ↗
⭐ 320 estrellas💻 Shell📄 Apache-2.0

Administrar múltiples servidores de Minecraft parece excesivo hasta que no lo es. Quizás has superado un servidor único, o quieres dividir jugadores entre un mundo de supervivencia y un reino creativo sin obligar a todos a elegir. Un proxy se sitúa entre los jugadores y tus servidores reales, manejando el tráfico y dirigiendo a los jugadores donde necesitan ir. Docker-mc-proxy hace exactamente eso, y es increíblemente fácil de configurar si conoces lo básico de Docker.

Lo que Hace Este Proyecto

Docker-mc-proxy es una imagen containerizada que ejecuta un servidor proxy de Minecraft. Y soporta BungeeCord (la opción más común), Velocity (la alternativa más nueva y rápida), y Waterfall (un fork de comunidad de BungeeCord con más características). Actúa como intermediario: los jugadores se conectan a la dirección del proxy, y el proxy los reenvía a cualquier servidor backend que hayas configurado.

La imagen viene con comprobaciones de salud integradas usando mc-monitor, por lo que Docker y tus herramientas de orquestación saben inmediatamente si algo está mal. No necesitas estar mirando logs preguntándote si el proceso sigue activo.

Es parte de la suite de imágenes Docker de itzg (320 estrellas en GitHub), lo que te dice que no es un proyecto abandonado. El mantenedor lo mantiene actualizado con soporte para Java 25 y correcciones periódicas de errores.


Por Qué Lo Usarías

Las configuraciones de servidor único se colapsan una vez que alcanzas un umbral de jugadores. Un mundo 1.20 con 50 jugadores moviéndose comienza a tener lag. Podrías atrincherarte y optimizar tu configuración de servidor, claro. O puedes dividir: supervivencia en un servidor, minijuegos en otro, y dejar que el proxy maneje el enrutamiento. Los jugadores ni siquiera notan la unión.

También está la redundancia. Si tu servidor principal falla, puedes lanzar una instancia de respaldo y el proxy sigue funcionando. No estás diciéndole a 100 jugadores "el servidor se cayó, nos vemos luego".

A los proveedores de hosting les encantan los despliegues de Docker porque son predecibles y eficientes en recursos. Si estás ejecutando esto en infraestructura compartida o un VPS, la containerización significa que no estás acaparando accidentalmente RAM que quiebra la aplicación de otro.


Instalación y Configuración Básica

La forma más simple de empezar es con Docker Compose. Aquí hay un ejemplo funcional:

yaml
services:
 mc:
 image: itzg/minecraft-server
 environment:
 EULA: "TRUE"
 ONLINE_MODE: "FALSE"
 volumes: --mc-data:/data
 proxy:
 image: itzg/mc-proxy
 environment:
 TYPE: BUNGEECORD
 CFG_MOTD: "Powered by Docker"
 ports: - "25565:25577"
 volumes: -./config.yml:/config/config.yml --proxy-data:/server

volumes:
 mc-data:
 proxy-data:

El bit crítico: `ONLINE_MODE=FALSE` en el servidor backend. Los proxies necesitan esto porque están manejando la autenticación, no los servidores individuales. Sin esto, los jugadores se ven desconectados con un error "no autenticado".

El proxy mapea el puerto 25565 (el puerto estándar de Minecraft) a su interno 25577. Los jugadores se conectan a tu IP de servidor en el puerto 25565, y el proxy hace el resto.

Si quieres personalizar el MOTD del servidor (esa descripción que los jugadores ven en su lista de servidores), usa la variable de entorno `CFG_MOTD`, o mejor aún, consigue nuestro Creador de MOTD de Minecraft para diseñarlo visualmente y pégalo. Incluso puedes usar códigos de color.

Ahora necesitas configurar a dónde va el tráfico. Crea un archivo `config.yml` que le diga al proxy cuáles son los servidores backend:

yaml
servers:
 survival:
 address: mc:25565
 restricted: false
 creative:
 address: creative-server:25565
 restricted: false
listeners: --query_port: 25577
 motd: "My Minecraft Network"
 tab_list: GLOBAL_PING
 default_server: survival

Los jugadores caen en supervivencia por defecto. Pueden saltar entre mundos usando comandos en el juego.


Características Clave Que Importan

Las comprobaciones de salud integradas son legítimamente impresionantes. Docker puede ver si el proxy es responsivo sin que escribas scripts personalizados. Ejecuta `docker ps` y verás un estado `(healthy)` en lugar de solo `(up)`. Esto importa si estás ejecutando Kubernetes o cualquier plataforma de orquestación donde los contenedores muertos se reemplazan automáticamente.

La gestión de memoria es más flexible de lo que esperarías. El valor predeterminado es 512m, pero puedes ajustarlo o dejar que la JVM se ajuste automáticamente según tu límite de memoria del contenedor. Si estás exprimiendo esto en un VPS pequeño, hay muchos botones que puedes girar.

El soporte para archivos JAR proxy personalizados significa que no estás atrapado en las tres opciones incluidas. Establece `TYPE=CUSTOM`, señala `BUNGEE_JAR_URL` a donde quiera que viva tu JAR, y ya está. Algunas comunidades ejecutan forks con características personalizadas; esto lo tiene en cuenta.

La imagen sincroniza la configuración desde `/config` en el inicio. Si estás actualizando tu configuración de proxy a través de volúmenes de Docker (que deberías), recoge cambios sin necesidad de reconstruir la imagen. Respeta tu configuración sobre cualquier cosa incluida.


Errores Comunes y Gotchas

El más grande: olvidar `ONLINE_MODE=FALSE` en servidores backend. Verás errores "no autenticado" y pensarás que algo está roto cuando realmente solo te perdiste una bandera.

La confusión de reenvío de puertos también aparece. El contenedor usa internamente el puerto 25577, pero puedes mapearlo a cualquier puerto externo que desees. Si haces `ports: "25565:25577"`, los jugadores se conectan al puerto 25565, no al 25577. No abras accidentalmente el puerto 25577 en tu firewall y te preguntes por qué nadie puede unirse.

Algunas personas lanzan múltiples servidores backend pero no se dan cuenta de que el proxy necesita alcanzarlos en la red. Si tus servidores están en contenedores separados, usa nombres de servicio (como `mc:25565` en compose) en lugar de localhost. El DNS interno de Docker maneja el enrutamiento.

En realidad, hay otra cosa que siempre olvido: si estás actualizando la versión del JAR proxy, establece `BUNGEE_JAR_REVISION` en un número nuevo para forzar una descarga. De lo contrario, almacenará en caché la versión anterior y te preguntarás por qué tus correcciones no se aplicaron.


Cuando los Proxies No Son la Respuesta

Si tienes menos de 30 jugadores concurrentes y sin problemas de rendimiento, un proxy es complejidad extra que no necesitas. Paper y Purpur pueden manejar recuentos de jugadores decentes con optimización sólida.

Los proxies también añaden latencia. Normalmente es insignificante en una LAN o internet moderna, pero en casos extremos (hardware muy antiguo, redes extrañas), podrías notar retrasos de tick. Velocity es mejor que BungeeCord en esto, pero vale la pena hacer un benchmark para tu configuración.

Si estás ejecutando un servidor PvP competitivo donde cada milisegundo importa, querrás probar si la sobrecarga del proxy es aceptable. La mayoría de jugadores no lo notarán. Los PvPistas de hardcore sí.


Alternativas Que Vale la Pena Considerar

Geyser (también mantenido por itzg) es una bestia completamente diferente - traduce conexiones de Bedrock a Java Edition, no balanceo de carga. No es un reemplazo, pero a veces la gente las confunde.

Traefik o Nginx pueden técnicamente hacer reverse-proxy de Minecraft si estás ejecutando todo en Kubernetes y quieres ingreso unificado, pero son excesivos. Velocity es más simple y rápido para este caso de uso específico.

Si quieres algo aún más ligero, hay proyectos proxy de propósito único flotando en GitHub, pero generalmente están menos mantenidos y pierden las características operacionales (comprobaciones de salud, recargas fáciles de configuración) que hacen que docker-mc-proxy sea confiable para producción.


Ejecutando Esto en Producción

Docker hace esta parte suave. Establece límites de recursos, usa políticas de reinicio, y deja que Docker maneje fallos. Una configuración típica reserva 512m-1g para el proxy en sí a menos que estés enrutando cientos de jugadores concurrentes.

La agregación de logs es tu amiga. El proxy genera mucho diagnóstico útil. Si estás ejecutando en un host con múltiples servicios, envía esos logs a algún lugar central (syslog, ELK, CloudWatch, lo que sea) para que puedas realmente depurar problemas cuando aparezcan.

Para el MOTD, si estás rotando mensajes estacionales o quieres algo dinámico, puedes usar sustitución de variables de entorno. Establece `REPLACE_ENV_VARIABLES=true` y referencia `${SOME_VAR}` en tu archivo de configuración.

También vale la pena notar: si necesitas un ícono personalizado del servidor, la imagen puede descargar y convertir uno automáticamente. Establece la variable de entorno `ICON` a una URL y manejará la conversión PNG de 64x64 para ti. Si ya tienes un ícono en `/server`, usa `OVERRIDE_ICON=true` para reemplazarlo. Puedes usar nuestro Buscador de Bloques de Minecraft para encontrar IDs de bloque específicos si estás construyendo arte de bloques de ícono de servidor en modo creativo primero (sí, la gente hace esto).

itzg/docker-mc-proxy - Apache-2.0, ⭐320
Sobre el autor
Alexandru Maftei
Alexandru MafteiRedactor principal

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

¡Compártelo con tus amigos!

Comentarios

Aún no hay comentarios. ¡Sé el primero en compartir tu opinión!

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy