Customer documentation

FIVEB guide

From hosting to your first connected player. Everything is on this page: search it with Ctrl+F.

Overview

FiveB is a website and admin panel for FiveM (GTA RP) servers, plus a FiveM resource that connects the game to the website.

1 · The websiteThe CMS you upload to your hosting. Public pages for players, admin panel for your staff.
2 · The FiveM resourceThe fiveb folder in your game server. It sends players, stats and status, and runs admin commands.
3 · The licenseYour FiveB key, checked with brixa.be at install and once a day.

You received two zip files: fiveb-1.0.0.zip (the website) and fiveb-fivem-x.y.z.zip (the FiveM resource, versioned separately).

Time needed15 to 30 minutes. No Composer, Node.js or command line: everything is already in the zip.

Requirements

ItemMinimum
HostingShared hosting or VPS with PHP 8.2+, MySQL 8 or MariaDB 10.6+, and HTTPS
PHP extensionsopenssl, pdo_mysql, mbstring, curl, zip, intl, fileinfo, gd
Scheduled taskOne cron job every minute (almost every host offers it)
Game serverESX Legacy or QBCore for the full feature set. Any other server works in standalone mode (see frameworks)
Outgoing connectionsYour hosting must reach brixa.be (license check). Discord, Tebex and vote sites are optional
LicenseYour FiveB key, emailed after your purchase
DomainOne license works on one domain. Use the domain you will keep, or ask support to reset it later (see License).

Install

  1. Create a database
    In your hosting panel, create an empty MySQL database and a user. Write down the database name, user and password.
  2. Upload the files
    Unzip fiveb-1.0.0.zip and upload the whole content of the fiveb-1.0.0 folder to your hosting (FTP or file manager). Hidden files such as .htaccess must be uploaded too.
  3. Point your domain
    Best: set the domain's document root to the public/ folder.
    Otherwise (shared hosting without that option): keep the root on the main folder; the provided .htaccess redirects to public/.
  4. Check permissions
    storage/, bootstrap/cache/ and public/uploads/ must be writable (755 or 775). The installer tells you if one is not.
  5. Open the installer
    Go to https://your-domain.com/install.

The installer

The installer is a guided browser wizard in six screens: a requirements check, then five forms. It locks itself when finished.

#ScreenWhat to do
1RequirementsEverything must be green. If a line is red, fix it in your hosting panel (PHP version, extension, folder permission) and reload.
2DatabaseHost (usually localhost), port (3306), database name, user and password from the previous section.
3Administrator accountYour name, email and a strong password. This is the owner account of the admin panel.
4Game serverServer name and address (IP:port or the cfx.re join code). It feeds the live status on the home page.
5Discord (optional)Sign in with Discord, or click Skip this step. Everything can be set later in Settings → Discord.
6LicensePaste your FiveB key without spaces. It is checked with brixa.be.

You then land in the admin panel at /admin. Example content (rules, FAQ, factions, lore) is installed in the language chosen during installation so the site is not empty: edit or delete it.

If the installer shows a blank page or error 500Check permissions on storage/ and bootstrap/cache/, then read storage/logs/laravel.log.

Cron job REQUIRED

Without it, emails and Discord notifications are not sent, vote rewards and monthly awards are not given, the license is not re-checked, and no backup is made.

In your hosting panel (Cron jobs), add a task that runs every minute:

* * * * * php /path/to/fiveb/artisan schedule:run >> /dev/null 2>&1
  • Replace /path/to/fiveb with the folder that contains the file artisan.
  • On some hosts php is called php8.2 or /usr/local/bin/php. Your host's documentation tells you which.
  • Hosting panels with a "minute" dropdown: choose every minute (*) for all fields.

What it runs: daily license check, daily database backup (the last 7 are kept in storage/app/backups), IP privacy clean-up, server status samples, monthly vote awards, and the queue for emails and Discord messages.

Test itWait two minutes, then open Settings → License: the last check time should be recent.

First settings

