Economize 20% hoje mesmo Use o código WELCOME ao finalizar a compra. BEM-VINDO

Como executar um servidor FiveM usando o Docker

Implante um servidor FiveM confiável com o Docker Compose: instale, configure server.cfg, abra portas, persista dados e gerencie atualizações.

Resumo

  • Instalar o Docker Engine + Docker Compose v2 no Ubuntu. (Documentação do Docker)
  • Crie uma pasta de projeto, adicione .env (definir CHAVE_DE_LICENÇA, NOME_DO_SERVIDOR, portas) e um mínimo compose.yaml.
  • Comece com docker compose up -d; observar registros com docker compose logs -f.
  • Editar dados/servidor.cfg (nome do host, endpoints, recursos); reinicie o contêiner.
  • Abra o firewall para 30120/TCP+UDP e 40120/TCP (txAdmin). A porta padrão do txAdmin é 40120. (Documentação do Cfx.re)
  • Sempre execute o contêiner com padrão/tty habilitado para evitar travamentos.GitHub)

Pré-requisitos

  • SO: Linux Ubuntu 22.04+ (notas para macOS/Windows abaixo).
  • Hardware: 2+ vCPUs, 4–8 GB de RAM (mais para recursos pesados), SSD recomendado.
  • Docker: Instalar Motor Docker e Compor v2 de documentos oficiais. (Documentação do Docker)
  • Chave de licença FiveM: Gere no portal Cfx.re (Keymaster). Mantenha em segredo.suporte.cfx.re)
  • Firewall/NAT: Capacidade de abrir/encaminhar as portas 30120 (TCP+UDP) e opcionalmente 40120 (TCP). (Documentação do Cfx.re)
  • (Opcional) Um domínio/subdomínio para txAdmin.

Visão geral da arquitetura

Um contêiner é executado Servidor FX usando o vela de proa/fivem imagem. Os dados são montado em encadernação persistir servidor.cfg, recursos e logs. Portas 30120/TCP+UDP estão expostos aos jogadores; 40120/TCP expõe o txAdmin quando habilitado. A verificação de saúde pode sondar http://127.0.0.1:30120/info.json. (GitHub)

+-------------------- Host Docker (Ubuntu) --------------------+ | /home/fivem/data --> /config (no contêiner) | | /home/fivem/txData --> /txData (dados do txAdmin) | | | | Exposto: 30120/tcp+udp [FXServer] | 40120/tcp [txAdmin] | | Verificação de integridade: GET 127.0.0.1:30120/info.json | +-------------------------------------------------------------+

Início rápido (copiar e colar)

1) Crie uma pasta de projeto

# Opcional: usuário e diretórios de sistema dedicados sudo useradd -r -m -d /home/fivem -s /usr/sbin/nologin fivem || true sudo mkdir -p /home/fivem/{data,txData} sudo chown -R "$USER":"$USER" /home/fivem cd /home/fivem

2) Criar .env

cat > .env <<'EOF' # === OBRIGATÓRIO === LICENSE_KEY=REPLACE_WITH_YOUR_CFX_KEY # Conveniência (usado pelo mapeamento de portas abaixo) FXSERVER_PORT=30120 TXADMIN_PORT=40120 # Não lido diretamente pela imagem; use-o ao editar server.cfg SERVER_NAME="My Docker FiveM" # Opcional: se omitido, a geração de configuração padrão define uma senha RCON aleatória RCON_PASSWORD= EOF

3) Mínimo compose.yaml (fixe uma etiqueta)

Menor configuração de trabalho usando a imagem upstream. Usos tty+padrão para evitar acidentes.GitHub)

# compose.yaml serviços: fivem: imagem: spritsail/fivem:stable container_name: fivem ambiente: - LICENSE_KEY=${LICENSE_KEY} # Alternâncias opcionais (veja a tabela abaixo): # - NO_DEFAULT_CONFIG=1 # necessário se você quiser usar o txAdmin # - NO_LICENSE_KEY=1 # se você colocar a chave em server.cfg # - NO_ONESYNC=1 # desabilitar o OneSync na configuração padrão # - RCON_PASSWORD=${RCON_PASSWORD} volumes: - ./data:/config # server.cfg, recursos, logs portas: - "${FXSERVER_PORT}:30120/tcp" - "${FXSERVER_PORT}:30120/udp" tty: true # evita falha na inicialização (equivalente a -t) stdin_open: true # evita falha na inicialização (equivalente a -i) restart: unless-stopped

Comece:

docker compose up -d docker compose logs -f

4) Variante estendida (txAdmin, healthcheck, limites)

