Economize 20% com WELCOMEVer ofertas
Como executar um servidor FiveM usando o Docker

Como executar um servidor FiveM usando o Docker

Checklist rápido de configuração Docker FiveM

Uma configuração útil do Docker mantém os dados do txAdmin persistentes, expõe as portas corretas e torna as atualizações reversíveis.

  • Use Docker Compose v2 e monte bind txData ou seu diretório de dados do servidor.
  • Exponha 30120 TCP/UDP para FiveM e 40120 apenas onde o acesso txAdmin for pretendido.
  • Faça backup de server.cfg, resources, txData e dados do banco de dados antes de alterar artifacts ou imagens.

Caminhos de loja relacionados: Packs de servidor | Scripts FiveM | Ferramentas de administração

Execute um servidor FiveM (FXServer) no Docker com este guia de copiar e colar: um mínimo compose.yaml usando o vela de proa/fivem imagem, mapeamento de portas correto para 30120 (TCP+UDP) e 40120 (txAdmin), montagens persistentes para servidor.cfg, recursos e dados do txAdmin, manipulação da chave de licença e etapas seguras de atualização e retorno.

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)

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

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'
# === REQUIRED ===
LICENSE_KEY=SUBSTITUA_PELA_SUA_CHAVE_CFX

# Conveniência (usado no mapeamento de portas abaixo)
FXSERVER_PORT=30120
TXADMIN_PORT=40120

# Não lido diretamente pela imagem; use 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\nservices:\n fivem:\n image: spritsail\/fivem:stable\n container_name: fivem\n environment:\n - LICENSE_KEY=${LICENSE_KEY}\n # Opções opcionais (veja tabela abaixo):\n # - NO_DEFAULT_CONFIG=1 # necessário se você quiser usar txAdmin\n # - NO_LICENSE_KEY=1 # se você colocar a chave no server.cfg em vez disso\n # - NO_ONESYNC=1 # desabilita OneSync na configuração padrão\n # - RCON_PASSWORD=${RCON_PASSWORD}\n volumes:\n - .\/data:\/config # server.cfg, resources, logs\n ports:\n - "${FXSERVER_PORT}:30120\/tcp"\n - "${FXSERVER_PORT}:30120\/udp"\n tty: true # evita falha na inicialização (equiv. a -t)\n stdin_open: true # evita falha na inicialização (equiv. a -i)\n restart: unless-stopped

Comece:

docker compose up -d docker compose logs -f

4) Variante estendida (txAdmin, healthcheck, limites)

# compose.extended.yaml\nservices:\n fivem:\n image: spritsail\/fivem:stable\n container_name: fivem\n environment:\n - LICENSE_KEY=${LICENSE_KEY}\n - NO_DEFAULT_CONFIG=1 # ativa txAdmin (sem +exec padrão)\n # - NO_LICENSE_KEY=1 # se estiver armazenando a chave no server.cfg\n # - RCON_PASSWORD=${RCON_PASSWORD}\n volumes:\n - .\/data:\/config\n - .\/txData:\/txData # persiste dados do txAdmin\n ports:\n - "${FXSERVER_PORT}:30120\/tcp"\n - "${FXSERVER_PORT}:30120\/udp"\n - "${TXADMIN_PORT}:40120\/tcp" # txAdmin Web UI (padrão 40120)\n tty: true\n stdin_open: true\n healthcheck:\n test: ["CMD-SHELL", "wget -qO- http:\/\/127.0.0.1:30120\/info.json >\/dev\/null 2>&1"]\n interval: 30s\n timeout: 5s\n retries: 5\n start_period: 30s\n # Controles básicos de recursos para Compose autônomo (não Swarm 'deploy')\n cpus: 2\n mem_limit: "6g"\n ulimits:\n nofile:\n soft: 1048576\n hard: 1048576\n 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\n├─ data\/ -> \/config (server.cfg, resources\/, logs\/)\n└─ txData\/ -> \/txData (perfis do 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:\/data -v "$PWD":\/backup busybox \n sh -c 'tar -czf \/backup\/fivem_data_$(date +%F).tgz -C \/ data'

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)

Segredo 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 allow 30120\/tcp\nsudo ufw allow 30120\/udp\nsudo ufw allow 40120\/tcp # apenas se você ativar o txAdmin\nsudo ufw reload

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

# Parar e remover o container (manter dados)
docker compose down

# Remover container + redes anônimas + imagens (mantém dados montados por bind)
docker compose down --rmi local --remove-orphans

# Se 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