The admin sidebar has one entry per subject (Players, Server, Whitelist, Staff, Factions, Community, Votes, Shop, Content, Rules, Lore, Settings, Users & roles), grouped under a few headings that you can open and close. Inside a subject, its pages are tabs in a frame under the page title. Moving around never reloads the whole page. Menu names below read subject → tab.

MenuWhat for
Settings → AppearanceName, logo, colour, home image, server address and Discord / social links, pages shown in the menu, security (2FA for staff)
Settings → ThemesChoose or install a theme and its options
Settings → EmailSMTP server. Without it, no email is sent (password reset, verification, notifications)
Settings → DiscordDiscord login, bot, synced roles, notifications
Settings → ModulesSwitch the Tebex store and the whitelist on or off
Rules and LoreYour rules (an example is installed: edit it), sections, sanctions, revision history; server lore articles, sections and timeline
Factions → FactionsLSPD, EMS, gangs, businesses: recruitment and in-game job
Votes → Vote sitestop-serveurs.net and rewards (see Votes)
Shop → TebexTebex store (see Tebex)
Users & roles → RolesPermissions of your staff
RecommendedEnable two-factor authentication on your account first, then require it for staff (see 2FA).

FiveM resource

The resource links your game server to the website: characters, playtime, live status, bans and whitelist at connection, and the commands of the admin panel.

  1. Create the server in the admin
    Server → Servers → New server. Copy the API key: it is shown only once.
  2. Install the resource
    Unzip fiveb-fivem-x.y.z.zip into your server's resources/ folder. You get a folder named fiveb.
  3. Edit fiveb/config.lua
    Set at least:
    Config.ApiUrl = 'https://your-domain.com/api/fivem'
    Config.ApiKey = 'the-key-you-copied'
    Config.Access.WebsiteUrl = 'https://your-domain.com'
  4. Start it in server.cfg
    After es_extended / qb-core:
    ensure fiveb
  5. Restart and check the console
    You should see:
    [fiveb] framework: esx
    [fiveb] connected to https://your-domain.com/api/fivem (resource 1.6.1)
Console messageMeaning
API key refused (401)Wrong API key in config.lua
website unreachableWrong ApiUrl, or the game server has no Internet access
Update available: x.y.zA newer resource is provided with your FiveB version

config.lua reference

OptionDefaultRole
Config.ApiUrl—API address of your website, no trailing slash
Config.ApiKeyCHANGE_MEServer API key. Never share it
Config.Framework'auto''auto', 'esx' or 'qbcore'
Config.Locale'en'Language of in-game messages: 'fr' or 'en'
Config.HeartbeatInterval60000Status and player count (ms)
Config.StatsInterval300000Characters and stats (ms)
Config.CommandInterval10000Admin commands from the website (ms)
Config.BanSyncInterval300000Local copy of the ban list (ms)
Config.StandalonetrueSync players even without ESX / QBCore
Config.LinkCommandssite, vote, discord, reglementIn-game commands that print your website links. Set one to false to disable it
Config.Notifications'framework''framework' (ESX / QBCore notification), 'chat', or false
Config.Access.CheckBanstrueRefuse players banned from the website
Config.Access.CheckWhitelisttrueRefuse players without an approved application (only if the whitelist is on)
Config.Access.AllowWhenSiteDowntrueIf the website does not answer: let players in (true) or refuse (false, whitelist only). Bans stay enforced from the local copy
Config.Access.Timeout4000Maximum wait for the website (ms)
Config.DebugfalseMore details in the console (troubleshooting)

Linking a player's account

On the website, a player opens Link FiveM and gets a code. In game they type /fivelink CODE. After that their characters, playtime and purchases appear in My space. /myid shows their identifiers.

ESX · QBCore · standalone

