Como Criar um Servidor SA-MP do Zero no Ubuntu Linux
Guia técnico para criar servidor SA-MP zero Ubuntu Linux: instalar samp03svr, configurar server.cfg, abrir portas e rodar como serviço systemd.
O San Andreas Multiplayer (SA-MP) continua ativo apesar do servidor master oficial ter ficado instável em anos recentes — comunidades brasileiras de roleplay, freeroam e DM mantêm milhares de jogadores diários. Hospedar seu próprio servidor SA-MP num Ubuntu Linux dá controle total sobre plugins, gamemodes e desempenho, além de eliminar custos recorrentes de painéis terceirizados.
Este tutorial cobre a instalação completa do samp03svr (versão 0.3.7-R2) em Ubuntu 24.04 LTS, desde as bibliotecas i386 necessárias até a configuração de um serviço systemd com restart automático. O alvo é um owner novo que vai colocar o servidor em produção numa VPS Linux, sem painel de controle. Tempo estimado de execução: 25 a 35 minutos.
Ao final, você terá um servidor escutando na porta 7777 UDP, rodando como usuário dedicado, com log persistente via journalctl e capaz de sobreviver a reboots da máquina.
Pré-requisitos
Antes de começar, confirme que sua VPS atende aos requisitos mínimos. O samp03svr é leve em CPU, mas o consumo escala com plugins, gamemode complexo e quantidade de jogadores simultâneos.
Ubuntu 24.04 LTS (também funciona em 22.04) com 1 GB RAM mínimo, 2 GB recomendado para gamemodes com muitos filterscripts. Acesso root ou sudo, ~200 MB livres em disco e uma porta UDP livre (padrão 7777). Conexão SSH ativa.
Ubuntu 24.04 LTS 7777/UDP samp /opt/samp Preparando o sistema e bibliotecas i386
O binário oficial do SA-MP server é 32-bit. Em Ubuntu 64-bit moderno, você precisa habilitar explicitamente a arquitetura i386 antes de instalar as dependências, caso contrário o apt não enxerga os pacotes lib32*.
Atualize o índice de pacotes e instale utilitários básicos:
sudo apt update
sudo apt install -y wget tar curl ufwwget e tar são usados para baixar e extrair o servidor. ufw será o firewall de borda.
Habilite a arquitetura i386 e instale as libs 32-bit:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6O comando dpkg --add-architecture registra que o sistema aceita pacotes de outra arquitetura — sem ele, o apt install lib32gcc-s1 retorna Unable to locate package.
Crie um usuário dedicado para o servidor SA-MP:
sudo useradd --system --create-home --home-dir /opt/samp --shell /usr/sbin/nologin samp--system cria conta sem expiração de senha. --shell /usr/sbin/nologin impede login interativo — o usuário existe apenas para isolar o processo do servidor.
Baixando e extraindo o samp03svr
O binário oficial é distribuído como tarball em files.sa-mp.com. A versão estável atual é a 0.3.7-R2-2-1, compatível com a maioria dos gamemodes em circulação.
Mude para o diretório home do usuário samp e baixe o servidor:
cd /opt/samp
sudo -u samp wget https://files.sa-mp.com/samp037svr_R2-2-1.tar.gzRodar o wget como sudo -u samp garante que o arquivo já fica com a propriedade correta, evitando chown manual depois.
Extraia o arquivo e remova o tarball:
sudo -u samp tar -xzf samp037svr_R2-2-1.tar.gz --strip-components=1
sudo -u samp rm samp037svr_R2-2-1.tar.gzA flag --strip-components=1 evita o subdiretório samp03/ extra — os arquivos vão direto para /opt/samp/.
A SA-MP Team não publica checksums oficiais, mas confira o tamanho do arquivo (~1.6 MB) e teste se o binário samp03svr executa sem erro de segmentation fault. Se baixar de mirrors não oficiais, prefira fontes auditadas pela comunidade open.mp.
Configurando o server.cfg
O server.cfg é o coração da configuração — define nome público, senha rcon, gamemode inicial, plugins carregados e limites de jogadores. Edite com cuidado: erros de sintaxe fazem o servidor não iniciar sem mensagem clara.
Abra o arquivo de configuração:
sudo -u samp nano /opt/samp/server.cfgSubstitua o conteúdo por uma configuração mínima funcional:
echo Executing Server Config...
lanmode 0
rcon_password TROQUE_ESTA_SENHA_LONGA
maxplayers 50
port 7777
hostname Servidor SA-MP Hostini
gamemode0 grandlarc 1
filterscripts gl_actions
announce 1
query 1
chatlogging 0
weburl www.sa-mp.com
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 0
logtimeformat [%H:%M:%S]
language EnglishO grandlarc é o gamemode default que vem no tarball. Quando você instalar seu próprio gamemode, substitua o nome em gamemode0. Troque obrigatoriamente o rcon_password antes de subir o servidor.
Senhas como changeme, admin ou strings curtas são alvo imediato de bots que varrem a internet por servidores SA-MP. Use 20+ caracteres aleatórios. Comando para gerar: openssl rand -base64 24.
Liberando a porta no firewall
O Ubuntu 24.04 vem com ufw instalado mas inativo por padrão. Antes de habilitá-lo, garanta que o SSH continua acessível — caso contrário você perde acesso à máquina.
Libere o SSH e a porta UDP do SA-MP:
sudo ufw allow 22/tcp
sudo ufw allow 7777/udp
sudo ufw enableQuando o ufw perguntar sobre desconexão, responda y. A regra do SSH foi adicionada antes do enable, então a conexão atual permanece ativa.
Confirme as regras aplicadas:
sudo ufw status numberedVocê deve ver as duas regras listadas com status ALLOW IN. Se o seu provedor tem firewall de borda separado (security group, painel cloud), libere 7777/UDP lá também.
Rodando como serviço systemd
Executar ./samp03svr direto no terminal funciona para testes, mas o processo morre quando você desconecta o SSH. Um service unit do systemd resolve isso com restart automático e logs centralizados.
Crie o arquivo de serviço:
sudo nano /etc/systemd/system/samp.serviceCole o conteúdo abaixo:
[Unit]
Description=SA-MP Server
After=network.target
[Service]
Type=simple
User=samp
Group=samp
WorkingDirectory=/opt/samp
ExecStart=/opt/samp/samp03svr
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
LimitNOFILE=4096
[Install]
WantedBy=multi-user.targetRestart=on-failure reinicia o processo se ele sair com código diferente de zero — útil pra crashes de plugin. WorkingDirectory=/opt/samp garante que o binário encontra server.cfg, gamemodes/ e plugins/.
Habilite e inicie o serviço:
sudo systemctl daemon-reload
sudo systemctl enable samp.service
sudo systemctl start samp.serviceO enable configura start automático no boot. O start sobe o servidor imediatamente.
Verificação
Com o serviço rodando, confirme três coisas: o processo está vivo, está escutando na porta correta, e responde a queries externas.
Verifique o status do serviço:
sudo systemctl status samp.serviceVocê deve ver Active: active (running) e as últimas linhas do log do servidor mostrando Server Plugins, Filterscripts e Number of vehicle models.
Confirme que a porta UDP 7777 está aberta:
sudo ss -ulnp | grep 7777A saída deve mostrar uma linha com UNCONN 0 0 *:7777 *:* users:(("samp03svr",pid=...)). Se nada aparece, o servidor não bindou na porta — revise o log com journalctl -u samp.service -n 50.
Teste a partir do cliente SA-MP em outro computador: adicione o IP da sua VPS na lista de favoritos (porta 7777) e tente conectar. Se aparece a tela de spawn, o servidor está plenamente funcional.
Resolução de problemas
Servidor não inicia, journalctl mostra “samp03svr: command not found”
O binário existe mas falta permissão de execução, ou as libs 32-bit não foram instaladas. Confirme com:
ls -la /opt/samp/samp03svr
ldd /opt/samp/samp03svr
Se o ldd retornar not a dynamic executable ou erros sobre libgcc_s.so.1, reinstale as libs i386: sudo apt install --reinstall lib32gcc-s1 lib32stdc++6.
Servidor inicia mas ninguém consegue conectar
Quase sempre é firewall — verifique tanto o ufw local quanto o firewall do provedor. Teste a porta externa com nmap -sU -p 7777 SEU_IP_PUBLICO de outra máquina. Se a porta aparece como open|filtered, alguma camada está bloqueando UDP.
Crashes intermitentes a cada poucas horas
Geralmente é gamemode ou plugin com leak de memória. Monitore com top -u samp e correlacione com journalctl -u samp.service. Remova plugins um a um do server.cfg até identificar o culpado.
Próximos passos
Com o servidor base no ar, considere os próximos refinamentos:
- Instalar um gamemode customizado (substitua
grandlarcnogamemode0por seu Pawn compilado emgamemodes/) - Adicionar plugins essenciais como
sscanf2emysqlem/opt/samp/plugins/ - Configurar backup automático do
scriptfiles/via cron - Implementar log rotation pra evitar que
server_log.txtcresça indefinidamente - Subir um painel de monitoramento simples lendo a query do SA-MP via SACNL ou similar
Se você está colocando um servidor SA-MP em produção, uma VPS Hostini já vem com proteção DDoS no perímetro — relevante porque servidores de jogos são alvo frequente de ataques de saturação UDP, o mesmo protocolo que o SA-MP usa pra gameplay.
Perguntas frequentes
Por que preciso instalar bibliotecas i386 num Ubuntu 64-bit?
O binário oficial samp03svr é compilado para 32-bit (i386) e não há build 64-bit nativa. Para executá-lo em um Ubuntu 64-bit você precisa habilitar a arquitetura i386 com dpkg --add-architecture e instalar lib32gcc-s1. Sem essas libs o binário falha silenciosamente ou retorna erro de loader.
Qual a diferença entre as portas 7777 UDP e 7777 TCP?
O SA-MP usa exclusivamente UDP para comunicação cliente-servidor. A porta 7777 TCP só é necessária se você habilitar o query info para sites de listagem. Para gameplay puro, libere apenas UDP 7777 no firewall — abrir TCP sem necessidade aumenta superfície de ataque sem benefício.
Posso rodar samp03svr direto como root?
Tecnicamente sim, mas é má prática. O servidor não precisa de privilégios elevados para escutar na porta 7777 (acima de 1024). Criar um usuário dedicado samp limita o impacto de qualquer exploit em plugins ou filterscripts. O serviço systemd deste tutorial já roda com User=samp.
Como protejo meu rcon_password contra ataques de força bruta?
Use uma senha de 20+ caracteres aleatórios, defina maxplayers próximo ao real para reduzir slots vazios, e configure rcon 1 apenas quando precisar administrar remotamente. Combine com fail2ban filtrando o log do servidor para banir IPs após tentativas falhas — o SA-MP loga RCON authentication failed em server_log.txt.
Por que o servidor não aparece no listagem interna do cliente SA-MP?
A listagem master usa announce 1 no server.cfg e depende de DNS para servers.sa-mp.com. Verifique se announce está habilitado, se a porta UDP 7777 está acessível pela internet (não só localhost) e teste com telnet ou nmap a partir de uma rede externa. Pode levar até 15 minutos para aparecer após o primeiro registro.
O que acontece se eu fechar o terminal SSH com o samp03svr rodando manualmente?
O processo recebe SIGHUP e termina junto com a sessão SSH. Por isso o tutorial usa systemd: ele desacopla o processo da sessão, fornece restart automático em caso de crash, e centraliza logs no journalctl. Alternativas como screen ou tmux funcionam para testes, mas não para produção.