Como instalar plugins SA-MP no Linux: guia prático para VPS
Tutorial técnico para instalar plugins SA-MP em VPS Linux: baixar .so de 32 bits, configurar server.cfg, validar dependências e resolver erros comuns.
Plugins são o que tornam o SA-MP usável em produção: streamer (para mapas grandes sem limite de objetos), mysql (persistência), sscanf (parsing de comandos), entre outros. No Linux a instalação é mais sensível que no Windows, principalmente por causa da arquitetura 32 bits do servidor — baixar um .so de 64 bits é a causa mais comum de “plugin não carrega” em VPS recém-provisionadas.
Este tutorial cobre o fluxo completo: baixar o plugin correto, colocar no lugar certo, declarar no server.cfg, resolver dependências glibc e validar via log. A persona é dono de servidor SA-MP que está migrando de host gerenciado para VPS Linux e precisa entender por que comandos que “sempre funcionaram” no Windows quebram silenciosamente no Linux.
Tempo estimado: 15 a 20 minutos por plugin, contando download e validação. Para um servidor com 4 a 6 plugins, conte uma hora de configuração inicial.
Pré-requisitos
VPS Linux com SA-MP server 0.3.7-R2 já instalado e funcionando (sem plugins). Acesso sudo para instalar pacotes 32 bits. Conhecimento básico de SSH e edição de arquivos via nano ou vim.
Antes de começar, valide os pontos de referência do seu servidor. Você vai precisar destes dados ao longo do tutorial:
i386 (32 bits) plugins/ server.cfg server_log.txt Confirme que está no diretório do servidor SA-MP:
cd ~/samp03
ls -la samp03svr
A saída deve mostrar o binário samp03svr com permissão de execução. Se você instalou em outro caminho, ajuste os comandos do tutorial. Confirme também a arquitetura do binário:
file samp03svr
A saída esperada contém ELF 32-bit LSB executable, Intel 80386. Isso confirma que você precisa de plugins 32 bits — independentemente de a VPS rodar kernel 64 bits.
Instalar dependências 32 bits no sistema
O kernel da maioria das VPS modernas é 64 bits, mas o SA-MP server é compilado para 32 bits. Para o binário e os plugins encontrarem suas bibliotecas, você precisa instalar as variantes i386 da glibc e da libstdc++.
Habilite a arquitetura i386 no dpkg (necessário no Debian/Ubuntu 64 bits):
sudo dpkg --add-architecture i386
sudo apt updateIsso faz o gerenciador de pacotes reconhecer pacotes de 32 bits como instaláveis no sistema. Sem este passo, o apt recusa pacotes com sufixo :i386 dizendo que não estão disponíveis.
Instale as bibliotecas que o SA-MP server e a maioria dos plugins precisam:
sudo apt install -y libc6:i386 libstdc++6:i386 lib32gcc-s1 zlib1g:i386libc6 é a glibc 32 bits — base de tudo. libstdc++6 é necessária para plugins compilados em C++ (a grande maioria). lib32gcc-s1 traz o runtime GCC 32 bits. zlib1g aparece como dependência indireta em plugins que comprimem dados.
Se vai usar o plugin MySQL R39+, instale também libmariadb-dev-compat:i386 ou libmysqlclient21:i386. Sem isso o plugin carrega mas falha em qualquer query com Could not load libmariadb.
Baixar o plugin correto
Este é o passo onde a maioria dos erros acontece. Plugins têm releases separados para Windows (.dll) e Linux (.so), e dentro do Linux ainda existe a divisão 32 vs 64 bits. Pegar o errado resulta em Failed. no log sem explicação clara.
Identifique o repositório oficial do plugin. Os mais comuns:
- streamer — github.com/samp-incognito/samp-streamer-plugin
- sscanf — github.com/Y-Less/sscanf
- mysql (R41) — github.com/pBlueG/SA-MP-MySQL
- fixes2 — github.com/Y-Less/samp-plugin-fixes2
Vá em Releases e procure o arquivo Linux. O nome varia: streamer-2.9.6-linux.zip, sscanf.so, mysql-R41-4-linux-static.tar.gz.
Baixe direto no servidor com wget. Exemplo para o streamer:
cd /tmp
wget https://github.com/samp-incognito/samp-streamer-plugin/releases/download/v2.9.6/samp-streamer-plugin-2.9.6-linux.zip
unzip samp-streamer-plugin-2.9.6-linux.zipDentro do .zip normalmente há plugins/streamer.so (32 bits) e/ou plugins/streamer.x64.so. Use sempre o que não tem sufixo .x64.
Valide a arquitetura do .so antes de copiar para o servidor:
file plugins/streamer.soA saída deve conter ELF 32-bit LSB shared object, Intel 80386. Se aparecer x86-64, você baixou o errado — volte ao release e pegue o outro arquivo.
Plugins precompilados de fóruns ou Discord podem conter backdoors (já houve casos documentados na comunidade SA-MP). Use sempre o release oficial do repositório no GitHub do autor. Se precisa modificar, compile você mesmo a partir do código-fonte.
Mover plugin e ajustar permissões
O loader do SA-MP busca os arquivos .so em um único caminho: o diretório plugins/ ao lado do binário. Não há configuração para mudar isso.
Crie o diretório plugins/ se ainda não existir e copie o .so:
cd ~/samp03
mkdir -p plugins
cp /tmp/plugins/streamer.so plugins/Repita para cada plugin que você baixou. Mantenha o nome de arquivo original — vamos referenciá-lo no server.cfg sem o .so.
Ajuste permissões. O arquivo precisa ser legível e executável pelo usuário que roda o servidor:
chmod 644 plugins/*.soPermissões 755 também funcionam mas não são necessárias — o .so é carregado via dlopen, não executado diretamente. Em servidores compartilhados, evite 777 por princípio.
Registrar plugins no server.cfg
O server.cfg controla quais plugins o servidor tenta carregar na inicialização. A linha plugins aceita nomes separados por espaço, na ordem desejada.
Abra o server.cfg no editor:
nano server.cfgProcure pela linha plugins (pode não existir ainda). Se não houver, adicione no topo do arquivo. O formato é uma única linha:
plugins streamer sscanf mysqlNote: sem .so, sem caminho, separados por espaço. O loader adiciona .so automaticamente e busca em plugins/.
Salve (Ctrl+O no nano, Enter, Ctrl+X) e valide a linha. Erros de digitação aqui resultam em Failed. no log com nome corrompido — streame em vez de streamer.
Quando um plugin depende de outro, declare o dependente depois. mysql antes de qualquer plugin que faça queries no startup; streamer antes de scripts que registrem dinâmicos via callbacks. Quando em dúvida, leia o README do plugin — autores documentam ordem necessária.
Verificação
Com tudo em lugar, suba o servidor e leia o log para confirmar que cada plugin carregou.
Inicie o servidor em primeiro plano para ver a saída em tempo real:
./samp03svrNos primeiros segundos, o servidor enumera os plugins. Você deve ver algo como:
Loading plugin: streamer.so
*** Streamer Plugin v2.9.6 by Incognito loaded ***
Loaded.
Loading plugin: sscanf.so
===============================
sscanf plugin loaded.
Version: 2.8.3
(c) 2022 Alex "Y_Less" Cole
===============================
Loaded.Cada plugin termina com Loaded. em uma linha própria. Se aparecer Failed., a mensagem de erro vem na linha imediatamente anterior — anote o nome exato do erro.
Pare o servidor (Ctrl+C) e confira o server_log.txt:
grep -E "Loaded\.|Failed\." server_log.txt | tail -20Você deve ver uma linha Loaded. para cada plugin declarado no server.cfg. Se a contagem de Loaded. for menor que o esperado, algum não carregou.
Resolução de problemas
”Failed (libplugin.so: wrong ELF class: ELFCLASS64)”
Você baixou a versão 64 bits do plugin. Volte ao release no GitHub e pegue o arquivo sem sufixo .x64. Confirme com file plugins/seuplugin.so antes de tentar de novo — deve mostrar Intel 80386, não x86-64.
”Failed (libplugin.so: cannot open shared object file)”
O arquivo .so não está em plugins/ ou tem nome diferente do declarado no server.cfg. Liste o diretório com ls plugins/ e compare com a linha plugins do config. Nomes são case-sensitive no Linux — MySQL.so não é o mesmo que mysql.so.
”Failed (libstdc++.so.6: cannot open shared object file)”
Faltam as libs 32 bits no sistema. Volte ao passo “Instalar dependências 32 bits” e confirme que libstdc++6:i386 está instalado:
dpkg -l | grep libstdc++6:i386
Se não aparecer, instale e reinicie o servidor.
Plugin carrega mas crasha em runtime
Use ldd para identificar dependências não satisfeitas que o dlopen aceita mas falham depois:
ldd plugins/seuplugin.so
Linhas com not found indicam libs ausentes. Para plugins MySQL, normalmente é libmariadb ou libmysqlclient. Instale a versão :i386 correspondente.
Próximos passos
Com plugins carregando corretamente, o próximo passo natural é configurar inicialização automática via systemd para que o servidor sobreviva a reboots da VPS. Depois disso, configurar backup do banco de dados (se usa o plugin MySQL) e do diretório scriptfiles/ é o que separa setup de hobby de setup de produção.
Se você está migrando para uma VPS dedicada, vale revisar os limites do kernel — ulimit -n baixo derruba o servidor quando o número de jogadores cresce. O padrão de 1024 file descriptors aguenta servidores até ~500 slots; acima disso, ajuste para 4096+ em /etc/security/limits.conf.
Para servidores em produção, uma VPS otimizada para jogos da Hostini já vem com kernel ajustado para baixa latência, proteção contra ataques de UDP flood (comuns contra portas SA-MP) e armazenamento NVMe — relevante quando o servidor faz muita I/O no scriptfiles/. As bibliotecas 32 bits também já vêm preinstaladas nas imagens Linux para SA-MP, economizando os primeiros passos deste tutorial.
Perguntas frequentes
Por que o plugin .so dá 'wrong ELF class' ao iniciar?
O binário do SA-MP server é 32 bits (i386) e só carrega plugins compilados para 32 bits. Esse erro aparece quando você baixa a versão x86_64 (.so de 64 bits). Procure sempre o arquivo marcado como `Linux` ou `i386` no release do plugin — não o `Linux x64`. Em alguns repositórios o sufixo é `.so` puro para 32 bits e `.x64.so` para 64.
Preciso instalar lib32 mesmo em servidor headless?
Sim. O SA-MP server e seus plugins fazem dlopen contra glibc 32 bits e dependências como libstdc++. Sem `libc6:i386`, `libstdc++6:i386` e `lib32gcc-s1`, o servidor falha silenciosamente ou trava em loop de reconexão. Instale os pacotes 32 bits mesmo que sua VPS rode kernel 64 bits.
Posso colocar o plugin direto na raiz e não em plugins/?
Não. O loader do SA-MP busca os arquivos exclusivamente em `plugins/` relativo ao binário do servidor. Colocar em outro lugar resulta em `Failed (libpluginxyz.so: cannot open shared object file)`. Crie o diretório se não existir e mantenha permissões 644 nos arquivos.
A ordem dos plugins no server.cfg importa?
Sim, em casos com dependência mútua. Plugins como `mysql` precisam vir antes de wrappers que dependem dele, e `streamer` antes de scripts que registram callbacks de streaming na inicialização. Quando em dúvida, leia o README do plugin: a maioria documenta exigências de ordem explícitas.
Como sei se o plugin carregou de verdade?
Olhe `server_log.txt` logo após iniciar. Cada plugin emite uma linha do tipo `Loaded.` ou `Loading plugin: nomeplugin.so`. Se aparecer `Failed.`, o motivo vem na linha anterior — geralmente arquitetura errada ou dependência ausente. Cheque com `ldd plugins/seuplugin.so` quais libs estão `not found`.
Precisa reiniciar o servidor toda vez que adiciona um plugin?
Sim. O SA-MP server carrega plugins apenas na inicialização — não há hot-reload. Pare o processo (Ctrl+C ou `systemctl stop`), edite `server.cfg`, valide o arquivo no diretório `plugins/` e suba o servidor novamente. Mudanças no `.so` em runtime não têm efeito até a próxima inicialização.