Skip to main content

Installation

This guide will walk you through the complete installation process for RoadPhone Pro on your FiveM server.
RoadPhone Fold is included with RoadPhone Pro. Install the same roadphone resource, then follow the Fold setup for inventory items, controls and 3D props. For existing servers, see Pro & Fold Updates.

Requirements

Framework

  • ESX (es_extended)
  • QBCore (qb-core)
  • Qbox (qbx_core)
  • Standalone

Database

  • mysql-async
  • or oxmysql

Dependencies

  • xsound
  • OneSync enabled

Optional

  • An inventory with metadata support — ox_inventory, one_inventory, jaksam, tgiann, qb-inventory, codem or core_inventory
  • Voice system (pma-voice, mumble-voip, saltychat, yaca)

Step 1: Download & Extract

1

Download RoadPhone Pro

Download the latest version from your purchase location (Tebex/CFX).
2

Extract the resource

Extract the roadphone folder to your server’s resources directory.
3

Ensure the resource

Add the following to your server.cfg:
server.cfg
Make sure roadphone starts after your framework (ESX/QBCore/Qbox), database, and inventory resources.

Step 2: Database Setup

There is nothing to import. RoadPhone ships an auto-installer: on the first start it creates every table it needs, adds missing columns and indexes to tables from earlier versions, and adds phone_number and phone_bank_iban to your framework’s player table. Watch the console on first boot:
1

Make sure the database connection works

mysql-async (default) or oxmysql must be running and mysql_connection_string set in your server.cfg. The installer runs as soon as the database reports ready.
2

Give the database user CREATE rights

The installer issues CREATE TABLE and ALTER TABLE. A restricted user cannot do that, and you get:
3

Start the resource once, then check the console

Every newly created table and column is logged. A second verification pass runs afterwards and reports anything still missing.
The SQL files under __installation/ (roadphone-esx.sql, roadphone-qb.sql) are only a fallback — import one by hand if your database user is not allowed to create tables, or if you want to review the schema up front. On a normal install you never touch them.
Upgrading from an older version? Just start the new build. Migrations are part of the same pass — new columns, new indexes, widened enums. Take a database backup first anyway.

Step 3: Basic Configuration

Open config.lua and configure the essential settings:

Framework Detection

RoadPhone automatically detects your framework. No manual configuration needed.

Phone Item Requirement

config.lua
If Config.NeedItem = false, all players can open the phone without needing an item.

Phone Keybind

config.lua

Language

config.lua

Step 4: Image Upload Setup

RoadPhone requires an image upload service for camera, profile pictures, and media sharing. Open API.lua and configure your upload service:
Without a valid API key, camera and image upload features will not work.

Step 5: Voice Integration

Configure voice chat integration for phone calls:
config.lua
If no voice system is enabled, phone calls will not work.

Step 6: Livestreams & Video Calls

Livestreams, Connect Live and video calls run through RoadShop’s streaming backend. Your Tebex transaction ID is what authorises your server against it:
API.lua
Without it the backend answers 401 Unauthorized: video calls fail with a config-error notification, and livestreams cannot start. The server console prints Unauthorized: Check your TebexTransactionID in API.lua.
You find the transaction ID in your RoadPhone purchase confirmation. It is only sent server-to-server — never to the client.
The Music app does not need this key. It needs xsound running, and songs get into the library through player submissions plus approval (/music-verify) — or from your own source via the Custom Music API.

Step 7: Inventory Item Setup

If Config.NeedItem = true, you need to add phone items to your inventory system.
Add to ox_inventory/data/items.lua:

Step 8: Optional Features

Metadata System (Phone Stealing/Trading)

Enable item-based phone data for advanced features:
config.lua

Metadata System Guide

Learn how to set up and use the metadata system for phone stealing, trading, and multiple phones.

Target System

Enable target interaction for phone-related features:
config.lua

SIM Cards

Numbers move onto SIM cards, calls and messages cost prepaid credits.
config.lua

SIM Card System

Item setup, credits, shop NPCs and the exports for issuing SIMs.

Battery

The phone drains while it is used and has to be charged.
config.lua

Find My

Location sharing between phone numbers, plus last-seen tracking for a lost phone.
config.lua

Housing

config.lua
With HousingEnabled = false the housing scripts are not loaded at all — switching it on needs a resource restart, not just a config reload.

Loop

The short-video app comes with its own economy. These numbers decide how much money it removes from your server:
config.lua
Payout ratio = DiamondRatio * DiamondValue / CoinPrice. With the defaults, half of everything spent flows back into the economy and half is destroyed.

Audible Ringtones

config.lua
Use /ringtest in-game to hear how far a ringtone carries before enabling it server-wide.

Webhooks & Fees

API.lua also holds the optional Discord webhooks (crypto, messages, bank, calls, social apps, exploit detection) and the economy knobs:
API.lua

Billing Integration

Connect with your billing system:
config.lua

Banking Integration

config.lua

Step 9: Service & Emergency Numbers

Configure emergency services and dispatch:
config.lua
Config.Leitstelle must stay a list of { number, needjob } entries. The old map form (['police'] = 911) is not read any more — dispatch numbers would silently stop working.

Step 10: Final Steps

1

Restart your server

Restart your FiveM server to apply all changes.
2

Test the phone

Join your server and test the phone:
  • Press the configured key (default: F1) or use the phone item
  • Check that all apps load correctly
  • Test camera functionality
  • Make a test call
3

Give players phones

If Config.NeedItem = true, give players phone items:

Troubleshooting

Start with /rpselftest in-game. It prints framework, inventory, metadata support, the phone item it found and its metadata to the server console — that usually names the broken layer straight away.
Check:
  • Resource is started (ensure roadphone in server.cfg)
  • Framework is loaded before roadphone
  • If NeedItem = true, player has a phone item
  • Keybind is correctly configured
Check:
  • API key is set in API.lua
  • Config.uploadMethod matches your service
  • No firewall blocking outgoing requests
Check:
  • Voice system is correctly configured
  • Both players have phone numbers assigned
  • xsound resource is running
Check:
  • mysql-async or oxmysql starts before roadphone
  • Database credentials in server.cfg are correct
  • The database user may CREATE TABLE — otherwise the auto-installer cannot build the schema
  • The console on boot: it names every table it could not create
Check:
  • Framework resource starts before roadphone
  • Framework is properly installed
  • Check server console for Bridge initialization messages

Next Steps

Metadata System

Enable phone stealing, trading, and multiple phones

Server Exports

Integrate RoadPhone with your other resources

Client Exports

Client-side integration options

Commands

Admin, repair and diagnostic commands