# compose.extended.yaml serviços: fivem: imagem: spritsail/fivem:stable container_name: fivem ambiente: - LICENSE_KEY=${LICENSE_KEY} - NO_DEFAULT_CONFIG=1 # habilitar txAdmin (sem padrão +exec) # - NO_LICENSE_KEY=1 # se armazenar chave em server.cfg # - RCON_PASSWORD=${RCON_PASSWORD} volumes: - ./data:/config - ./txData:/txData # persistir portas de dados txAdmin: - "${FXSERVER_PORT}:30120/tcp" - "${FXSERVER_PORT}:30120/udp" - "${TXADMIN_PORT}:40120/tcp" # txAdmin Web UI (padrão 40120) tty: true stdin_open: true healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:30120/info.json >/dev/null 2>&1"] interval: 30s timeout: 5s retries: 5 start_period: 30s # Botões de recursos básicos para Compose autônomo (não Swarm 'deploy') cpus: 2 mem_limit: "6g" ulimits: nofile: soft: 1048576 hard: 1048576 restart: unless-stopped

Se wget não estiver disponível na imagem, remova a verificação de integridade ou substitua por uma sonda TCP. txAdmin persiste em /txDados, porto 40120 é o padrão. (GitHub)


Configuração e Persistência

  • Na primeira execução, os padrões são gravados na montagem de ligação ./dados (caminho do contêiner /config). Editar ./dados/servidor.cfg e reinicie o contêiner. (GitHub)

Típico servidor.cfg pedaços:

# data/server.cfg # Pontos de extremidade de rede (deixe 0.0.0.0 para escutar em todas as interfaces) endpoint_add_tcp "0.0.0.0:30120" endpoint_add_udp "0.0.0.0:30120" # Nome do servidor definido sv_hostname "Meu Docker FiveM" # Chave de licença (use esta somente se NÃO estiver usando o ambiente LICENSE_KEY) # sv_licenseKey "SUBSTITUA_PELA_SUA_CHAVE_CFX" # Exemplo: garanta um recurso básico # garanta o bate-papo

Layout do diretório (hospedar):

/home/fivem ├─ data/ -> /config (server.cfg, resources/, logs/) └─ txData/ -> /txData (perfis txAdmin e banco de dados)

Backups

  • Backup de montagem vinculada:
tar -C /home/fivem -czf fivem-backup_$(data +%F).tgz dados txData
  • Se você mudar para volumes nomeados, faça backup como:
docker run --rm -v fivem_data:/dados -v "$PWD":/backup busybox \ sh -c 'tar -czf /backup/fivem_data_$(data +%F).tgz -C / dados'

Variáveis de ambiente (de vela de proa/fivem)

NomePropósitoExemplo
CHAVE_DE_LICENÇAObrigatório Chave de licença do servidor FiveM para iniciar o FXServerCHAVE_DE_LICENÇA=xxxxx
SENHA_RCONSenha RCON usada ao criar configurações padrão; 16 caracteres aleatórios se não definidaRCON_PASSWORD=senha forte
SEM_CONFIGURAÇÃO_PADRÃODesativar padrão +exec para que o txAdmin possa gerenciar o servidor1
SEM_CHAVE_DE_LICENÇANão leia a chave do env; mantenha-a em servidor.cfg1
NO_ONESYNCDesabilitar o OneSync nas configurações padrão1

Essas variáveis de ambiente e caminhos /config, /txDados, além da necessidade de -ti são definidos pela imagem upstream.GitHub)

Secret manuseio: Prefiro SEM_CHAVE_DE_LICENÇA=1 e colocar Chave_de_licença_sv em servidor.cfg com permissões de arquivo corretas se você não quiser a chave no ambiente do contêiner.GitHub)


Rede e Segurança

Portas necessárias

PropósitoPortaProto
Conexões do jogador / API30120TCP+UDP
Interface da Web txAdmin (opcional)40120TCP
Mestre legado (raramente necessário)30110UDP

O padrão do FiveM é 30120; o padrão do txAdmin é 40120. (GitHub)

Exemplos de UFW (Ubuntu)

sudo ufw permitir 30120/tcp sudo ufw permitir 30120/udp sudo ufw permitir 40120/tcp # somente se você ativar txAdmin sudo ufw recarregar

nftables (exemplo de extrato de conjunto de regras)

sudo nft add table inet filter sudo nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }' sudo nft add rule inet filter input ct state established,related accept sudo nft add rule inet filter input iif lo accept sudo nft add rule inet filter input tcp dport {30120,40120} accept sudo nft add rule inet filter input udp dport 30120 accept

Menos privilégios e segredos

  • Execute em um host reforçado; evite mapear recursos extras; não execute o Docker como raiz usuário no host.
  • Manter RCON ativado somente se necessário; proteja o txAdmin com credenciais fortes e restrinja o acesso no firewall.
  • Se você usa distros baseadas em SELinux (não Ubuntu), adicione :Z/:z para vincular montagens para corrigir problemas de contexto.

Atualizações e reversões

Atualizar para a última tag fixada

docker compose puxar docker compose up -d

Fixar por digest (imutável)

# Puxe e descubra o resumo da tag atual docker pull spritsail/fivem:stable docker inspect --format='{{index .RepoDigests 0}}' spritsail/fivem:stable # Use o valor impresso em compose, por exemplo: # image: spritsail/fivem@sha256:abcdef...

