Pular para o conteúdo

Instalar o servidor no Linux

O pacote oficial para Linux contém o servidor MTAX completo e pronto para executar. Você não precisa compilar o projeto nem instalar o MariaDB Connector/C separadamente.

RequisitoSuporte atual
Sistema recomendadoUbuntu Server 24.04 LTS
Arquiteturax86_64 / amd64
glibc2.38 ou mais recente
libstdc++suporte a GLIBCXX_3.4.32 ou mais recente
C++ ABIsuporte a CXXABI_1.3.13 ou mais recente
Rede de saídaIPv4, DNS e HTTPS (443/TCP) para api.mtaxsa.com e para o host devolvido em downloadUrl (atualmente version.cdn.mtaxsa.com)
Licençachave de servidor MTAX com 64 caracteres hexadecimais

Outras distribuições podem funcionar se fornecerem essas versões da glibc e da libstdc++, mas o pacote oficial é construído e validado no Ubuntu 24.04. Não tente substituir a glibc do sistema manualmente para executar o servidor em uma distribuição antiga.

Confira o host antes de continuar:

Terminal window
uname -m
getconf GNU_LIBC_VERSION

O primeiro comando deve mostrar x86_64. No Ubuntu 24.04, o segundo normalmente mostra glibc 2.39.

O botão consulta api.mtaxsa.com no momento do clique. Primeiro ele encontra a versão mais recente compatível, depois lê o manifesto para obter a URL, o tamanho e o BLAKE3 do pacote. As rotas de leitura e download são públicas e não exigem login.

A URL é consultada somente quando você clicar. O canal beta nunca é selecionado automaticamente.

Uma URL de download pode apontar para o CDN ou ser temporária. Por isso ela não fica gravada nesta página. Se a consulta de Release informar que não há pacote estável, aguarde uma publicação ou selecione Beta conscientemente.

Instale as ferramentas e bibliotecas de runtime:

Terminal window
sudo apt update
sudo apt install --yes \
ca-certificates \
curl \
jq \
tar \
b3sum \
libc6 \
libstdc++6 \
libgcc-s1

Em instalações mínimas do Ubuntu, o pacote b3sum pode exigir que o repositório Universe esteja habilitado.

O script abaixo usa Release por padrão e termina com uma mensagem clara se ainda não houver uma versão estável. Para aceitar um build de testes, troque apenas MTAX_CHANNEL='release' por MTAX_CHANNEL='beta'.

