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(definirCHAVE_DE_LICENÇA,NOME_DO_SERVIDOR, portas) e um mínimocompose.yaml. - Comece com
docker compose up -d; observar registros comdocker 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
wgetnã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.cfge 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)
| Nome | Propósito | Exemplo |
|---|---|---|
CHAVE_DE_LICENÇA | Obrigatório Chave de licença do servidor FiveM para iniciar o FXServer | CHAVE_DE_LICENÇA=xxxxx |
SENHA_RCON | Senha RCON usada ao criar configurações padrão; 16 caracteres aleatórios se não definida | RCON_PASSWORD=senha forte |
SEM_CONFIGURAÇÃO_PADRÃO | Desativar padrão +exec para que o txAdmin possa gerenciar o servidor | 1 |
SEM_CHAVE_DE_LICENÇA | Não leia a chave do env; mantenha-a em servidor.cfg | 1 |
NO_ONESYNC | Desabilitar o OneSync nas configurações padrão | 1 |
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=1e colocarChave_de_licença_svemservidor.cfgcom 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ósito | Porta | Proto |
|---|---|---|
| Conexões do jogador / API | 30120 | TCP+UDP |
| Interface da Web txAdmin (opcional) | 40120 | TCP |
| Mestre legado (raramente necessário) | 30110 | UDP |
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
raizusuá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/:zpara 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 alterePORTA_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: verdadeiroestdin_open: verdadeiroestã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/:zem 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
- Imagem upstream:
vela de proa/fivem(variáveis de ambiente, caminhos, uso, notas do txAdmin,-tirequisito). (GitHub) - Docker:
- Instalar o Docker Engine no Ubuntu. (Documentação do Docker)
- Instale o Docker Compose v2 (plugin do Linux).Documentação do Docker)
- Compartilhando arquivos locais com contêineres (volumes vs montagens de vinculação).Documentação do Docker)
- Cfx.re / FiveM:
- Crie uma chave de registro de servidor (licença).suporte.cfx.re)
- Documentação txAdmin (porta padrão 40120; caminho de dados).Documentação do Cfx.re)
- Fluxo de proxy/conexão (
/info.json). (Documentação do Cfx.re)