Reversão

  • Altere a referência da imagem de volta para a tag/resumo anterior e docker compose up -d.
  • Mantenha resumos de imagens recentes com imagem docker ls --digests.

A imagem fornece estável e mais recente tags; preferir estável para menos surpresas. (GitHub)


Monitoramento e Manutenção

  • Status: docker ps, docker compose ps
  • Registros: docker compose logs -f
  • Estatísticas: estatísticas do docker fivem
  • Verificação de saúde: Enquetes info.json; remover/ajustar se houver ferramentas faltando.Documentação do Cfx.re)
  • Disco: sistema docker df, remova imagens antigas se necessário.
  • Backups: Cron o comando tar em “Configuração e Persistência”.

Solução de problemas

  • Chave de licença inválida: Verifique no portal Cfx.re e certifique-se de que apenas um servidor esteja usando a chave.suporte.cfx.re)
  • Portas já em uso: sudo ss -lntup | grep 30120; pare o serviço conflitante ou altere PORTA_DO_SERVIDOR_FX.
  • Não é possível entrar em contato com o txAdmin: Abrir 40120/TCP ou alterar porta; confirmar NO_DEFAULT_CONFIG=1. (Documentação do Cfx.re)
  • O contêiner sai na inicialização: Garantir tty: verdadeiro e stdin_open: verdadeiro estão definidos. (GitHub)
  • Problemas de tempo/DNS: Garanta a sincronização de tempo do host (systemd-timesyncd/chrony) e o DNS funcional (/etc/resolv.conf).
  • Negações do SELinux (não Ubuntu): Usar :Z/:z em montagens de ligação ou contextos de ajuste.
  • info.json/players.json bloqueado:Alguns convars ou proxies podem afetar esses endpoints; confirme se o servidor responde em OBTER /info.json. (Documentação do Cfx.re)

Dicas de desempenho

  • CPU/Memória: Fixar CPUs e definir limites de memória (veja composição estendida).
  • Armazenar: Use SSD/NVMe; mantenha os pacotes de recursos otimizados; evite ativos grandes e não compactados.
  • Rede: Mantenha a latência baixa; garanta que o host não esteja sobrecarregado pela CPU; priorize o UDP 30120.
  • Kernel do host: Padrões razoáveis funcionam; sysctls avançados (net.core.*mem_max) pode ser ajustado se você conhece sua carga de trabalho.
  • Registros: Use a rotação de log (como no exemplo estendido).

Notas do macOS/Windows

  • macOS (área de trabalho Docker): A E/S de arquivo montada em ligação é mais lenta que o Linux nativo; considere o Docker Desktop Compartilhamentos de arquivos sincronizados para melhor desempenho e garantir que a pasta seja compartilhada nas configurações.Documentação do Docker)
  • Janelas (WSL2): As portas publicadas podem ser acessadas via host local no Windows; a exposição à LAN pode exigir configuração extra dependendo do modo. Prefira hospedar em Linux para servidores públicos.Documentação do Docker)

Desinstalação limpa

# Pare e remova o contêiner (mantenha os dados) docker compose down # Remova o contêiner + redes anônimas + imagens (mantenha os dados montados no bind) docker compose down --rmi local --remove-orphans # Se você usou volumes nomeados (não neste guia), liste e remova explicitamente: # docker volume ls # docker volume rm

Para apagar todos dados, remova os diretórios montados em bind:

sudo rm -rf /home/fivem/dados /home/fivem/txData

Perguntas frequentes

Posso hospedar vários servidores em um host?
Sim. Use diretórios de projeto separados, diferentes PORTA_DO_SERVIDOR_FX/PORTA_TXADMIN, e montagens de ligação distintas. O txAdmin suporta dados por perfil em /txDados. (Documentação do Cfx.re)

Como altero o nome/IP do servidor mostrado na lista?
Editar sv_nome_do_host em dados/servidor.cfg. O IP/porta vem das suas portas publicadas e da configuração NAT.

Posso reiniciar automaticamente em caso de falha?
Sim. reiniciar: a menos que seja interrompido no Compose; considere também temporizadores systemd para watchdogs.

Onde os backups estão localizados?
Onde você os cria - por exemplo, fivem-backup_AAAA-MM-DD.tgz no seu diretório de trabalho. Veja os comandos de backup acima.

Como habilito o txAdmin?
Definir NO_DEFAULT_CONFIG=1, montagem de encadernação /txDados, e aberto 40120/TCP. (GitHub)

Preciso abrir o 30110?
Raramente. Era usado para listagem de legados; configurações modernas normalmente precisam apenas de 30120 e 40120 do txAdmin, se usado.Comunidade Cfx.re)

Como faço para mover o servidor para outra máquina?
Cópia dados/ e dados tx/ para o novo host, recrie o mesmo arquivo Compose e comece.


Links e Créditos


Lucas
Lucas

Eu sou Luke, sou um gamer e adoro escrever sobre FiveM, GTA e roleplay. Eu administro uma comunidade de roleplay e tenho cerca de 10 anos de experiência em administração de servidores.

Artigos: 570