FeatureESX LegacyQBCoreStandalone
Players, playtime, kills / deaths✔✔✔ (FiveM name = character)
Characters (name, job, money, inventory)✔✔—
Bans, whitelist, kick, warn, messages, weather, time✔✔✔
Spawn vehicle✔✔✔ (needs OneSync)
Give / remove money and items, set job✔✔— (the admin warns, the command fails)
Faction job given in game, vote rewards (money / item)✔✔ (gangs too)— (points rewards still work)
  • ESX / QBCore: the resource detects them (Config.Framework = 'auto'). Start fiveb after es_extended or qb-core. ESX identifies characters by identifier, QBCore by citizenid. Force the framework only if detection fails.
  • Standalone (vMenu or any server without ESX / QBCore): leave Config.Standalone = true. Each player appears with their FiveM name and playtime. Money, job and inventory stay empty (“—”). Money, item and job commands cannot work there: the admin warns you and the command shows as failed.
  • The framework detected by the resource is shown in Server → Servers.
Test checklistOn a real server: (1) the two [fiveb] lines appear; (2) the home page shows “Online” and the right player count within one minute; (3) a connected player appears in Players → Players without duplicates after reconnecting; (4) a 1-hour ban kicks the player and refuses the reconnection; (5) a warning or message shows in game and the command turns done in Server → Commands.

Player actions & command history

In Players → Players each row has buttons. They queue a command that the resource runs in game within about 10 seconds.

ButtonEffectNeeds
View / Add notePlayer sheet, staff note on the account—
WarnMessage in the player's chatPlayer online
KickDisconnect the playerPlayer online
BanReason and duration (1 h to permanent); refuses reconnection, enforced even if the site is down—
Economy → money, item, jobGive money, give or remove an item, change job and gradeESX or QBCore, permission manage.economy
Economy → Spawn vehicleCreates the vehicle next to the player (model name, e.g. adder)OneSync, valid model

Every command and its result (pending, done, failed with the reason) is listed in Server → Commands. A command for an offline player stays pending and runs when they connect (for rewards and jobs).

Discord

FiveB talks to Discord through its REST API and webhooks only: nothing runs permanently on your hosting. Everything is in Settings → Discord (administrators only). The cron job must be running.

1 · Player login (OAuth2)

  1. Open discord.com/developers/applications → New Application.
  2. OAuth2 tab: copy the Client ID and Client Secret.
  3. In Redirects, add exactly the URL shown in the FiveB admin: https://your-domain.com/auth/discord/callback.
  4. Paste the Client ID and Secret in Player login.

2 · The bot

  1. Same application → Bot tab → Reset Token and copy it. It is stored encrypted and never shown again.
  2. No privileged intent is needed.
  3. OAuth2 → URL Generator: scope bot, permissions Manage Roles, View Channels, Send Messages, Embed Links. Open the URL and invite the bot to your Discord server.
Role orderA bot can only give roles that are below its own role. In your Discord server settings, drag the bot's role above the roles FiveB must manage (VIP, Whitelist, Moderator…).

Once the bot token and the server ID are saved, the admin shows dropdowns of your roles and channels: no need to copy IDs by hand. To copy an ID, enable Developer mode in Discord (User settings → Advanced), then right-click the server, role or channel.

3 · Synced roles

RuleDiscord role given
CMS role (admin, moderator…)The one you chose for that role
Approved whitelist application“Whitelisted players” role
Tebex purchaseThe role linked to the product ID (removed on refund, chargeback or expiry)
Approved staff applicationThe role of the position
Active banAll managed roles are removed

FiveB never touches roles that are not listed in its settings. The player must have linked Discord (login with Discord) and be a member of your Discord server. Manual resync: Users & roles → Users → Resync Discord roles (one player) or Settings → Discord → Resync all roles.

4 · Notifications

Enable each event separately with its own channel: new and decided whitelist application, new and decided staff application, new support ticket, ban, store purchase, vote. With the bot, pick a channel per event. Without it, set a fallback webhook URL (Discord → channel settings → Integrations → Webhooks). Messages can never mention @everyone, @here, a role or a player. Use Send a test notification to check.

Tebex store

