Skip to main content

Database Backups

Far too often a server gets wiped by a malicious actor or a simple mistake, and without a recent backup months of progress are gone in an instant. That is why database backups are included on every plan, including the free one, and they never count toward your CDN storage.

How it works

Backups are made by a small FiveM resource called qbx_db_backup that runs on your own server, right next to the database. It dumps the database, zips it, and uploads the result to the dashboard. That means:

  • Your database stays closed to the outside. Nothing connects to it from the internet, so you do not need a remote SQL user or an open port for backups.
  • We never store your database password. The resource reads the same mysql_connection_string your server already uses and keeps it on your machine.
  • Nothing to install. The resource ships its own mariadb-dump for Windows and Linux (x64).

Every plan may back up once an hour. What differs between plans is how much backup storage you get:

PlanBackup storage
Free1 GB
Ducklin2 GB
Duck4 GB
Qboxxer8 GB

When the storage is full, the oldest backup is deleted automatically to make room for the new one. Backups are compressed, so a database that is 500 MB in MariaDB is usually well under 100 MB as a backup.

info

Hourly is the most frequent the dashboard accepts. If you prefer fewer backups, set a longer interval on the resource (see below); the storage then covers a longer period.

Setup

This takes about five minutes.

1. Install the resource

Download the latest release from the releases page and extract it into your resources/ folder, so you end up with resources/qbx_db_backup.

2. Get your token

In the dashboard, open your organization, go to Database Backups, and press Connect resource. A window shows the exact lines to add to your server.cfg, including a token that identifies your server.

warning

The token is shown only once. Copy it before you close the window. If you lose it, press Rotate token to get a new one.

3. Add it to server.cfg

Add these lines after your mysql_connection_string:

add_unsafe_child_process_permission "qbx_db_backup"
set qbx_db_backup_token "paste-your-token-here"
ensure qbx_db_backup

The first line is required. FiveM does not let a resource start another program unless you allow it explicitly, and the backup runs mariadb-dump as a separate program so your server never stutters while a backup is running.

danger

Use set, never setr. setr sends the value to every connected player, and this is your token.

4. Restart the server

After the restart, the Backup resource card in the dashboard shows Online within a few minutes, and your first backup runs within the hour. If you do not want to wait, type qbx_db_backup run in the server console.

Day to day

Everything is automatic once it is set up. The dashboard lists every backup with its size and date; you can download or delete any of them.

Useful console commands:

CommandWhat it does
qbx_db_backup runBack up right now
qbx_db_backup statusShow the schedule, the last result, and how much of your storage is used
qbx_db_backup testCheck the configuration without touching the database

By default the resource backs up every hour. To change that, add to server.cfg:

set qbx_db_backup_interval_hours "6"

Any whole number of hours works; 0 turns the schedule off so only qbx_db_backup run makes backups.

Keeping it secure

Your token is the only thing that links your server to your organization. It cannot read your backups or anything else in the dashboard; it can only upload new ones. Press Rotate token if you think it leaked, or Disconnect to stop accepting uploads from that server altogether.

Allowed IPs takes it a step further. Because the uploads always come from your game server, you can restrict the token to your server's address. Open the Backup resource card, look at Your server was last seen from, press Use next to it, and save. Any request with your token from another address is refused, and the dashboard tells you which address was rejected so you can fix it if your server ever gets a new IP.

The database user. The resource uses your server's own connection by default, which is fine: it only ever reads. If you prefer a separate read-only user, create one that only works from the server itself and point the resource at it:

CREATE USER 'backup'@'localhost' IDENTIFIED BY 'a-strong-password';
GRANT SELECT, SHOW VIEW, TRIGGER, EVENT ON your_database.* TO 'backup'@'localhost';
set qbx_db_backup_connection_string "mysql://backup:a-strong-password@localhost:3306/your_database"

Note the localhost: no remote access is needed. Without EVENT and routine access the backup still succeeds, just without events and stored routines, and the dashboard shows a note saying so.

tip

If you only opened port 3306 or created a remote SQL user for the old backup method, you can close the port and drop that user now.

Without the dashboard

The resource also works on its own. Leave qbx_db_backup_token out of your server.cfg and it writes the zips to resources/qbx_db_backup/backups/ instead, keeping the newest seven (change with qbx_db_backup_local_keep). You will not get off-site storage, history, or the dashboard's alerts, but it is a solid free backup for any server.

Moving from the old cloud backups

Until now the dashboard connected to your database from the cloud, using a database user and password you stored with us. That method is retired on 30 September 2026.

  • Existing setups keep running until then, but the connection form is gone; you cannot create or edit one.
  • As soon as the first backup arrives from the resource, your organization switches over and the stored database credentials are deleted automatically.
  • On 30 September, any stored credentials that are left are deleted as well, and the old method stops for everyone.

Installing the resource is all you need to do. Your existing backups stay downloadable.

Troubleshooting

The console says child processes are blocked. The add_unsafe_child_process_permission "qbx_db_backup" line is missing, or it comes after ensure qbx_db_backup. Add it above and restart.

The dashboard shows Offline. The resource is not running, the token is wrong, or the server's address is not on your allowed IPs. In the last case the card shows the rejected address in orange; add it to the list.

"Backup is 1.4 GB but the Free plan holds 1 GB of backups." A single backup is larger than your plan's storage, so there is nothing to delete to make room. Upgrade the plan or shrink the database.

"Next backup allowed at …" You already backed up in the last hour. The scheduled one runs as soon as it is allowed.

Managed hosting (ZAP, Pterodactyl, Pelican and similar). The resource bundles its own dump tool, so nothing has to be installed on the host. You only need to be able to edit server.cfg, which every panel allows. Supported platforms are Windows x64 and Linux x64.