Como instalar a base ESX em um servidor FiveM do zero

Guia técnico pra instalar base ESX servidor FiveM: dependências, banco MySQL, ordem de ensure no server.cfg e verificação.

ESX é o framework de roleplay dominante no FiveM brasileiro. Apesar de existirem alternativas (QBCore, Ox Core, vRP), a maioria dos scripts comerciais e gratuitos do mercado pressupõe ESX instalado — então saber montar a base limpa, sem dívida técnica acumulada de tutoriais antigos, é o ponto de partida pra qualquer servidor que pretende crescer.

Este guia cobre a instalação do es_extended 1.10+ com oxmysql como driver de banco, ox_lib como biblioteca base e ox_inventory como inventário. É a stack moderna mantida ativamente em 2026 — diferente dos tutoriais de 2020-2022 que ainda recomendam mysql-async e esx_inventoryhud.

Tempo estimado de execução: 30 a 45 minutos pra quem já tem o servidor FiveM rodando. Se você ainda precisa instalar o txAdmin e subir o artifact do FXServer, reserve uma hora extra.

Pré-requisitos

O que você precisa antes de começar

Servidor FiveM já rodando (txAdmin recomendado), MySQL 8.0+ ou MariaDB 10.6+ instalado e acessível, acesso SSH ao servidor (ou painel de gerenciamento), licença gratuita do FiveM (cfx.re/keymaster) e cerca de 200 MB livres pra os recursos.

Antes de baixar qualquer coisa, confirme que o servidor base sobe limpo — sem ESX ainda, só o FXServer puro. Conecte via FiveM client no IP do servidor e verifique se entra no mapa default sem erro de conexão. Se já tem problema nesse ponto, resolva primeiro: ESX vai amplificar qualquer instabilidade da camada de baixo.

Tenha em mãos os dados de conexão do banco:

Host MySQL 127.0.0.1
Porta padrão 3306
Charset utf8mb4
Database esx_server

Preparar o banco de dados

ESX usa MySQL pra persistir jogadores, inventário, veículos, empregos e tudo que precisa sobreviver a um restart. A primeira ação é criar o banco com charset correto — utf8mb4 não é negociável, scripts modernos esperam suporte completo a 4 bytes (emoji, caracteres asiáticos, símbolos especiais usados em RP).

01

Conecte no MySQL como usuário com privilégio de criar database:

mysql -u root -p

Crie o banco e um usuário dedicado pro servidor (não use root em produção):

CREATE DATABASE esx_server CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'esx_user'@'localhost' IDENTIFIED BY 'SenhaForteAqui123!';
GRANT ALL PRIVILEGES ON esx_server.* TO 'esx_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Anote a senha — ela vai entrar no server.cfg em seguida.

02

Baixe o oxmysql do repositório oficial Overextended. Entre no diretório de recursos do seu servidor FiveM (geralmente server-data/resources/):

cd server-data/resources/
git clone https://github.com/overextended/oxmysql.git [standalone]/oxmysql

O wrap [standalone] é uma convenção do FiveM pra agrupar recursos sem dependência entre si. Cria a pasta antes se não existir.

03

Adicione a string de conexão ao seu server.cfg, antes de qualquer ensure de recurso que use banco:

set mysql_connection_string "mysql://esx_user:SenhaForteAqui123!@localhost/esx_server?charset=utf8mb4"
ensure oxmysql

Reinicie o servidor e confira no console se aparece [oxmysql] Database server connection established!. Se aparecer erro de autenticação, revise usuário/senha; erro de host, confirme que o MySQL está escutando em 127.0.0.1.

Instalar ox_lib e es_extended

Com banco respondendo, vem a base do framework. O ox_lib é uma biblioteca de utilitários (UI, callbacks, locale, cache) que o ESX moderno e a maioria dos scripts atuais exigem como dependência declarada no manifesto.

04

Baixe o ox_lib (build mais recente do release oficial):

cd server-data/resources/[standalone]/
git clone https://github.com/overextended/ox_lib.git

Diferente de scripts simples, o ox_lib tem um build de UI compilado — sempre baixe do release tagueado, não do branch main, pra evitar build quebrado.

05

Crie a pasta [esx] pra agrupar todos os recursos do framework. Isso facilita ordenação no server.cfg via ensure [esx] em alguns setups:

mkdir -p server-data/resources/\[esx\]
cd server-data/resources/\[esx\]
git clone https://github.com/esx-framework/esx_core.git

O esx_core é o monorepo oficial — contém es_extended, esx_menu_default, esx_menu_dialog, esx_menu_list e outros recursos auxiliares numa estrutura única.

