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(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)
+-------------------- 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
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\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)
| 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)
Segredo 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 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
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
# 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
- 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)