
Docker-MC-Proxy: Execução de Rede de Servidores Minecraft
docker-mc-proxy (itzg/docker-mc-proxy)
Imagem Docker que oferece uma escolha de proxies Minecraft, como BungeeCord e Velocity
Gerenciar múltiplos servidores Minecraft parece excessivo até que não seja mais. Talvez você tenha superado um servidor único, ou deseje dividir jogadores entre um mundo de sobrevivência e um reino criativo sem forçar todos a escolher. Um proxy atua entre os jogadores e seus servidores reais, lidando com o tráfego e redirecionando jogadores para onde eles precisam ir. Docker-mc-proxy faz exatamente isso, e é simples de configurar se você conhece os básicos do Docker.
O que este projeto faz
Docker-mc-proxy é uma imagem containerizada que executa um servidor proxy Minecraft. E suporta BungeeCord (a escolha mais comum), Velocity (a alternativa mais nova e mais rápida) e Waterfall (um fork da comunidade de BungeeCord com mais recursos). Atua como intermediário: os jogadores se conectam ao endereço do proxy, e o proxy os redireciona para o servidor de backend configurado.
A imagem vem com verificações de saúde embutidas usando mc-monitor, então o Docker e suas ferramentas de orquestração sabem imediatamente se algo está errado. Você não precisa analisar logs para descobrir se o processo ainda está ativo.
É parte da suíte de imagens Docker da itzg (320 estrelas no GitHub), o que indica que não é um projeto abandonado. O mantenedor o mantém atualizado com suporte a Java 25 e reparos de bugs regulares.
Por que usar isso
Configurações de servidor único se quebram quando você atinge um limiar de jogador. Um mundo 1.20 com 50 jogadores se movendo começa a demorar. Você poderia otimizar o heck do seu servidor config, sim. Ou poderia dividir: sobrevivência em um servidor, minijogos em outro, e deixar o proxy lidar com o roteamento. Os jogadores nem notam a costura.
Também há redundância. Se o seu servidor principal falhar, você pode iniciar uma instância de backup e o proxy ainda funcionará. Você não diz a 100 jogadores "o servidor está morto, veja você mais tarde."
Provedores de hospedagem adoram implantações Docker porque são previsíveis e eficientes em termos de recursos. Se você estiver executando isso em infraestrutura compartilhada ou VPS, a containerização significa que você não está acidentalmente monopolizando RAM que quebra outra aplicação.
Instalação e Configuração Básica
A forma mais simples de começar é com Docker Compose. Aqui está um exemplo funcional:
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:O item crítico: `ONLINE_MODE=FALSE` no servidor de backend. Os proxies precisam disso porque lidam com autenticação, não os servidores individuais. Sem isso, os jogadores são expulsos com um erro "não autenticado".
O proxy mapeia a porta 25565 (a porta padrão do Minecraft) para sua porta interna 25577. Os jogadores se conectam ao IP do seu servidor na porta 25565, e o proxy cuida do resto.
Se você quiser personalizar o MOTD do servidor (a descrição que os jogadores veem em sua lista de servidores), use a variável de ambiente `CFG_MOTD`, ou melhor ainda, use nosso Criador de MOTD do Minecraft para projetá-lo visualmente e colá-lo. Você até pode usar códigos de cores.
Agora você precisa configurar para onde o tráfego vai. Crie um arquivo `config.yml` que diga ao proxy quais servidores de backend existem:
servers:
survival:
address: mc:25565
restricted: false
creative:
address: creative-server:25565
restricted: false
listeners: -query_port: 25577
motd: "Minha Rede Minecraft"
tab_list: GLOBAL_PING
default_server: survivalOs jogadores aterrissam no survival por padrão. Eles podem saltar entre mundos usando comandos dentro do jogo.
Recursos Principais que Importam
Verificações de saúde embutidas são genuinamente impressionantes. O Docker pode ver se o proxy está responsivo sem que você escreva scripts personalizados. Execute `docker ps` e você verá um status `(saudável)` em vez de apenas `(atualizado)`. Isso importa se você estiver executando Kubernetes ou qualquer plataforma de orquestração onde contêineres mortos são substituídos automaticamente.
O gerenciamento de memória é mais flexível do que você esperaria. O padrão é 512m, mas você pode ajustá-lo ou deixar o JVM dimensionar automaticamente com base no limite de memória do contêiner. Se você estiver esguestrando isso em um VPS pequeno, há muitos controles que você pode girar.
Suporte a arquivos JAR de proxy personalizados significa que você não está preso às três opções embutidas. Defina `TYPE=CUSTOM`, aponte `BUNGEE_JAR_URL` para onde o seu JAR vive, e você está pronto. Algumas comunidades executam forks com recursos personalizados; isso atende a esse caso.
A imagem sincroniza a configuração de `/config` no início. Se você estiver atualizando a configuração do proxy por meio de volumes do Docker (o que você deve fazer), ele captura as alterações sem precisar reconstruir a imagem. Respeita sua config sobre qualquer coisa embutida.
Armadilhas e Erros Comuns
O maior deles: esquecer `ONLINE_MODE=FALSE` nos servidores de backend. Você verá erros "não autenticado" e pensará que algo está quebrado quando na verdade você simplesmente perdeu uma flag.
A confusão com o encaminhamento de porta também surge. O contêiner usa internamente 25577, mas você pode mapeá-lo para qualquer porta externa que desejar. Se você fizer `ports: "25565:25577"`, os jogadores se conectam a 25565, não 25577. Não abra acidentalmente 25577 no seu firewall e se pergunte por que ninguém pode se conectar.
Algumas pessoas iniciam múltiplos servidores de backend, mas não percebem que o proxy precisa alcançá-los pela rede. Se seus servidores estiverem em contêineres separados, use nomes de serviço (como `mc:25565` em compose) em vez de localhost. O DNS interno do Docker lida com o roteamento.
Na verdade, há outra coisa que eu continuo esquecendo: se você estiver atualizando a versão do JAR do proxy, defina `BUNGEE_JAR_REVISION` para um novo número para forçar um rebaixamento. Caso contrário, ele armazenará em cache a versão antiga e você se perguntará por que suas correções não foram aplicadas.
Quando Proxies Não São a Resposta
Se você tiver menos de 30 jogadores simultâneos e nenhum problema de desempenho, um proxy é uma complexidade extra que você não precisa. Paper e Purpur podem lidar com contagens de jogadores decentes com otimização sólida.
Proxies também adicionam latência. Geralmente é insignificante em uma LAN ou internet moderna, mas em casos extremos (hardware muito antigo, rede estranha), você pode notar atrasos de tick. Velocity é melhor nisso do que BungeeCord, mas vale a pena fazer benchmarks para o seu setup.
Se você estiver executando um servidor PvP competitivo onde cada milissegundo importa, você vai querer testar se o overhead do proxy é aceitável. A maioria dos jogadores não notará. Os jogadores hardcore de PvP notarão.
Alternativas Válidas para Considerar
Geyser (também mantido pela itzg) é uma criatura diferente por completo - traduz conexões Bedrock para Edição Java, não balanceamento de carga. Não é uma substituição, mas às vezes as pessoas se confundem.
Traefik ou Nginx podem tecnicamente atuar como proxy reverso para Minecraft se você estiver executando tudo no Kubernetes e quiser ingress unificado, mas são excesso. Velocity é mais simples e mais rápido para esse caso de uso específico.
Se você quiser algo ainda mais leve, há projetos de proxy de propósito único flutuando no GitHub, mas geralmente são menos mantidos e faltam as boas práticas operacionais (verificações de saúde, recarregues de config fácil) que tornam docker-mc-proxy confiável para produção.
Executando Isso em Produção
Docker torna essa parte suave. Defina limites de recursos, use políticas de reinício, e deixe o Docker lidar com falhas. Um setup típico reserva 512m-1g para o proxy em si a menos que você esteja roteando centenas de jogadores simultâneos.
Aggregação de logs é seu amigo. O proxy produz muita diagnóstica útil. Se você estiver executando em um host com múltiplos serviços, alimente esses logs em algum lugar central (syslog, ELK, CloudWatch, o que for) para que você possa realmente depurar problemas quando eles surgirem.
Para o MOTD, se você estiver rotacionando mensagens sazonais ou quiser algo dinâmico, você pode usar substituição de variáveis de ambiente. Defina `REPLACE_ENV_VARIABLES=true` e faça referência a `${SOME_VAR}` em seu arquivo de configuração.
Outro ponto digno de nota: se você precisar de um ícone de servidor personalizado, a imagem pode baixar e converter automaticamente. Defina a variável de ambiente `ICON` para uma URL e ela cuidará da conversão para PNG 64x64 para você. Se você já tiver um ícone em `/server`, use `OVERRIDE_ICON=true` para substituí-lo. Você pode usar nossa Busca de Blocos do Minecraft para encontrar IDs de blocos específicos se você estiver construindo ícones de servidor block-art em modo criativo primeiro (sim, as pessoas fazem isso).
itzg/docker-mc-proxy - Apache-2.0, ★320Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.
Comentários
Nenhum comentário ainda. Seja o primeiro a compartilhar sua opinião!