06

Importe o schema SQL do es_extended no banco. Dentro do esx_core/es_extended/, existe o arquivo es_extended.sql (ou às vezes está em esx_core/setup.sql dependendo da versão):

mysql -u esx_user -p esx_server < server-data/resources/\[esx\]/esx_core/\[core\]/es_extended/install.sql

Esse script cria as tabelas users, user_accounts, user_inventory, jobs, job_grades, addon_account, items e seeders básicos. Sem ele, o servidor sobe mas qualquer chamada de banco quebra.

Confira o path do install.sql

A estrutura interna do esx_core mudou entre versões. Em alguns releases o SQL está em [core]/es_extended/install.sql, em outros direto em es_extended/install.sql. Procure com find . -name "*.sql" dentro do esx_core antes de rodar.

Configurar o server.cfg

A ordem de ensure define o que sobe primeiro. ESX é sensível a isso — recursos que chamam ESX.GetPlayerFromId() antes do framework terminar de inicializar retornam nil silenciosamente e o jogador vira fantasma. A regra é simples: drivers de baixo nível antes, biblioteca depois, framework em seguida, recursos consumidores por último.

07

Edite o server.cfg e adicione o bloco ESX na ordem correta, depois do oxmysql que já está configurado:

# Banco (já configurado anteriormente)
set mysql_connection_string "mysql://esx_user:SenhaForteAqui123!@localhost/esx_server?charset=utf8mb4"
ensure oxmysql

# Biblioteca base
ensure ox_lib

# Framework ESX (ordem importa)
ensure es_extended
ensure esx_menu_default
ensure esx_menu_dialog
ensure esx_menu_list
ensure esx_notify
ensure esx_textui
ensure esx_progressbars

# Inventário (depois do framework)
ensure ox_inventory

Salve o arquivo e reinicie o servidor completo (restart no console do FXServer não é suficiente — pare e suba de novo).

08

Instale o ox_inventory, que substitui o inventário default do ESX:

cd server-data/resources/[standalone]/
git clone https://github.com/overextended/ox_inventory.git

O ox_inventory traz integração nativa com es_extended via bridge automática — não precisa configurar Config.Framework em versões recentes, ele detecta o ESX rodando e se conecta sozinho. Apenas garanta que o ensure ox_inventory está depois do ensure es_extended no cfg.

Bridge framework no ox_inventory

Se você roda mais de um framework no mesmo servidor (raro, mas acontece em setups híbridos), force o bridge editando ox_inventory/data/init.lua e definindo framework = 'esx' explicitamente. Em servidor ESX puro, deixe automático.

Verificar a instalação

Subir sem erro no console é metade do trabalho — o outro lado é confirmar que o framework realmente funciona em runtime, com um jogador conectado.

09

Inicie o servidor e observe o console. Você deve ver, nesta ordem aproximada:

[oxmysql] Database server connection established!
Started resource ox_lib
Started resource es_extended
[es_extended] ESX has started successfully!
Started resource ox_inventory

Se algum desses faltar, o recurso anterior travou. Procure por linhas em vermelho ou amarelo no console — geralmente trazem o motivo (sql syntax error no install, dependency missing no manifest, etc).

10

Conecte no servidor com seu client FiveM. Abra o console F8 in-game e digite:

/setjob mecanico boss

Esse comando vem com o es_extended por default e atribui o job mecanico (grade boss) ao jogador. Se o ESX está vivo, você recebe notificação visual de mudança de emprego. Se nada acontece e o console F8 mostra erro de comando inexistente, o es_extended não carregou — volte e revise a ordem de ensure.

Resolução de problemas comuns

Erro attempt to index a nil value (global 'ESX')

Significa que um script tentou usar ESX = exports['es_extended']:getSharedObject() antes do framework terminar de carregar. Acontece em client scripts mal escritos. Solução: envolva a inicialização do client em um loop de espera:

ESX = nil
CreateThread(function()
    while ESX == nil do
        ESX = exports['es_extended']:getSharedObject()
        Wait(0)
    end
end)

Esse padrão é o oficial recomendado pelo time do ESX desde a versão 1.10.

Jogador entra mas inventário fica vazio

Verifique se a tabela users tem registro pro identificador Steam/license do jogador. Se não tiver, o ox_inventory não consegue carregar slots. Solução: certifique que o ensure es_extended está antes do ensure ox_inventory e que o banco está respondendo (sem erro de conexão no console).

Console mostra oxmysql was unable to establish a connection

