Instalando MCS Manager no Termux

Instalando MCS Manager no Termux
terminal de uma instância de Minecraft no MCSManager

Sempre que você vai criar um servidor de Minecraft é complicado gerenciar todas as configurações do servidor, mante-lo online, até permitir que algum amigo seu abra o servidor quando ele quiser, principalmente quando um modpack crash e você não está disponível na hora para reiniciar o servidor, MCSManager é um painel de gestão de servidor de jogos, primariamente Minecraft que te permite fazer tudo isso, tarefas agendadas (como back-ups e auto restarts), auto reiniciar um servidor caso ele crash.

Nesse tutorial irei cobrir a instalação e uso em um sistema Termux, sim, aquele app de Android que simula Linux, não é necessário root (a não ser que vc queira usar docker, mas esse tutorial não cobre isso).

Na última versão (10) o painel é basicamente incompatível com Termux, porém as alteração necessária são simples.

Instalando os requisitos

MCS Manager é feito em typescript, portanto, para roda-lo você só precisa de:

pkg update
pkg upgrade -y
pkg install nodejs openjdk-17 wget nano -y

Pronto, só isso já é o necessário para rodar MCS Manager, vide que wget só é utilizado para baixar o pacote e nano será utilizado só para alterar um arquivo.

Instalando MCS Manager

Primeiramente, baixe o pacote, vc pode visitar este repo e baixar a versão mais nova, note que esse tutorial é especificamente para a versão 10.

mkdir ~/mcsmanager
cd ~/mcsmanager
wget https://github.com/MCSManager/MCSManager/releases/download/v10.2.1/mcsmanager_linux_release.tar.gz
tar -xzf mcsmanager_linux_release.tar.gz

Agora, antes de iniciar MCSManager, precisamos fazer algumas alterações, ao iniciar o daemon, ele irá buscar o sistema operacional e carregar 2 pacotes de acordo com o sistema, porém o sistema operacional do Termux é "android" e não há pacotes para "android", apenas para "linux", android é uma distribuição do linux, ou seja, suficientemente equivalentes, então vamos copiar os pacotes do linux para usarmos como android:

cp daemon/lib/file_zip_linux_arm64 daemon/lib/file_zip_android_arm64
cp daemon/lib/pty_linux_arm64 daemon/lib/pty_android_arm64

Após essa alteração o daemon irá carregar e tudo estará com uma cara de normal, porém você terá um erro ao tentar executar um servidor de Minecraft:

[INFO] Preparing to start...
[Operation Error] ENOENT: no such file or directory, mkdir '/tmp/mcsmanager-instance-pipe'

Ao executar um servidor, o daemon tenta criar uma pasta temporária em /tmp/mcsmanager-instance-pipe, porém, sem fazer root no Android, não temos acesso a essa pasta, esse path está escrito no código do deamon, então precisamos altera-lo para um path acessível no Termux:

mkdir -p $PREFIX/tmp/mcsmanager-instance-pipe
sed -i -e 's:/tmp/mcsmanager-instance-pipe:$PREFIX/tmp/mcsmanager-instance-pipe:g' daemon/app.js

Agora você não deve ter mais nenhum erro ao usar MCS Manager no Termux.

MCS Manager como serviço no Termux

O MCSManager usa 2 serviços independentes, o daemon, quem controla os servidores, e o painel, a interface web. Você precisa executar as duas separadamente. A fim de mante-las sempre ligadas, vamos coloca-las como serviços usando termux-services:

daemon como serviço

mkdir -p $PREFIX/var/service/mcsmanager-daemon/log
ln -sf $PREFIX/share/termux-services/svlogger $PREFIX/var/service/mcsmanager-daemon/log/run
touch $PREFIX/var/service/mcsmanager-daemon/run
chmod +x $PREFIX/var/service/mcsmanager-daemon/run

Abra o arquivo o run com nano:

nano $PREFIX/var/service/mcsmanager-daemon/run

Dentro deste arquivo run, escreva:

#!/data/data/com.termux/files/usr/bin/sh
cd ~/mcsmanager/daemon
exec 2>&1
node app.js

painel como serviço

mkdir -p $PREFIX/var/service/mcsmanager-painel/log
ln -sf $PREFIX/share/termux-services/svlogger $PREFIX/var/service/mcsmanager-painel/log/run
touch $PREFIX/var/service/mcsmanager-painel/run
chmod +x $PREFIX/var/service/mcsmanager-painel/run

Abra o arquivo o run com nano:

nano $PREFIX/var/service/mcsmanager-painel/run

Dentro deste arquivo run, escreva:

#!/data/data/com.termux/files/usr/bin/sh
cd ~/mcsmanager/web
exec 2>&1
node app.js

Abilitando e iniciando os serviços

sv-enable mcsmanager-daemon
sv-enable mcsmanager-painel
sv up mcsmanager-daemon
sv up mcsmanager-painel

Acessando o painel e registrando o daemon

Por padrão o painel do MCSManager é exposto na porta 23333, acessando o painel pela primeira vez, será pedido que você crie uma nova conta, essa será sua conta administrativa.

Após logar no painel, vá direto para a página Daemons, nessa página ficara listados todos os daemons que você tem, você precisa de 1 daemon por sistema/máquina que você quer usar para alocar os servidores.

Clique em New Daemon, dê um nome qualquer e coloque o ip, para o daemon na mesma máquina que o painel, coloque localhost, agora vem um ponto importante, precisamos da chave de acesso do daemon, essa chave aparece no log do daemon quando você executa ele, como executamos o daemon usando termux-services, podemos ver a chave no log usando:

grep -m 1 "Access Key" $PREFIX/var/log/sv/mcsmanager-daemon/current

Copie a key, cole no painel e clique em Confirm.

Agora você dete ter um daemon registrado com o status online.

Criando uma instância de Minecraft

Na página de instâncias é onde você verá todas as instâncias de cada máquina/daemon que você registrou, ao lado do botão Create no topo da tela, você tem um seletor onde você escolhe qual deamon você quer ver.

Para criar uma nova instância de servidor, basta:

  • clicar em Create;
  • selecionar Minecraft Server (Java);
  • selecionar Upload a server core;
  • dê um nome para a instância;
  • em startup command, escreva o comando de execução;
🚨
Como escolhi PaperMC e a versão do Java no Termux não é a versão completa, preciso adicionar uma tag para o Paper ignorar a versão do java:
java -DPaper.IgnoreJavaVersion=true -jar paper.jar --nogui
  • Clique em Upload a Server Core, no meu caso, escolhi PaperMC 1.21;
  • clicar em Confirm;
  • Após o upload clique em To Terminal Page;

Agora seu servidor está criado, no topo da tela do terminal, você pode clicar em Start e depois Ok para iniciar o servidor.

Note que na primeira vez ele ira fazer o download do servidor e fechar, pois você precisa aceitar o EULA, para aceitar o EULA siga:

  • abaixo da tela do terminal clique em Configuration Files;
  • nessa página clique em edit no arquivo [General] eula.txt;
  • troque EULA para yes, clique em Save;
  • em seguida clique em Go Back e Return to Console para voltar ao terminal
  • por fim, inicie o servidor novamente.

Agora seu servidor irá carregar normalmente.

👀
Ao iniciar o servidor usando Termux sem root, você verá alguns erros no início do servidor, esses erros dizem que o servidor não conseguiu ler recursos do Android, você pode ignorar esses erros, eles não afetam o servidor.