Cfx.re requires Tebex to sell anything linked to a FiveM server. FiveB integrates with it: products are created in Tebex and displayed on /store, payment is on Tebex's secure page, delivery in game is done by the official Tebex plugin, and FiveB receives signed webhooks to show each purchase in the player's history and in Shop → Tebex payments.

On the Tebex side

  1. Create a webstore on creator.tebex.io (game: FiveM).
  2. Create your packages and, for each, the command to run in game (Game server commands).
  3. Integrations → API Keys: copy the Public token (and the Private key if needed).
  4. Developers → Webhooks → Endpoints: add https://your-domain.com/webhooks/tebex, tick at least payment.completed, payment.refunded, payment.declined and payment.dispute.*, then copy the Webhook secret.

On the FiveB side

  1. Shop → Tebex (administrators only).
  2. Paste the Public token and the Webhook secret (and the Private key if needed).
  3. Tick Store enabled and save.
  4. Back in Tebex, click Validate next to the webhook: FiveB answers automatically.

On the game server

In server.cfg, add the secret of your game server from the Tebex panel:

sv_tebexSecret "your-tebex-server-secret"

Secrets are stored encrypted and never sent back to the browser. A purchase is linked to the player through a signed cart value, or through the fivem: identifier of their linked account (/fivelink). Refunds and chargebacks are recorded and logged. The store can be switched off in Settings → Modules.

Optional: only accept webhooks from Tebex's IP addresses

Set TEBEX_WEBHOOK_CHECK_IP=true in .env. Only do it if FiveB sees the visitor's real IP (not behind a proxy or Cloudflare without trusted proxies). The signature remains the main protection.

Whitelist

Players apply on the website; staff review the application; the game server refuses anyone without an approved one.

  1. Turn the module on
    Settings → Modules: tick Whitelist.
  2. Open applications
    Whitelist → Whitelist settings: tick Whitelist enabled (untick to close applications). Optional Discord webhook for new applications and decisions.
  3. Write your questions
    Whitelist → Whitelist questions: add, order and require the questions players answer.
  4. Review applications
    Whitelist → Whitelist applications: accept or refuse, with comments. Needs the permission review.whitelist. The player is notified (email, in game if online, Discord if enabled) and receives the Discord role.
  5. Enforce it in game
    Keep Config.Access.CheckWhitelist = true. A player must have linked their account with /fivelink to be recognised; otherwise they are told how to apply.
Website down?Config.Access.AllowWhenSiteDown decides whether players enter or are refused when the site does not answer.

Votes

Players vote for your server on ranking sites and receive a reward. No reward is given without a check by the vote site's API, done by your web server (never by the player's browser), and a vote can only be rewarded once. Player page: /voter (enable the link in Settings → Appearance, Server pages).