Terminal window
API_URL='https://api.mtaxsa.com'
MTAX_CHANNEL='release'
LATEST_JSON="$(
curl --fail --silent --show-error --retry 3 \
"${API_URL}/api/versions/latest?component=server&channel=${MTAX_CHANNEL}&platform=linux&arch=x86_64"
)"
MTAX_BUILD="$(
printf '%s' "$LATEST_JSON" |
jq -er '.build | select(type == "string" and length > 0)'
)" || {
echo "Nenhum MTAX Server Linux x86_64 publicado no canal ${MTAX_CHANNEL}."
exit 1
}
MANIFEST_JSON="$(
curl --fail --silent --show-error --retry 3 \
"${API_URL}/api/versions/server/${MTAX_CHANNEL}/${MTAX_BUILD}?platform=linux&arch=x86_64"
)"
ARTIFACT_JSON="$(
printf '%s' "$MANIFEST_JSON" |
jq -cer 'first(
.files[] |
select(.platform == "linux" and .arch == "x86_64" and .uploaded == true)
)'
)" || {
echo 'O manifesto não contém um pacote Linux x86_64 disponível.'
exit 1
}
ARTIFACT_PATH="$(printf '%s' "$ARTIFACT_JSON" | jq -r '.path')"
DOWNLOAD_URL="$(printf '%s' "$ARTIFACT_JSON" | jq -er '.downloadUrl | select(length > 0)')" || {
echo 'O manifesto não forneceu uma URL de download.'
exit 1
}
EXPECTED_BLAKE3="$(printf '%s' "$ARTIFACT_JSON" | jq -r '.hash // empty')"
EXPECTED_BLAKE3="${EXPECTED_BLAKE3#blake3:}"
ARCHIVE_NAME="$(basename "$ARTIFACT_PATH")"
case "$DOWNLOAD_URL" in
/*) DOWNLOAD_URL="${API_URL}${DOWNLOAD_URL}" ;;
esac
curl --fail --location --show-error --retry 3 \
--proto '=https' \
--proto-redir '=https' \
"$DOWNLOAD_URL" \
--output "$ARCHIVE_NAME"
if [ "${#EXPECTED_BLAKE3}" -ne 64 ]; then
echo 'O pacote não possui um BLAKE3 válido no manifesto; instalação cancelada.'
exit 1
fi
printf '%s %s\n' "$EXPECTED_BLAKE3" "$ARCHIVE_NAME" |
b3sum --check -

O resultado final precisa terminar em OK. O campo hash da API é BLAKE3, não SHA-256.

  1. Crie um usuário de serviço sem login interativo.

    Terminal window
    sudo groupadd --system mtax
    sudo useradd \
    --system \
    --gid mtax \
    --home-dir /opt/mtax-server \
    --shell /usr/sbin/nologin \
    mtax

    Se o usuário ou grupo já existir, não recrie-o.

  2. Extraia o arquivo verificado.

    Execute este passo no mesmo terminal usado no download, ou defina ARCHIVE_NAME com o nome do arquivo que você baixou.

    Terminal window
    ARCHIVE_PATH="$(realpath "$ARCHIVE_NAME")"
    sudo install -d \
    --owner mtax \
    --group mtax \
    --mode 0750 \
    /opt/mtax-server
    sudo tar \
    --extract \
    --gzip \
    --no-same-owner \
    --file "$ARCHIVE_PATH" \
    --directory /opt/mtax-server
    sudo chown -R mtax:mtax /opt/mtax-server
    sudo chmod 0750 /opt/mtax-server/mtax-server
  3. Confira o layout e as bibliotecas.

    • mtax-server executável Linux x86_64
    • server.cfg configuração principal
    • Directorylib/
      • libmariadb.so link para a biblioteca empacotada
      • libmariadb.so.3
    • Directoryresources/ seus resources Lua
      • …
    • Directorycache/ identidade e pacotes gerados
      • …
    Terminal window
    cd /opt/mtax-server
    ldd ./mtax-server

    Nenhuma linha do ldd pode conter not found. A libmariadb.so.3 deve ser encontrada dentro de /opt/mtax-server/lib/.

  4. Configure a licença e o servidor.

    Crie sua chave no painel MTAX e abra o arquivo sem colocar o segredo no histórico do shell:

    Terminal window
    sudoedit /opt/mtax-server/server.cfg

    No mínimo, revise estas linhas:

    endpoint_add_udp "0.0.0.0:22003"
    endpoint_add_tcp "0.0.0.0:22005"
    endpoint_add_voice "0.0.0.0:22007"
    sets locale "pt-BR"
    sets sv_projectName "Meu servidor"
    set sv_licenseKey "SUA_CHAVE_DE_64_CARACTERES_HEXADECIMAIS"

    locale é a região anunciada pelo servidor e usada na listagem, não o idioma da interface. A licença deve usar set; nunca publique a chave com sets ou setr. Veja todas as opções em server.cfg.

  5. Ajuste o conteúdo de exemplo, se necessário.

    Alguns pacotes podem trazer resources/ vazio enquanto o server.cfg de exemplo ainda contém:

    load_server_icon logo.jpg
    ensure [mtax]
    ensure [exemplos]

    Adicione logo.jpg e os grupos de resources correspondentes, ou comente essas linhas. Sem isso, o servidor pode iniciar, mas registrará avisos de ícone ausente e unknown resource.

  6. Faça uma inicialização manual.

    Terminal window
    sudo -u mtax sh -c \
    'cd /opt/mtax-server && exec ./mtax-server --no-console --config server.cfg'

    O servidor precisa validar a licença em api.mtaxsa.com antes de abrir para jogadores. Use Ctrl+C depois de confirmar que a licença foi registrada e que as portas subiram.

Crie /etc/systemd/system/mtax-server.service com:

[Unit]
Description=MTAX Server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=mtax
Group=mtax
WorkingDirectory=/opt/mtax-server
ExecStart=/opt/mtax-server/mtax-server --no-console --config /opt/mtax-server/server.cfg
Restart=on-failure
RestartSec=5
KillSignal=SIGTERM
TimeoutStopSec=30
LimitNOFILE=65535
UMask=0027
[Install]
WantedBy=multi-user.target

Ative e acompanhe os logs:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable --now mtax-server
sudo systemctl status --no-pager mtax-server
sudo journalctl --unit mtax-server --follow

O WorkingDirectory não deve ser removido: server.cfg, resources/, cache/, databases/ e logs/ usam caminhos relativos. --no-console desliga a entrada interativa, adequada para um serviço; a saída continua disponível no journal.

Por padrão, o MTAX usa:

PortaProtocoloUso
22003UDPjogo e sincronização
22005TCPinformações e download de assets
22007TCP e UDPcontrole e áudio do voice chat

Se você já usa UFW, libere as portas necessárias. Garanta que o SSH já está permitido antes de habilitar ou alterar um firewall remoto.

Terminal window
sudo ufw allow 22003/udp comment 'MTAX game'
sudo ufw allow 22005/tcp comment 'MTAX assets'
sudo ufw allow 22007/tcp comment 'MTAX voice'
sudo ufw allow 22007/udp comment 'MTAX voice'

Também abra as mesmas portas no firewall da hospedagem e faça o encaminhamento no roteador, quando houver NAT. Se não for usar voice, remova endpoint_add_voice ou defina set voice_enabled false e não abra 22007.

Terminal window
sudo systemctl is-active mtax-server
sudo ss -lntup | grep -E ':22003|:22005|:22007'
curl --fail --silent http://127.0.0.1:22005/info.json | jq .

O servidor também precisa manter acesso HTTPS à API para renovar sua licença. Se essa comunicação ficar indisponível até o vencimento do lease, o processo encerra de forma controlada.

No Linux, o MTAX verifica a versão ao iniciar, mas não substitui o próprio executável. Quando existir um build mais recente, o log mostra o pacote e a página de detalhes. Baixe e confira o novo BLAKE3 pelo mesmo processo desta página.

Antes de atualizar, preserve:

server.cfg
resources/
cache/
databases/
logs/

Extraia a nova versão em uma pasta temporária e troque somente o executável e lib/:

Terminal window
MTAX_STAGING="$(mktemp -d)"
sudo tar --extract --gzip --no-same-owner \
--file "$(realpath "$ARCHIVE_NAME")" \
--directory "$MTAX_STAGING"
ldd "$MTAX_STAGING/mtax-server"
sudo systemctl stop mtax-server
sudo install --owner mtax --group mtax --mode 0750 \
"$MTAX_STAGING/mtax-server" \
/opt/mtax-server/mtax-server
sudo cp --archive "$MTAX_STAGING/lib/." /opt/mtax-server/lib/
sudo chown -R mtax:mtax /opt/mtax-server/lib
sudo systemctl start mtax-server
sudo journalctl --unit mtax-server --lines 100 --no-pager

Não extraia uma atualização diretamente sobre a instalação: o arquivo compactado também contém um server.cfg padrão e poderia sobrescrever sua configuração.

Mensagem ou sintomaO que conferir
GLIBC_... not foundA distribuição é antiga para esse build; use Ubuntu 24.04 ou outra base compatível.
libmariadb.so.3 => not foundO diretório lib/ não foi extraído ao lado do executável.
sv_licenseKey is emptyPreencha a chave no server.cfg com set sv_licenseKey.
could not validate the license keyChave, DNS, relógio do sistema, certificados CA, IPv4 e saída 443/TCP.
unknown resource -> [mtax]Instale o grupo citado ou comente o ensure de exemplo.
A consulta Release não encontra buildAinda não há pacote estável compatível; aguarde ou opte conscientemente pelo Beta.
Jogadores não conectamFirewall/NAT de 22003/UDP; para assets, confira também 22005/TCP.