1 RAGE:MP, and how it differs from FiveM
RAGE Multiplayer is a multiplayer modification for Grand Theft Auto V — its own client, its own server browser, its own scripting API. It is not FiveM and the two aren't compatible: a player needs the matching client for whichever one you run, and a script written for one won't run on the other.
The practical differences when you're choosing:
| RAGE:MP | FiveM | |
|---|---|---|
| Scripting | JavaScript on Node.js by default; C# via a bridge plugin | Lua, JavaScript, C# |
| Config | conf.json | server.cfg |
| Resource folders | packages/ + client_packages/ | one resources/ tree with fxmanifest.lua |
| Default port | 22005 (+22006 HTTP) | 30120 |
| Ecosystem | Smaller — fewer ready-made scripts | Much larger, most RP frameworks target it |
The honest summary: FiveM has far more off-the-shelf content, so if you want a roleplay server assembled from existing resources, that's the easier road. RAGE:MP appeals if you're writing your own systems in JavaScript and want a less crowded browser to stand out in. Both need GTA V — players must own a legitimate copy.
2 Get the server files
Linux
One command pulls the current server build and unpacks it into a ragemp-srv folder:
wget https://cdn.rage.mp/updater/prerelease/server-files/linux_x64.tar.gz tar -xzf linux_x64.tar.gz cd ragemp-srv ./ragemp-server
Windows
The Windows server files come out of the client updater, which is unintuitive the first time:
- Install the RAGE Multiplayer client.
- Open
RAGEMP/config.xmland changeprereleasetoprerelease_server. - Run
updater.exe— it downloads the server build instead of the client one. - Copy the
server_filesfolder somewhere sensible. - Change
config.xmlback toprereleaseand run the updater again, or your client will be broken.
Start it with ragemp-server.exe.
3 What's in the folder
ragemp-srv/ ├── conf.json ← all server configuration ├── ragemp-server ← the executable (.exe on Windows) ├── packages/ ← SERVER-side scripts ├── client_packages/ ← CLIENT-side scripts and UI ├── maps/ ← map files, JSON format └── plugins/ ← .dll plugins (C# bridge lives here)
The split between packages/ and client_packages/ is the thing to internalise early. Server-side logic — player data, money, jobs, anything a player must not be able to edit — goes in packages/ and never leaves the server. Anything in client_packages/ is downloaded to the player's machine, so treat it as public: no secrets, no database credentials, no trust.
4 conf.json — the settings that matter
A minimal working config for a public server:
{
"announce": true,
"bind": "0.0.0.0",
"name": "My RAGE:MP Server [RP]",
"gamemode": "freeroam",
"maxplayers": 100,
"port": 22005,
"stream-distance": 500.0,
"language": "us",
"url": "yoursite.com"
}
| Key | Default | What it does |
|---|---|---|
announce | false | Tells the master server you exist. Must be true or nobody sees you. |
bind | 127.0.0.1 | Which IP to listen on. Must be 0.0.0.0 for anyone outside the machine to connect. |
port | 22005 | UDP and TCP. The HTTP download port is this +1. |
maxplayers | 100 | Slot count. Your CPU is the real limit, not this number. |
name | RAGE:MP Unofficial server | Browser name. Square brackets mark tags. |
gamemode | Freeroam | The mode shown in the browser filter. |
stream-distance | 500.0 | How far entities stream in. Lowering it cuts bandwidth and CPU on busy servers. |
sync-rate | 40 | Sync interval in ms. Lower is smoother and more expensive. |
enable-nodejs | true | Node.js server-side scripting. Leave it on unless you're pure C#. |
csharp | disabled | Set true if you're using the C# bridge plugin. |
enable-http-security | false | Extra layer against flooding. Worth turning on for a public server. |
disallow-multiple-connections-per-ip | false | Blocks multiple clients from one IP. Useful against basic alt spam, annoying for households. |
fastdl-host | — | Serve client packages from an external URL instead of your server. |
voice-chat | — | Built-in voice. Sample rate must be 8000, 16000, 24000 or 48000. |
5 Ports — open both of them
- 22005 — UDP and TCP. The game connection itself.
- 22006 — HTTP. Delivers
client_packagesto joining players.
Open only 22005 and you get the classic symptom: players connect, the loading screen appears, and then it sits there forever while the client silently fails to download resources. If your server "accepts people but never loads them in", check 22006 before you touch anything else.
6 Your first package
Each folder inside packages/ is a resource, and RAGE:MP runs its index.js on startup. Create packages/mygamemode/index.js:
// packages/mygamemode/index.js — runs on the SERVER
mp.events.add('playerJoin', (player) => {
console.log(`${player.name} joined`);
player.outputChatBox('!{4ade80}Welcome to the server.');
});
mp.events.add('playerChat', (player, message) => {
mp.players.broadcast(`${player.name}: ${message}`);
});
And the client side, in client_packages/index.js:
// client_packages/index.js — runs on the PLAYER'S machine
mp.events.add('render', () => {
mp.game.graphics.drawText('My Server', [0.5, 0.05], {
font: 4, colour: [255, 255, 255, 185],
outline: true, scale: [0.4, 0.4]
});
});
Restart the server — RAGE:MP loads packages at startup, so a file change needs a restart to take effect.
7 When it doesn't work
- Server isn't in the browser →
announceis stillfalse, orbindis still127.0.0.1. Fix both, restart, wait a minute for the master list. - Players connect then hang on loading → port 22006 is closed. This is the single most common RAGE:MP support ticket.
- Server won't start at all after an edit → malformed
conf.json. Validate the JSON. - Scripts do nothing → wrong folder. Server logic must be in
packages/<name>/index.js; client code inclient_packages/. Also confirm you restarted rather than just saved. - Only you can join → you're testing on
127.0.0.1and it works locally becausebindis local. Same fix as the first point. - Stutter with plenty of CPU headroom → look at
sync-rateandstream-distancebefore you buy more cores. GTA V multiplayer is single-thread bound; total core count rarely helps.
RAGE:MP hosting with both ports already open
22005 and 22006 configured from the start, full file manager and SFTP for packages/, a live console, and high-clock CPUs with NVMe — which is what GTA V multiplayer actually needs. DDoS protection and instant setup included.
8 Quick recap
- Linux:
wgetthe server files and run./ragemp-server. Windows: pull them through the client updater. - Server code in
packages/, client code inclient_packages/— the second one is public. - Set
announce: trueandbind: "0.0.0.0"or your server is invisible and unreachable. - Open 22005 (UDP + TCP) and 22006 (HTTP).
conf.jsonis strict JSON — validate it when the server won't boot.- Restart after script changes; packages load at startup.
9 FAQ
What port does a RAGE:MP server use?
22005 on UDP and TCP, plus 22006 over HTTP for client package downloads. Open both.
Why doesn't my RAGE:MP server show in the server list?
announce defaults to false and bind defaults to 127.0.0.1. Set them to true and 0.0.0.0, restart, and give the master list a minute.
Is RAGE:MP the same as FiveM?
No — separate clients, separate APIs, separate browsers, not compatible. FiveM has a much bigger script ecosystem; RAGE:MP is JavaScript-first and less crowded.
Do players need to own GTA V?
Yes, a legitimate copy plus the RAGE Multiplayer client.
What language do I script in?
JavaScript on Node.js by default. C# works through the bridge plugin with csharp set to true.
How many players can it hold?
maxplayers defaults to 100, but your CPU's single-thread speed is the real ceiling, not the number in the config.