0 Before you start: qbx_core vs qb-core
"QBCore" in 2026 means one of two things, and it's worth knowing which you're installing:
- qbx_core (Qbox) — the actively-maintained community fork built on the
oxstack (ox_lib, ox_inventory, ox_target). This is what most new servers and modern scripts target. Recommended for fresh installs. - qb-core (legacy) — the original QBCore framework. Still works and has a massive script library, but development moved to Qbox. Pick this only if a paid script you need is qb-core-only.
The steps below are nearly identical either way; where they differ, we note it. If you're starting clean and have no reason to pick legacy, go qbx_core.
1 Prerequisites
You'll need four things before touching QBCore:
| What | Why |
|---|---|
| A FiveM server (artifacts) | The base server build. On Solace this is pre-installed — your server boots straight to a FiveM console. |
| A MySQL / MariaDB database | QBCore stores characters, money, jobs, and inventory in SQL. No database = no QBCore. |
| A license key (cfx.re) | Free from keymaster.fivem.net. Goes in your server.cfg as sv_licenseKey. |
| SFTP / file access | To upload resources and edit configs. See our SFTP guide. |
2 Step-by-step install
Set up the database
Create an empty database (e.g. qbcore) in your panel's database manager and note the host, username, password, and DB name. You'll wire these into the connection string later. Tools like HeidiSQL, DBeaver, or phpMyAdmin make importing the schema easy.
Download the framework + dependencies
Grab the latest releases from GitHub. For Qbox you want, at minimum:
oxmysql— the database layerox_lib— shared library every modern script depends onox_inventory— inventory systemox_target— interaction targetingqbx_core— the framework itself
For legacy, you want oxmysql + qb-core and the qb-* resource bundle (qb-multicharacter, qb-spawn, qb-inventory, etc.).
Upload to resources
Unzip and upload each resource into your server's resources folder. Strip GitHub's -main / version suffix from folder names (oxmysql-2.x.x → oxmysql) — the names must match what your ensure lines reference. A common convention is to group them under a [qbx] and [standalone] bracket folder, but flat works too for a first install.
Import the SQL
Each framework ships a .sql schema (and oxmysql-based resources like ox_inventory have their own). Import them into the database you made in step 1 using phpMyAdmin or HeidiSQL. Skip this and the server will boot but throw "table doesn't exist" errors the moment someone joins.
Write your server.cfg
This is where most first-timers trip. See the full example below.
3 A working server.cfg
Here's a minimal-but-complete Qbox config. Order matters: database first, then libraries, then the framework, then everything else.
## ─── Connection ─── endpoint_add_tcp "0.0.0.0:30120" endpoint_add_udp "0.0.0.0:30120" sv_maxclients 48 sv_hostname "My QBCore Server" ## ─── Database (oxmysql) ─── set mysql_connection_string "mysql://user:password@localhost/qbcore?charset=utf8mb4" ## ─── OneSync (REQUIRED) ─── set onesync on set onesync_population true ## ─── License ─── sv_licenseKey "YOUR_KEY_FROM_KEYMASTER" ## ─── Load order ─── ensure oxmysql ensure ox_lib ensure ox_inventory ensure ox_target ensure qbx_core ## ─── your other resources below ─── # ensure your-job-script # ensure your-hud
set onesync on. QBCore/Qbox require OneSync. Without it the server starts, then dies the instant a script tries modern player iteration — usually with a vague crash on first join.4 First boot & common errors
"No such export oxmysql / ox_lib"
A resource loaded before its dependency. Re-check your ensure order: oxmysql and ox_lib must come before anything that uses them. This is the most common load-order error.
"[MySQL] Can't connect" / ECONNREFUSED
Your mysql_connection_string is wrong, or the DB host/port isn't reachable. Double-check the host (on shared panels it's often not localhost), the username, and that the database name actually exists.
"Table 'players' doesn't exist"
You skipped the SQL import (step 4) or imported into the wrong database. Import the schema into the same DB your connection string points at.
Server starts but kicks players instantly
Almost always OneSync being off, or a missing dependency for qbx_core (ox_lib / ox_inventory not ensured). Read the console output top-to-bottom — the first red error is the real one; the rest are usually knock-on effects.
5 Adding scripts on top
Once the core boots clean, add resources one at a time — not ten at once. Drop the resource in, add its ensure line below the core, import any SQL it needs, restart, and confirm it loads before adding the next. When something breaks, you'll know exactly which script did it. For Qbox, prefer scripts advertised as "qbx"/"ox-compatible"; for legacy, look for "qb-core" support.
Skip the server.cfg headaches.
Our FiveM server.cfg generator has QBCore and ESX presets built in — pick your framework, get the full ensure list and OneSync settings in one click.
6 Quick recap
- Create an empty database.
- Download release builds of oxmysql, ox_lib, ox_inventory, ox_target, qbx_core.
- Upload them to
resourceswith clean folder names. - Import every
.sqlfile into your database. - Set the connection string, turn OneSync on, add your license key, and
ensurein dependency order. - Boot, read the first error, fix, repeat. Then add scripts one at a time.
Need a server to run this on?
Solace runs FiveM on high-clock dedicated CPUs with NVMe storage, DDoS protection, and pre-installed txAdmin. Live in 60 seconds.