Como criar um servidor MTA:SA do zero no Ubuntu Linux
Tutorial técnico passo a passo pra subir um servidor MTA:SA em VPS Ubuntu Linux: instalação, configuração, firewall, gamemode e otimização.
Subir um servidor MTA:SA (Multi Theft Auto: San Andreas) em Linux é mais simples do que o ecossistema antigo sugere — os binários oficiais já vêm prontos pra distribuições modernas e o servidor não exige interface gráfica. O ponto de atrito costuma ser configuração de firewall (UDP, não TCP) e o entendimento de que MTA é um servidor de jogo multiplayer separado do GTA:SA original — o cliente conecta direto no IP da sua VPS.
Este tutorial cobre instalação do zero em Ubuntu 24.04 LTS, configuração do mtaserver.conf, deploy de um gamemode básico, isolamento via usuário dedicado, supervisão por systemd e firewall UFW. Tempo estimado de execução: 25-35 minutos. Você vai terminar com um servidor MTA:SA online, registrado no master list público e reiniciando automaticamente após reboot.
A persona-alvo é um owner novo de comunidade MTA:SA configurando o mtaserver pela primeira vez. Não é necessário experiência prévia com Linux — todos os comandos estão explicados.
Pré-requisitos
VPS com Ubuntu 24.04 LTS (Server, não Desktop), acesso SSH como usuário sudo, pelo menos 1 GB de RAM e 5 GB de disco livre. Conexão estável pra baixar ~30 MB do pacote MTA. CPU x86_64 obrigatória (ARM64 não funciona).
Confirme que você tem o que precisa antes de prosseguir:
Ubuntu 24.04 LTS x86_64 1 GB (2 GB recomendado) 22003/UDP 22005/TCP 22126/UDP A porta 22003/UDP é a porta de jogo onde os clientes MTA conectam. A 22005/TCP é usada pelo recurso HTTP interno (resources, downloads). A 22126/UDP é o ASE (All-Seeing Eye) — protocolo que permite o servidor aparecer na lista pública. Todas precisam estar liberadas no firewall.
Instalação do MTA:SA Server
Esta seção cobre desde a criação do usuário dedicado até o binário rodando pela primeira vez. Rodar serviços de jogo com usuário próprio (não root) limita o impacto de qualquer exploit em scripts Lua de terceiros.
Atualize o índice de pacotes e instale dependências básicas:
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget tar libncurses6 libreadline8 ca-certificatesO MTA:SA Server precisa de libncurses6 e libreadline8 pra o console interativo. Em Ubuntu 24.04 esses pacotes estão no repositório padrão.
Crie um usuário dedicado mtasa sem privilégios de login:
sudo useradd -r -m -d /opt/mtasa -s /bin/bash mtasa
sudo su - mtasaA flag -r cria usuário de sistema, -m cria home em /opt/mtasa. Você está agora operando como mtasa — todos os próximos comandos rodam nesse contexto, exceto onde indicado com sudo explícito.
Baixe o pacote oficial Linux do MTA:SA Server:
cd /opt/mtasa
wget https://linux.multitheftauto.com/dl/multitheftauto_linux_x64.tar.gz
tar -xzf multitheftauto_linux_x64.tar.gz
mv multitheftauto_linux_x64 server
cd serverA URL linux.multitheftauto.com/dl/ é o endpoint oficial mantido pela MTA team. Confira se o arquivo veio completo com ls -lh multitheftauto_linux_x64.tar.gz — deve ter ~30 MB.
Baixe os recursos default (resources) — sem eles o servidor inicia mas não tem nenhum modo de jogo:
cd /opt/mtasa/server/mods/deathmatch
wget https://mirror.multitheftauto.com/mtasa/resources/mtasa-resources-latest.zip
unzip mtasa-resources-latest.zip -d resources/
rm mtasa-resources-latest.zipSe unzip não estiver disponível, instale com sudo apt install -y unzip (de volta como usuário sudo) e refaça o passo.
Configuração do mtaserver.conf
O arquivo mtaserver.conf controla todo o comportamento do servidor: nome, senha, slots, gamemode inicial, ASE, IP público. Ele fica em /opt/mtasa/server/mods/deathmatch/mtaserver.conf e usa formato XML.
Abra o arquivo de configuração:
nano /opt/mtasa/server/mods/deathmatch/mtaserver.confLocalize e ajuste os campos críticos:
<servername>Meu Servidor MTA</servername>
<serverip>auto</serverip>
<serverport>22003</serverport>
<maxplayers>32</maxplayers>
<httpport>22005</httpport>
<password></password>
<ase>1</ase>
<donotbroadcastlan>0</donotbroadcastlan>Com <ase>1</ase> o servidor se registra no master list público. Se quiser servidor privado pra amigos, deixe 0. Conexão por IP direto funciona em ambos os casos.
Configure a senha de admin pra console remoto. Localize o bloco <resource src="admin" /> e abra o arquivo acl.xml:
nano /opt/mtasa/server/mods/deathmatch/acl.xmlEdite o grupo Admin e ajuste o objeto <object name="user.admin" />. A senha real é definida ao adicionar o usuário pela primeira vez via console do servidor com o comando addaccount admin SUA_SENHA_FORTE.
A conta admin tem controle total — incluindo executar Lua arbitrário no servidor. Use senha de pelo menos 16 caracteres aleatórios. Senha vazada = servidor comprometido.
Defina o gamemode inicial. Edite mtaserver.conf novamente e localize a seção <resource>. Adicione ou ajuste:
<resource src="freeroam" startup="1" protected="0" />
<resource src="play" startup="1" protected="0" />freeroam é o gamemode default mais simples — jogadores nascem livres e podem usar comandos pra spawnar veículos. Pra testar o servidor pela primeira vez, isso é suficiente.
Primeira execução e teste
Antes de configurar systemd, rode o servidor manualmente pra confirmar que tudo funciona. Isso facilita ver erros de configuração em tempo real.
Inicie o servidor em primeiro plano:
cd /opt/mtasa/server
./mta-server64O console mostra a inicialização: carregamento de módulos, leitura do mtaserver.conf, registro de resources e por fim a mensagem Server started and is ready to accept connections!. Se aparecer erro de biblioteca faltando, instale libstdc++6 e lib32stdc++6.
Crie a conta de admin pelo console interativo (sem fechar o servidor):
addaccount admin SUA_SENHA_AQUI
aclrequest allow admin allDepois pare o servidor com Ctrl+C — vamos colocar ele sob systemd a seguir.
Firewall e systemd
O servidor rodando manualmente serve pra testar, mas em produção você precisa supervisor (pra reiniciar em crash) e firewall (pra bloquear o que não é jogo).
Abra as portas necessárias no UFW (como usuário sudo, fora do contexto mtasa):
sudo ufw allow 22003/udp comment 'MTA:SA game port'
sudo ufw allow 22005/tcp comment 'MTA:SA HTTP'
sudo ufw allow 22126/udp comment 'MTA:SA ASE'
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw enable
sudo ufw status verboseAntes de rodar ufw enable, confirme que a regra 22/tcp está adicionada. Habilitar UFW sem ela tranca você fora da VPS. Se estiver usando porta SSH customizada, libere ela explicitamente.
Crie o arquivo de unit systemd em /etc/systemd/system/mtasa.service:
sudo nano /etc/systemd/system/mtasa.serviceConteúdo:
[Unit]
Description=MTA:SA Server
After=network.target
[Service]
Type=simple
User=mtasa
Group=mtasa
WorkingDirectory=/opt/mtasa/server
ExecStart=/opt/mtasa/server/mta-server64
Restart=on-failure
RestartSec=10
StandardOutput=append:/var/log/mtasa/server.log
StandardError=append:/var/log/mtasa/server.log
[Install]
WantedBy=multi-user.targetCrie o diretório de log e habilite o serviço:
sudo mkdir -p /var/log/mtasa
sudo chown mtasa:mtasa /var/log/mtasa
sudo systemctl daemon-reload
sudo systemctl enable --now mtasaVerificação
Confirme que o servidor está rodando como serviço supervisionado e respondendo na rede.
sudo systemctl status mtasa
sudo ss -ulnp | grep 22003
tail -f /var/log/mtasa/server.log
O systemctl status deve mostrar active (running). O ss -ulnp deve listar o processo mta-server64 escutando na porta 22003/UDP. O log deve conter Server started and is ready to accept connections!.
Pra teste de conexão real, abra o cliente MTA:SA no Windows, vá em “Quick connect” e conecte em IP_DA_SUA_VPS:22003. Se aparecer no servidor master list, leva 2-5 minutos pra propagar — antes disso, conexão direta por IP já funciona.
Resolução de problemas
”address already in use” ao iniciar
Outra instância ainda está rodando. Pare com sudo systemctl stop mtasa e pkill -u mtasa mta-server64. Aguarde 30 segundos antes de reiniciar — o socket UDP pode demorar pra liberar.
Servidor não aparece no master list
Confirme <ase>1</ase> no mtaserver.conf e firewall UDP 22126 liberado. Em algumas VPS atrás de NAT, mude <serverip>auto</serverip> pro IP público explícito. Propagação pro master leva até 5 minutos após primeira inicialização.
Jogadores conectam mas caem após login
Quase sempre é a porta HTTP 22005/TCP bloqueada. Os clientes precisam baixar resources via HTTP — sem isso, timeout e disconnect. Confirme com sudo ufw status que 22005/tcp está ALLOW.
Pra servidores com jogadores brasileiros, latência da VPS importa mais que CPU bruta. Datacenters em São Paulo entregam tipicamente 5-15 ms pra maior parte do Brasil, contra 120-180 ms em datacenters US East.
Próximos passos
Com o servidor base no ar, próximos pontos de evolução:
- Configurar resources customizados em
/opt/mtasa/server/mods/deathmatch/resources/ - Configurar backup automático do diretório
resources/e do arquivointernal.db(database SQLite do servidor) - Adicionar segundo servidor pra modo de jogo diferente em outra porta UDP
- Implementar monitoramento de jogadores online via API HTTP exposta pelo MTA
- Configurar SSL/TLS no httpserver pra resources se você expor downloads via CDN
Se você está rodando isso em produção e quer baixa latência pra jogadores BR, uma VPS Hostini em São Paulo entrega tipicamente 5-15 ms pra maior parte do território nacional, com proteção DDoS na borda e rede dimensionada pra picos UDP — perfil exato que servidores de jogo exigem.
Perguntas frequentes
Qual a diferença entre MTA:SA e SA-MP pra hospedar em Linux?
MTA:SA tem servidor Linux oficial mantido pela Multi Theft Auto team com binários atuais pra glibc moderna. SA-MP é um projeto separado, com pacote Linux mais antigo e dependências de bibliotecas de 32-bit. Pra Ubuntu 24.04 LTS, MTA é mais simples de subir hoje.
Quanto de RAM e CPU preciso pra um servidor com 50 jogadores?
Um servidor MTA:SA típico com gamemode roleplay ou DM consome 200-500 MB de RAM e tipicamente 1 core. Com 50 jogadores ativos e scripts Lua complexos, 2 vCPUs e 2 GB de RAM dão folga. O gargalo costuma ser latência de rede, não CPU.
Posso rodar o MTA:SA Server num container Docker?
Sim, funciona, mas adiciona uma camada de NAT que pode complicar a detecção de IP público e port forwarding UDP. Pra produção, rodar diretamente no host com systemd é mais previsível. Containers fazem sentido pra ambientes de teste isolados.
Como faço o servidor aparecer na lista master pública?
Em mtaserver.conf, defina <serverip>auto</serverip> e <ase>1</ase>. O servidor consulta o IP público sozinho e se registra no master list quando inicia. Se estiver atrás de NAT (caso de algumas VPS), force o IP público manualmente no campo serverip.
O MTA:SA roda em ARM64 (Ampere, Graviton)?
Não. O binário oficial Linux é compilado pra x86_64 e depende de bibliotecas 32-bit. Use VPS com CPU Intel ou AMD x86_64 — qualquer plano padrão atende. ARM64 é incompatível e tentar rodar via emulação degrada performance ao ponto de inviabilizar.