A string de conexão está errada. Causas comuns: senha com caractere especial sem escape (use senha alfanumérica simples ou escape com %XX), MySQL escutando só em socket Unix e não em TCP 127.0.0.1 (edite bind-address no my.cnf), firewall bloqueando 3306 localmente (raro mas acontece em servidor com UFW configurado agressivo).

Não exponha 3306 pra internet

Se você está testando em VPS, jamais abra a porta 3306 no firewall externo. ESX e oxmysql conectam em 127.0.0.1 (localhost) — o banco não precisa estar acessível de fora. Banco MySQL exposto na internet é vetor garantido de invasão.

Próximos passos

Com a base ESX rodando, o servidor está pronto pra receber a camada de gameplay. Sugestões pra continuar:

  • Empregos e gangues: adicione esx_jobs, esx_society, esx_billing pra completar a economia base. Edite o seeder jobs no banco pra criar empregos custom do seu RP.
  • MDT e sistema policial: integre mdt-fivem ou similar — depende de oxmysql e es_extended já rodando, então a base que você acabou de montar é pré-requisito.
  • Loadouts e armas: configure o Config.EnablePVP no es_extended/config.lua e use ox_inventory pra controlar permissões de arma por job.
  • Persistência de veículos: instale esx_vehicleshop pra concessionária e ative o spawn de garagem com esx_garage ou qb-garages-esx-bridge.
  • Performance: use o profiler do FXServer (profiler record 1000, depois profiler view) pra medir tick de cada recurso. Acima de 1ms por resource em loop, refatore ou troque.

Se você está colocando o servidor em produção com mais de 32 slots, uma máquina dedicada ao FiveM vale o investimento — o tick rate cai sensivelmente quando o servidor compete com web, banco e outras cargas no mesmo host. Os planos de hospedagem de jogos da Hostini já vêm com CPU isolada e NVMe local, que é exatamente o perfil que ESX gosta sob carga real.

Perguntas frequentes

Qual versão do ESX devo instalar em 2026?

Use es_extended 1.10.x ou superior — é a linha mantida pela ESX Framework Org no GitHub. Versões 1.2 e anteriores (ESX Legacy original) estão obsoletas e dependem do mysql-async, que foi descontinuado em favor do oxmysql. Não baixe forks aleatórios de creators desconhecidos pra base.

Preciso usar oxmysql ou posso continuar com mysql-async?

Use oxmysql. O mysql-async não recebe atualização há mais de dois anos e tem vazamento de conexão conhecido sob carga. O oxmysql usa o driver oficial do MySQL com prepared statements, é mantido pelo Overextended e é o que o es_extended moderno espera no manifesto. Migrar depois custa mais que começar certo.

Por que o servidor sobe mas ESX:GetPlayerFromId retorna nil?

Quase sempre é ordem de ensure no server.cfg. O oxmysql precisa subir antes do es_extended, e o es_extended precisa subir antes de qualquer recurso que chame ESX. Se um script tenta acessar o player antes do framework terminar de carregar, retorna nil. Confira a ordem dos ensure e adicione uma checagem de while ESX == nil do Wait(0) end no client.

ox_inventory ou esx_inventoryhud — qual usar?

ox_inventory. É mais leve, tem suporte ativo, integra nativamente com o es_extended moderno e cobre slots, hotbar, drops e crafting. O esx_inventoryhud antigo depende de recursos legacy e tem inconsistências de slot count entre client e server. Comece com ox_inventory mesmo que a curva inicial seja maior.

Posso usar MariaDB no lugar de MySQL?

Sim. MariaDB 10.6+ é compatível com o driver do oxmysql e em muitos casos performa melhor sob carga concorrente típica de RP. O schema do es_extended (es_extended.sql) importa sem ajuste. A única atenção é manter o charset utf8mb4 e collation utf8mb4_unicode_ci no banco — alguns scripts de creators salvam emoji em campos de chat e quebram em charset menor.

Quantos jogadores um servidor com ESX base aguenta?

A base ESX consome muito pouco — em torno de 0.05ms de tick no server thread com 64 jogadores. O gargalo real vem dos recursos adicionais (jobs, MDT, inventário, scripts de creators mal otimizados). Um servidor com 8 vCPUs dedicadas e SSD NVMe sustenta 64-128 jogadores tranquilamente se o resto do conjunto estiver bem escrito.

Tópicos:
Próximos passos VPS, dedicado ou painel gerenciado para FiveM, SAMP, MTA, Tibia e mais.Hospede seu servidor de jogos com a Hostini →
Esse tutorial foi útil?
Falar no WhatsApp