top-serveurs.net

  1. On top-serveurs.net, open your server's management and copy the vote token and the vote page URL.
  2. Votes → Vote sites → New: provider top-serveurs.net, paste the URL ({username} is replaced by the player's name where the site allows it) and the API token (stored encrypted).
  3. Choose the verification method, the delay between two votes (120 minutes for top-serveurs) and the reward.
MethodHow it works
Username (recommended)The player votes using exactly their website username (copy button on /voter). The vote is marked “claimed”: it can never be rewarded twice.
SteamUses the SteamID64 of the linked FiveM account. Vote also marked as claimed.
IPCompares the player's IP. Less reliable (VPN, shared IP); FiveB's delay prevents double rewards.

Other vote sites

Choose Other site and enter the verification URL given by that site, with the variables {token}, {ip}, {username}, {steam} (HTTPS only), plus the JSON key that is true when the player voted (for example success or data.voted).

Rewards and monthly ranking

RewardHow it is given
MoneyBank or cash, through the FiveM resource (ESX / QBCore)
ItemItem name + quantity, through the FiveM resource (ESX / QBCore)
PointsAdded to the website account (works on any server)
  • Money and items are given as soon as the player is connected; offline players receive them at their next login. The player must have linked their FiveM account.
  • /voter shows the monthly top 10 (optionally on the home page). Votes → Vote settings also sets a reward for the top 3, given automatically on the 1st of the month at 00:15 (cron job required), never twice.

Pages & modules

Pages and content

MenuUse
Content → PagesCustom pages shown at /page/your-slug. A page with the slug home customises the home page content
Content → PostsNews (/blog), with category and cover image
Content → FAQQuestions on /faq
Content → Join pageThe step-by-step “Join us” page
Community → GalleryScreenshots (/galerie)
Rules & LoreInteractive rules with search, sanctions and revision history; server lore
CommunityEvents with registrations, streamers, partners, factions, votes
Server → SystemsPresentation of your server's systems (/systemes)

Which pages appear in the website menu is set in Settings → Appearance. The legal pages (privacy, cookies) are included; GDPR tools (cookie banner, data export and deletion, IP retention) are built in.

Modules

Optional features that you switch on or off in Settings → Modules:

Tebex storePackages, payments and deliveries through Tebex.
WhitelistApplications on the website, checked at connection.

A module that is off disappears from the public site and the admin menu; its data is kept.

Roles & permissions

Staff access is controlled by roles. Create and edit them in Users & roles → Roles, and assign them to a user in Users & roles → Users. The Administrator role has every permission.

PermissionAllows
access.adminOpen the admin panel
moderateKick, ban, warn
review.whitelistReview whitelist applications
review.staffReview staff applications
review.factionsReview faction applications (all factions)
manage.factionsCreate and edit factions
manage.contentRules, FAQ, team and content pages
manage.communityEvents, gallery, streamers
manage.shopStore management
manage.economyIn-game money, items, jobs, vehicles
manage.settingsSite settings
view.logsServer logs and command history

A Moderator role is installed with access.admin, moderate and view.logs. Roles can also be shown on the public /equipe (team) page and linked to a Discord role.

Good practiceGive each person only what they need. Keep manage.economy for a few trusted staff: it creates money and items in game.

Two-factor authentication (2FA)

2FA adds a code from an authenticator app (Google Authenticator, Authy, 1Password…) to the password.

  1. Enable it on your account
    Log in on the website, open My space → Security, scan the QR code and enter the 6-digit code.
  2. Save your recovery codes
    Keep them somewhere safe (password manager, paper). Each one works once if you lose your phone.
  3. Require it for staff
    Settings → Appearance → Security: Require two-factor authentication for the administration. Staff must then enable it before opening the admin panel. Enable it yourself first.

To disable it, the account's password is required. If an administrator loses both their device and their recovery codes, another administrator can no longer reset it from the panel: contact support (see Support).

Themes

FiveB separates the code from the look of the public site. The look is a theme. The built-in one is Los Santos Nights (default): it cannot be deleted.

  • Install: Settings → Themes → upload a theme .zip, then activate it. Themes live in the themes/ folder.
  • Customise: each theme exposes options (colours, switches, images) under Customise the active theme. Name, logo, accent colour and home image are in Settings → Appearance.
  • Signed themes: a theme signed by a trusted publisher installs without a warning. An unsigned or unknown one asks you to confirm.
  • Safe fallback: a theme only needs the pages it changes; anything missing comes from the default theme. If a theme breaks the site, run php artisan fiveb:theme-reset to go back to the default theme.
  • Create your own: a theme is a folder with theme.json, views/ (Blade) and assets/. The developer guide is docs/THEMES.md in the zip.
Only install themes from sources you trustA theme runs template code on your server.

License

  • One license = one domain. The first domain that validates your key is bound to it. localhost and .test / .local addresses are always allowed for testing.
  • FiveB checks the license with brixa.be at install and once a day. Your key itself is never sent: only a signed hash.
  • If brixa.be cannot be reached, the site keeps working for 72 hours (grace period). The admin panel always stays reachable so you can fix the license.
  • Status, masked key and last check: Settings → License. Force recheck re-validates immediately; Change license key keeps your current license if the new key is refused.
  • Moving to a new domain: contact support to reset the binding, then activate again.

The full terms are in LICENSE.md (English) and LICENCE.md (French).

Updates & backups

When a new version is published, the admin shows “update available” within 12 hours (read from brixa.be, no key sent).

  1. Back up
    Your database (hosting panel or phpMyAdmin) and your files. FiveB also makes a daily database backup in storage/app/backups (the last 7).
  2. Upload the new files over the old ones
    Do not delete or overwrite: .env, storage/, public/uploads/ and your own themes in themes/.
  3. Open the admin
    FiveB applies the database updates by itself on the first request.
  4. Update the FiveM resource
    When a new fiveb-fivem zip is provided, replace the fiveb folder but keep your config.lua (compare it with the new one for added options), then restart the resource. The admin flags an outdated resource in orange.

Release notes are in CHANGELOG.md.

FAQ & troubleshooting

Blank page or error 500

Make storage/ and bootstrap/cache/ writable, then read storage/logs/laravel.log (last lines). Check the PHP version is 8.2 or newer and that all required extensions are enabled.

/install not found (404)

The domain does not point to public/ and .htaccess is ignored. Ask your host to enable mod_rewrite and to allow .htaccess overrides, or point the document root to public/.

The installer or the site loses the session / “419 page expired”

Check that you use HTTPS consistently and that the domain in your browser matches the one set during install. Make sure storage/framework/sessions is writable.

License refused during install

Paste the key without spaces or line breaks. Your hosting must allow outgoing connections to brixa.be (some hosts block them). If the message says the license is already activated on another domain, ask support to reset it.

“License not valid” page on my site

Open /admin (always reachable) → Settings → License and read the reason shown, then Force recheck. If the cron job does not run for 72 hours the license check can lapse: fix the cron job first.

No emails or Discord notifications

The cron job is not running, or SMTP is not configured in Settings → Email. Send a test notification from the Discord page.

The FiveM server does not connect

Read the [fiveb] lines in the server console: API key refused (401) = wrong key; website unreachable = wrong ApiUrl or no Internet on the game server. Start fiveb after es_extended / qb-core. Set Config.Debug = true for more detail.

The site says “Server offline”

The status comes from the resource heartbeat (every 60 seconds) or from the cfx.re join code / IP:port in Settings → Appearance. If the resource is not connected the server shows offline even when it is up.

A player is not recognised in game (whitelist, rewards)

They have to link their account with /fivelink CODE (code shown on the website).

An admin command stays “pending” or turns “failed”

Open Server → Commands: the reason is shown. Typical causes: player offline (it waits), economy actions on a standalone server, unknown item or job name, vehicle model not found or OneSync disabled.

The money / item / job buttons are missing

The Economy menu needs the permission manage.economy. On a standalone server (no ESX / QBCore) money, item and job commands are accepted but cannot work: the admin shows a warning and Server → Commands shows the reason.

Discord roles do not change

The bot's role is lower than the role to give, or Manage Roles is missing. The player must be a member of your Discord server and have linked Discord. Errors are in storage/logs/laravel.log.

I forgot my admin password

Use Forgot password on the login page (needs SMTP). Without email, contact support.

I lost my 2FA device

Use one of your recovery codes. Without any, contact support (see below).

Can I use FiveB on several domains or servers?

One license covers one domain. Several game servers can connect to the same website (create one server entry per game server).

Is it GDPR compliant?

It includes a cookie banner, a privacy policy, data export and deletion, and automatic IP clean-up (default 90 days, FIVEB_IP_RETENTION_DAYS in .env). You remain responsible for your own legal texts.

Support

Ask for help through brixa.be. The more complete your request, the faster the answer (details in SUPPORT.md in the zip). Please send:

  • Your license key and your FiveB version (bottom of the admin panel).
  • A screenshot or the exact message you see.
  • The last lines of storage/logs/laravel.log (website problems) or the [fiveb] lines of the server console (game problems).