Como rodar um servidor FiveM em uma VPS
Instale o FXServer no Ubuntu, fixe uma build de artifacts, adicione a licence key da Cfx.re e abra a porta 30120 em TCP e UDP. Mantenha o txAdmin privado.
O que um servidor FiveM numa VPS precisa
Um servidor FiveM numa VPS precisa de um utilizador Linux sem privilégios, de uma build de artifacts obtida da Cfx.re, de uma licence key e de uma porta aberta em TCP e UDP. A instalação demora cerca de dez minutos. O resto deste guia cobre os aspetos que determinam se o servidor é jogável: a velocidade de um único núcleo do CPU, a memória necessária para os seus resources e um painel de gestão que nunca deve ficar exposto num endereço público.
Há três pré-requisitos fixos. Os binários do servidor, chamados artifacts, estão disponíveis na listagem oficial de builds da Cfx.re. A licence key é obtida no portal da Cfx.re em portal.cfx.re, o serviço a que os guias mais antigos chamam keymaster, e fica associada ao endereço da máquina que a utiliza. Cada jogador que se liga precisa da sua própria cópia legítima de GTA V (Grand Theft Auto V) na Steam, no Rockstar Games Launcher ou na Epic Games, além de uma conta Cfx.re gratuita. O cliente verifica a propriedade do jogo quando arranca. Por isso, um servidor baseado em qualquer outra coisa não funciona, e este guia não abrange conteúdo de contorno de qualquer tipo.
Alojamento do servidor é uma tarefa diferente de jogar na máquina. A questão de saber se pode executar o próprio jogo numa VPS é separada e tem uma resposta diferente.
Por que a velocidade de um único núcleo determina a experiência num servidor FiveM
O FXServer, o binário do servidor FiveM, executa a lógica do jogo numa thread principal. Cada script de recurso, cada processador de eventos e cada atualização de estado passa por esse único ciclo. Os núcleos adicionais ajudam o kernel, a base de dados e a pilha de rede. Não dividem o ciclo do jogo. Por isso, uma máquina com 4 vCPU num núcleo lento apresenta interrupções sob carga, enquanto uma máquina com 2 vCPU num núcleo rápido permanece fluida.
Isto contraria o hábito habitual de escolher VPS, em que o número de núcleos é o principal destaque. Verifique a velocidade por núcleo antes de gastar dinheiro. Comece pelo modelo da CPU:
lscpu | grep -E 'Model name|MHz'Depois, consulte a pontuação publicada de single thread desse modelo. A classificação single thread do PassMark e a pontuação single-core do Geekbench são públicas. Ambas medem o trabalho executado por um núcleo, que é o valor relevante neste caso. Depois disso, meça a máquina que recebeu:
sudo apt update && sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 runLeia a linha events per second. Execute o mesmo comando em dois fornecedores candidatos para os comparar corretamente, porque a carga de trabalho é idêntica e está limitada a um núcleo. Um teste de desempenho de VPS reproduzível mostra como manter esses valores comparáveis entre máquinas.
Depois, confirme que o núcleo é realmente seu:
vmstat 1 5A última coluna, st, é o steal time: a percentagem de tempo em que a sua CPU virtual estava pronta para executar, mas o hypervisor a deixou à espera. Um valor constante acima de 1 ou 2 significa que partilha um núcleo físico com vizinhos ocupados. Um ciclo de jogo manifesta isso imediatamente como rubber banding. Steal time causado por um vizinho ruidoso explica como ler essa coluna e o que fazer a esse respeito.
A memória aumenta com os recursos que executa, não apenas com o número de slots. Os dados base do servidor fornecidos pela Cfx.re ocupam algumas centenas de megabytes. Um framework de roleplay com quarenta ou cinquenta recursos e uma base de dados MariaDB na mesma máquina corresponde a uma configuração diferente: 4 GB é um mínimo sensato, e 8 GB é confortável para 32 a 64 slots. Estes são valores típicos publicados por configurações da comunidade. Use-os como ponto de partida e monitorize free -m sob carga real de jogadores.
Crie um utilizador e instale as dependências
Execute o servidor com um utilizador normal, nunca como root. Existem duas razões. Usar root é uma má prática em qualquer serviço exposto à Internet. Além disso, o artefacto Linux é executado dentro de um sistema de ficheiros raiz Alpine Linux incluído no pacote. Por isso, os ficheiros extraídos por root não podem ser executados por outros utilizadores. Esta é a razão mais comum para uma instalação nova não iniciar.
sudo adduser --disabled-password --gecos "" fivem
sudo apt update
sudo apt install -y git xz-utils curl tcpdump
sudo -iu fivemTudo o que se segue é executado com o utilizador fivem. xz-utils é necessário porque o download é um arquivo .tar.xz, e git é usado para clonar os dados base do servidor.
Baixar uma compilação de artefacto fixada
A compilação Linux está no canal build_proot_linux do servidor de artefactos Cfx.re. A página de transferência do servidor Cfx.re assinala uma compilação como Recommended e outra, mais recente, como Latest. Ambos os rótulos passam para novas compilações quando são lançadas. Em vez disso, fixe a pasta numerada. Se reconstruir o servidor no próximo mês, obterá o mesmo binário que testou este mês. Uma atualização passa a ser uma decisão consciente.
mkdir -p ~/FXServer/server
cd ~/FXServer/server
curl -fLO https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/35245-6efb47dff473c0e2a12fb50b08d74c0eb24a50d5/fx.tar.xz
tar xf fx.tar.xz
lsA compilação 35245 tinha o rótulo Recommended quando consultei a página de transferência do servidor Cfx.re, em 9 de outubro de 2026. Abra essa página, selecione Linux e copie o nome da pasta da ligação fx.tar.xz atual para o URL. O nome é o número da compilação seguido de um hash de commit. A antiga listagem do diretório de artefactos, ainda referenciada por muitos guias, agora redireciona para a mesma página.
Uma compilação fixada também tem um prazo de validade. A Cfx.re suporta um artefacto Recommended até seis semanas depois da compilação seguinte. A política indica que os artefactos de servidor sem suporte e com mais de três meses não poderão ser encontrados pelo navegador de servidores. Uma compilação desatualizada continua a funcionar, mas os jogadores deixam de poder entrar a partir do navegador. Por isso, agende as atualizações em vez de fixar uma compilação indefinidamente.
ls deverá agora mostrar run.sh e um diretório alpine. Esse diretório é o elemento essencial. O artefacto Linux inclui o seu próprio sistema de ficheiros raiz Alpine e inicia o servidor dentro dele através do proot, uma ferramenta em espaço de utilizador que emula o chroot sem privilégios de root. É por isso que uma única transferência funciona no Ubuntu, Debian e Rocky sem pacotes específicos da distribuição.
Agora clone os dados base do servidor. Eles contêm os recursos predefinidos que o seu server.cfg inicia:
git clone https://github.com/citizenfx/cfx-server-data.git ~/FXServer/server-dataObter uma chave de licença e criar o server.cfg
Inicie sessão em portal.cfx.re com a sua conta Cfx.re e crie uma chave de servidor. O portal pede o endereço IP da máquina que a vai utilizar, e a chave fica associada a esse endereço. Mudar para um VPS novo implica editar a chave no portal, não criar uma segunda chave. A alteração aplica-se imediatamente, mas o FXServer só volta a validar a chave quando reinicia.
Crie ~/FXServer/server-data/server.cfg:
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager
ensure basic-gamemode
ensure hardcap
sv_hostname "My FiveM server"
sv_maxclients 48
set onesync on
sv_scriptHookAllowed false
sv_licenseKey ChangeMe
add_ace group.admin command allow
add_principal identifier.fivem:1 group.adminsv_maxclients aceita um valor entre 1 e 2048. Um valor igual ou superior a 32 requer onesync definido como on ou legacy, e um valor superior a 64 requer on. OneSync é o modo de consciência do estado do servidor e permite ultrapassar o número reduzido de slots do jogo base. Definir 128 slots com o OneSync desativado não fornece 128 slots. Cria uma configuração que o servidor rejeita.
sv_licenseKey recebe a chave sem aspas e sem espaço no fim. O FXServer divide essa linha pelos espaços em branco. Por isso, um carácter adicional invalida a chave e impede o arranque do servidor.
rcon_password não aparece propositadamente nesse ficheiro. O RCON (consola remota) só é ativado quando a variável é definida e, nesse caso, escuta na mesma porta UDP do jogo. Uma palavra-passe RCON numa porta pública é um canal de comandos remotos para o seu servidor. Deixe-a indefinida, salvo se tiver uma necessidade específica. Se a utilizar, escolha uma palavra-passe longa e aleatória.
sv_scriptHookAllowed permanece false. A documentação oficial marca esta opção como não recomendada, porque permitir clientes Script Hook V expõe o servidor a abusos do lado do cliente.
As duas últimas linhas funcionam em conjunto. add_ace group.admin command allow permite que o grupo group.admin execute todos os comandos, e add_principal identifier.fivem:1 group.admin faz com que o ID 1 da conta Cfx.re herde desse grupo. É isso que dá privilégios de administrador à conta. A sintaxe documentada é add_principal [child_principal] [parent_principal], por isso as duas partes são necessárias: uma linha add_principal que indique apenas a conta não tem nenhum grupo do qual herdar e não concede permissões. Substitua 1 pelo seu próprio ID numérico. Caso contrário, terá concedido privilégios de administrador à conta de outra pessoa e não à sua.
Inicie-o manualmente uma vez:
cd ~/FXServer/server-data
bash ~/FXServer/server/run.sh +exec server.cfgNuma segunda sessão SSH, peça ao servidor informações sobre si próprio:
curl -s http://127.0.0.1:30120/info.json | head -c 200O JSON que identifica as variáveis e os recursos do servidor indica que o FXServer está associado à porta e responde. Connection refused significa que nunca conseguiu associar-se à porta. Consulte a saída da consola em vez de tentar adivinhar a causa.
Um servidor sem chave apresenta esta mensagem e para:
This server does not have a license key specified. Please set the sv_licenseKey console variable to a key from https://keymaster.fivem.net/.A mensagem continua a indicar o endereço antigo do keymaster. Esse endereço encaminha para o mesmo portal Cfx.re. Se a chave estiver definida e o servidor continuar a recusar-se a iniciar, a causa habitual é o endereço IP registado na chave já não corresponder ao desta máquina.
Quais portas um servidor FiveM precisa de ter abertas?
A porta 30120, em TCP (protocolo de controlo de transmissão) e UDP (protocolo de datagramas do utilizador). O FiveM usa o mesmo número de porta para dois protocolos e precisa de ambos. Se abrir apenas TCP, o sintoma é confuso: http://your.ip:30120/info.json responde num browser, por isso o servidor parece estar operacional, mas o cliente do jogo fica em Failed to get info from server e nunca entra, porque a própria consulta do cliente e o tráfego do jogo usam UDP.
sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verboseMantenha uma segunda sessão SSH aberta enquanto ativa qualquer firewall. Os conceitos básicos do ufw para um VPS explicam a política de negação predefinida que faz com que as regras anteriores sejam suficientes por si só.
A maioria dos fornecedores também executa uma firewall de rede fora do guest, controlada a partir do painel e não da shell. Uma regra do ufw não prova nada sobre essa camada. Quando o TCP responde a partir do exterior e os jogadores continuam sem conseguir ligar-se, monitorize o tráfego enquanto alguém tenta ligar-se:
sudo tcpdump -ni any udp port 30120A chegada de pacotes significa que a firewall externa está correta e que a falha está dentro do servidor. O silêncio significa que algo à frente do servidor está a descartá-los. Nesse caso, verifique primeiro o painel do fornecedor.
Gerir o servidor com txAdmin sem o expor
txAdmin vem incluído no artifact que já descarregou. Inicie run.sh sem o argumento +exec. O comando abre um painel Web na porta TCP 40120 e apresenta no console o URL do painel e um PIN de curta duração. Use esse PIN uma vez para associar a sua conta Cfx.re. Depois disso, inicie sessão com a conta de administrador criada pelo txAdmin.
O txAdmin não tem uma palavra-passe predefinida. Por isso, o risco não é uma credencial que se esqueceu de alterar. O risco está na função do painel: é um console remoto. Permite reiniciar o servidor, editar server.cfg, implementar dados do servidor e executar comandos com o utilizador do servidor. Deixar a porta 40120 acessível pela Internet expõe uma página de início de sessão para todas essas funções num endereço público. Os scanners encontram portas de painéis abertas em poucas horas. Não abra a porta 40120 na firewall. Aceda ao painel através de um túnel SSH a partir da sua própria máquina:
ssh -N -L 40120:127.0.0.1:40120 fivem@YOUR_SERVER_IPDepois, abra http://127.0.0.1:40120 no browser. O tráfego do painel passa dentro da ligação SSH e a porta permanece fechada para todos os outros clientes.
Há uma armadilha que deve conhecer antes de tentar resolver isto de outra forma. O txAdmin lê TXHOST_INTERFACE (0.0.0.0 por predefinição) para decidir a interface à qual deve associar-se. A documentação indica explicitamente que o mesmo valor é aplicado ao FXServer. Se o definir como 127.0.0.1 para ocultar o painel, também associa o servidor de jogo à interface de loopback. Nesse caso, nenhum jogador consegue aceder ao servidor. Feche a porta do painel com a firewall, não com essa variável. Para mover o painel para outra porta, defina TXHOST_TXA_PORT. Esta opção aceita qualquer valor exceto 30120. A convar mais antiga +set txAdminPort aparece em muitos guias. A documentação do txAdmin marca-a como obsoleta e indica que deixará de funcionar numa versão futura.
Mantenha o servidor em execução depois de terminar a sessão
bash run.sh termina quando a sessão SSH termina. O tmux é adequado durante os testes: execute tmux new -s fivem, inicie o servidor, pressione Ctrl-b e depois d para se desligar, e use tmux attach -t fivem para voltar. Uma sessão tmux não sobrevive a um reboot. Tudo o que for importante deve ficar numa unidade systemd.
Escreva /etc/systemd/system/fivem.service:
[Unit]
Description=FiveM FXServer
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=fivem
Environment=HOME=/home/fivem
WorkingDirectory=/home/fivem/FXServer/server-data
ExecStart=/bin/bash /home/fivem/FXServer/server/run.sh +exec server.cfg
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now fivem
systemctl status fivem
journalctl -u fivem -fenable --nowfaz duas coisas: inicia o serviço imediatamente e volta a iniciá-lo depois de um reboot. Um servidor iniciado manualmente deixa de estar em execução depois da próxima atualização do kernel. journalctl -u fivem -f é agora a sua consola, porque um serviço systemd não tem um terminal onde possa escrever. Se gerir o servidor através do txAdmin, remova +exec server.cfg de ExecStart e aponte WorkingDirectory para /home/fivem/FXServer/server, porque o txAdmin inicia o servidor de jogo por si e mantém a pasta de dados junto de run.sh.
O que fazer backup e onde esses dados ficam
Não vale a pena fazer backup dos artefactos, porque pode descarregar novamente a build fixada em poucos minutos. Há quatro elementos que são exclusivamente seus.
~/FXServer/server-data/resources: todos os recursos que instalou, comprou ou escreveu.server.cfg, onde quer que esteja: toda a configuração do servidor, incluindo os seus principais de administração.~/FXServer/server/txData: a configuração, a lista de administradores e os logs do txAdmin. Com o artefacto Linux, esta pasta é criada ao lado derun.sh.- A base de dados MariaDB ou MySQL, se a sua framework utilizar uma. Os personagens, o dinheiro, os veículos e os inventários ficam aí e em nenhum outro local. Por isso, um backup dos recursos sem um dump da base de dados restaura um mundo vazio.
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sqlUm dump armazenado no mesmo disco que o servidor não é um backup, porque o disco é precisamente o componente que pode falhar. Envie-o para fora do servidor segundo uma agenda. É esse o objetivo de fazer backups com restic a partir de um VPS.
Modos de falha e mensagens apresentadas
Permissão negada no loader. O servidor termina imediatamente e apresenta uma linha semelhante a esta:
run.sh: line 8: /home/fivem/FXServer/server/alpine/opt/cfx-server/ld-musl-x86_64.so.1: Permission deniedIsto acontece porque o arquivo foi extraído com sudo. Por isso, tudo dentro de alpine/ pertence a root e o utilizador fivem não pode executar o loader nele. Corrija o proprietário com sudo chown -R fivem:fivem /home/fivem/FXServer ou elimine a pasta e extraia o arquivo novamente como fivem.
tar recusa-se a abrir o download. tar (child): xz: Cannot exec: No such file or directory significa que o pacote xz-utils está em falta. Por isso, tar não consegue descomprimir um arquivo .tar.xz. Instale-o e extraia o arquivo novamente. Um download que termina demasiado depressa normalmente é uma página de erro HTML guardada como fx.tar.xz. tar identifica-a como um arquivo corrompido.
O servidor funciona, mas ninguém consegue ligar-se. Verifique primeiro as portas, nesta ordem: a regra do ufw para TCP e UDP na porta 30120, a firewall de rede do próprio fornecedor e o IP registado para a chave de licença. Execute curl contra info.json a partir de fora do servidor. Isto distingue um problema de rede de um problema no servidor com um único comando.
O tempo de tick aumenta à medida que chegam jogadores. O painel de desempenho do txAdmin mostra o tempo de tick do servidor. Quando este aumenta com o número de jogadores enquanto a utilização total de CPU parece baixa, um recurso está a saturar a thread principal. Tenha presente o cálculo: num servidor com 4 vCPU, um único core totalmente utilizado representa aproximadamente 25 por cento da CPU total em top. O sistema parece estar inativo, mas não está. Pare os recursos um de cada vez e monitorize o tempo de tick para identificar qual deles está a consumir os recursos.
Dimensionamento em comparação com outros servidores de jogos
Um servidor FiveM jogável precisa de um núcleo rápido e de memória suficiente para a lista de resources que efetivamente executa. A quantidade de slots depende desses dois fatores, e nenhum número de vCPUs corrige um núcleo lento. Escolher um VPS para servidores de jogos explica esse compromisso para uma frota diversificada, e executar um servidor Minecraft num VPS tem a mesma estrutura subjacente: um ciclo principal de atualização, pelo que a velocidade por núcleo também define o limite nesse caso.
FAQ
Quanta CPU e RAM um servidor FiveM precisa?
Um núcleo rápido é mais importante do que vários núcleos lentos, porque o FXServer executa a lógica do jogo numa única thread principal. Compare a pontuação publicada de single thread do modelo de CPU e confirme no servidor com sysbench cpu --threads=1 run. Verifique também se vmstat mostra um steal time próximo de zero. Em termos de memória, os dados base do servidor Cfx.re usam algumas centenas de megabytes. Um framework de roleplay com quarenta ou cinquenta resources e uma base de dados local funciona confortavelmente com 8 GB, mas fica limitado abaixo de 4 GB. Estes são valores típicos da comunidade. Por isso, monitorize free -m nos períodos de pico em vez de confiar neles.
Os jogadores precisam de ter o GTA V para entrar no meu servidor FiveM?
Sim. Cada jogador que se liga precisa de uma cópia legítima e licenciada do GTA V na Steam, no Rockstar Games Launcher ou na Epic Games, além de uma conta Cfx.re gratuita. O cliente FiveM verifica a propriedade do jogo antes de permitir a ligação. Não existe uma forma suportada de contornar essa verificação. Executar um servidor que tente fazê-lo está fora do permitido pela Cfx.re.
Que portas um servidor FiveM precisa de ter abertas?
A porta 30120 em TCP e UDP, ambas. Os endpoints HTTP, como info.json, e os downloads de resources usam TCP. O tráfego de jogo do cliente usa UDP. Abrir apenas TCP cria a situação confusa em que o servidor responde num browser, mas os jogadores veem Failed to get info from server. O txAdmin precisa da porta TCP 40120. Essa porta deve permanecer fechada à Internet.
É seguro deixar o txAdmin acessível na porta 40120?
Não. O txAdmin é uma consola remota que reinicia o servidor, edita a configuração e executa comandos. Um painel exposto é, portanto, um plano de controlo exposto para todo o servidor de jogo. Não existe uma palavra-passe predefinida, mas uma página de login pública convida a ataques às credenciais que não consegue detetar. Mantenha a porta 40120 fechada na firewall e aceda ao painel através de um túnel SSH com ssh -N -L 40120:127.0.0.1:40120 user@server. Em seguida, abra http://127.0.0.1:40120 no browser. Não associe o txAdmin a 127.0.0.1 com TXHOST_INTERFACE, porque essa definição também força o servidor de jogo a usar o loopback e impede qualquer jogador de se ligar.
Devo fixar uma build de artifact ou usar sempre a mais recente recomendada?
Fixe a pasta da build numerada. A etiqueta recommended muda regularmente para uma nova build. Por isso, um script que obtenha a build recommended pode fornecer um binário diferente em cada reconstrução. Um servidor que funcionava ontem pode falhar numa nova implementação por motivos não relacionados com as suas alterações. Registe o número da build e o hash do commit que testou. Faça as atualizações de forma deliberada e mantenha a pasta anterior no disco, para poder voltar atrás editando um único caminho na unidade systemd. Não deixe uma versão fixada ficar desatualizada. A política da Cfx.re torna os artifacts não suportados com mais de três meses impossíveis de usar para entrar no servidor a partir do browser de servidores. Faça a atualização dentro da janela de suporte.