Ir para o conteúdo

Documentação

MCSManager

Ligue um painel MCSManager e o Provibr aprovisiona, controla e importa servidores de jogo nele. Esta página cobre o que difere dos outros painéis de jogo.

Chave de API

O MCSManager autentica-se com uma única chave de API, sem cliente OAuth2 e sem par de chaves. Crie uma no painel, dentro da própria conta, e cole-a no Provibr juntamente com a URL do painel.

  • Anfitrião: a URL completa do painel, com a porta, por exemplo http://painel.example.com:23333. O MCSManager usa HTTP simples na 23333 por predefinição, e não há porta que o Provibr possa acrescentar sem adivinhar.
  • Chave de API: a chave de 32 caracteres que o painel gera. Há uma chave por utilizador do painel e criar uma segunda sobrepõe-se à primeira, por isso convém dar ao Provibr um utilizador próprio em vez da conta de trabalho diário.
  • Impressão digital TLS (opcional): apenas para um anfitrião https://, para fixar o certificado.
Numa instalação nova do MCSManager as chaves de API estão desligadas. Enquanto não forem ligadas em Definições → API, cada chamada responde 403 Insufficient Permissions, a mesma resposta de uma chave revogada, e nada nela aponta para esse interruptor.

A chave tem de pertencer a um administrador: criar, alterar e remover instâncias são rotas exclusivas de administrador, pelo que uma chave de um utilizador comum consegue ler o painel mas não aprovisionar nada. O Provibr verifica isso ao testar a ligação, e não apenas na primeira encomenda. É além disso um mandato amplo: a mesma chave abre o gestor de ficheiros e a gestão de utilizadores do painel, e essa é a segunda razão para lhe dar um utilizador próprio.

Transporte

O MCSManager serve HTTP simples na porta 23333 e não traz certificado próprio. Se o painel estiver atrás de um reverse proxy com TLS, preencha a impressão digital desse proxy; o agente passa então a confiar nesse único certificado em vez de desligar a verificação. Leia-a com:

shell
openssl s_client -connect <host>:443 </dev/null 2>/dev/null | \
  openssl x509 -noout -fingerprint -sha256
Os comandos e a saída do terminal estão em inglês em todo o lado, no painel e nestas páginas. Um só texto, uma só verdade: o que aqui se lê é literalmente o que o seu host vai devolver.

Deixe o campo vazio com um certificado de uma autoridade pública, e também quando o painel só estiver acessível por http. Uma impressão digital ao lado de um endereço http é recusada, porque não há certificado a fixar. Um painel em http simples funciona, mas a chave de API e tudo o que a integração faz viajam então sem cifra.

Instâncias

Uma instância do MCSManager é no fundo um comando de arranque e uma pasta de trabalho. Não há egg, não há código de jogo e não há modelo com variáveis, por isso o Provibr não constrói um servidor a partir de uma entrada de catálogo: o comando de arranque vem do plano de jogo que se escreve.

O painel traz de facto 63 predefinições de instalação, mas nenhuma tem identificador. O MCSManager procura uma predefinição pelo título e pela descrição, uma frase inteira, os títulos não são únicos, e ambos os valores seguem o idioma do painel. Uma ligação assente nisso quebra assim que alguém mudar o idioma do painel, e por isso o Provibr não as oferece como lista pendente.

Planos

Um plano de jogo leva o comando de arranque e, se o servidor precisar, a forma de o parar. A encomenda passa por um plano: o que corre vem do plano, e o daemon onde a instância aterra vem das definições da integração, ou é escolhido automaticamente quando o painel só tem um.

  • Comando de arranque: obrigatório. Nada mais decide o que corre, por isso, ao contrário de um painel com eggs, não há predefinição a que recorrer.
  • Comando de paragem: opcional. Vazio significa ^C, a notação própria do MCSManager para SIGINT e a predefinição do painel; um servidor Minecraft quer stop.
  • Tempo de espera da paragem: opcional. Vazio significa a predefinição do painel, 10 segundos, após os quais o daemon intervém de forma dura.
O comando de arranque não passa por uma shell. O MCSManager parte-o nos espaços e entrega as partes como argumentos, por isso aspas, canalizações e redirecionamentos não fazem o esperado. Uma construção bash -c volta como erro de análise dentro do servidor. Ponha num ficheiro de script tudo o que precise de uma shell e arranque esse ficheiro.

Colocação

O MCSManager lista os seus daemons e indica a memória total de cada um, por isso o motor de colocação tem um teto real para ordenar, mais do que oferecem o PufferPanel e o GameAP. Num painel com um só daemon, que é a instalação corrente, o agente escolhe-o sozinho e não há nada a preencher.

Com vários daemons, indique o predefinido nas definições da integração. Se ficar vazio, o Provibr recusa a encomenda em vez de adivinhar: uma instância não se move depois para outra máquina.

Suspensão

O MCSManager suspende através de uma data de expiração na instância, e o próprio painel fá-la cumprir: o daemon recusa arrancar uma instância cujo prazo passou. É por isso a suspensão honesta: quem entrar diretamente na interface do MCSManager não consegue arrancar um servidor suspenso pelo Provibr, o que no PufferPanel e no GameAP não acontece.

  • A suspensão também para o servidor. A verificação própria do painel corre uma vez por hora, por isso sem esse segundo passo uma instância em execução continuaria até sessenta minutos depois de suspensa.
  • Retomar repõe a expiração anterior em vez de a apagar. Se já estivesse definida uma data, apagá-la transformaria a instância, em silêncio, numa que nunca expira.
Esse campo de expiração é do próprio MCSManager: o seu modo comercial usa-o para vender instâncias à hora. Com esse modo ligado, o painel escreve no mesmo campo que o Provibr e os dois sobrepõem-se um ao outro, pelo que o Provibr recusa as credenciais enquanto estiver ligado.

Docker

O MCSManager executa uma instância de duas maneiras: como processo simples num pty, ou dentro de um contentor Docker. Todo o limite de recursos que o painel conhece pertence à segunda: memória, CPU e disco. Um processo simples corre sem cgroup, sem teto de memória e sem quota de disco.

Num painel sem Docker não há, portanto, nada limitado. O Provibr não recusa um painel assim, porque todos os comandos funcionam nele, mas um plano que promete 2 GB de memória promete então algo que o painel não faz cumprir. Verifique que o Docker está instalado antes de vender aí um produto delimitado; o Provibr assinala-o na integração quando falta.

O que o Provibr não faz

Não há consola: o terminal do MCSManager vai por socket.io com um heartbeat próprio em vez de um websocket simples, e o endereço de daemon que o painel devolve é local e um agente noutro sítio não lhe chega. Também não há gráficos de uso. CPU e memória são medições reais, mas o disco está fixado a zero no daemon e a rede falta por completo, pelo que dois dos quatro gráficos ficariam a zero para sempre. A reinstalação é recusada com um motivo legível, porque o MCSManager só reinstala a partir de uma predefinição e o Provibr não cria a partir de uma. Criar, arrancar, parar, reiniciar, matar, ler o estado, suspender, retomar, eliminar e importar instâncias existentes funcionam todos.