A production-quality walkthrough for a RedM (Red Dead Redemption 2 multiplayer) dedicated server on Ubuntu 24.04 LTS. Covers the CFX license workflow, MariaDB, txAdmin, a comparison of the four major roleplay frameworks (VORP, RSG Core, RedEM:RP, Vanilla), server.cfg tuning, systemd integration, security hardening, and real-world troubleshooting. Written from actually running RedM servers — not copy-pasted from the Cfx docs.
RedM shares most of its infrastructure with FiveM but there are three critical differences: (1) gamename must be rdr3 in server.cfg — getting this wrong is the #1 cause of "server not showing in browser." (2) RedM artifacts live at runtime.fivem.net/artifacts/fivem/build_proot_linux/master/ just like FiveM, but you use the same artifact and set gamename rdr3. (3) The framework ecosystem is smaller and younger — VORP and RSG Core are the two serious options in 2026.
01 // Requirements
- VPS — Ubuntu 24.04 LTS (22.04 also works). 4 GB RAM minimum for vanilla, 8 GB for a framework + 30 players, 16 GB for serious roleplay with 50+ scripts.
- CFX license key — free from
keymaster.fivem.net. One key per server IP. Required orsv_licenseKeyreturns "invalid" on boot. - MariaDB 10.11+ or MySQL 8.0+ — all serious RedM frameworks (VORP, RSG Core, RedEM:RP) store player data in SQL. Vanilla servers can skip this.
- Ports —
30120/tcpand30120/udpfor the game,40120/tcpfor txAdmin panel (bind to localhost + reverse proxy for production). - Non-root user — never run the server as root. Create a dedicated
redmuser in section 02. - RDR2 on Steam, Epic, or Rockstar — RedM requires players own a legitimate copy. Anti-piracy enforcement is real (see section 13).
ZAP-Hosting — Official CFX Partner, One-Click RedM Servers
ZAP-Hosting is an official CFX/Cfx.re partner and the most popular managed host for RedM and FiveM in 2026. No Linux setup, no txAdmin wizard, no MariaDB install — server is ready in 2 minutes with one-click VORP or RSG Core installs, automatic artifact updates, and 24/7 support.
Use voucher code Keishin-a-8710 for a permanent 20% discount on the entire duration of your rental (excluding dedicated servers). Applied automatically via the link below.
Hostinger KVM 2 / KVM 4 — Full Root, Best €/Performance
If you want full root access and the best performance-per-euro ratio, a Hostinger KVM VPS is the way to go. Hardware pick depends on your plans:
- KVM 2 (2 vCPU, 8 GB, €8.49/mo) — vanilla or small framework server, 16 – 30 players
- KVM 4 (4 vCPU, 16 GB, €12.99/mo) — VORP or RSG Core, 30 – 50 players, plenty of scripts. The sweet spot.
- KVM 8 (8 vCPU, 32 GB, €24.99/mo) — heavy roleplay with 80+ custom resources and 50+ concurrent players
02 // System Prep & Dedicated User
Fresh Ubuntu 24.04 install. Update, install baseline packages, and create a non-root user for the server process.
# Update the system
apt update && apt upgrade -y
# Baseline packages
apt install -y curl wget xz-utils unzip git screen \
build-essential pkg-config libssl-dev \
ufw fail2ban
# Create the redm user with a home directory
adduser --disabled-password --gecos "" redm
# Allow redm user to write to /opt/redm for the server files
mkdir -p /opt/redm
chown redm:redm /opt/redm
Enable the firewall with the ports RedM needs:
ufw allow OpenSSH
ufw allow 30120/tcp
ufw allow 30120/udp
# txAdmin — bind to localhost only in production, see section 11
# ufw allow 40120/tcp # only if you must reach it from outside
ufw enable
ufw status verbose
If a custom resource is ever exploited, a non-root user contains the blast radius. RedM scripts can read/write the game server's working directory but cannot touch /etc, other users' data, or kernel features. Running as root means a single bad resource can compromise the whole box. Cheap insurance.
03 // CFX License from Keymaster
Every RedM server needs a license key from Cfx.re's keymaster. Keys are free, tied to your Cfx forum account, and scoped to a specific server IP.
- Go to
https://keymaster.fivem.net(yes, even for RedM — Cfx uses the same keymaster for both). - Log in with your Cfx forum account (create one if needed).
- Click "+ New" and fill in the form:
- Server IP: the public IPv4 of your VPS. Use
0.0.0.0only if you know your IP will change — 0.0.0.0 keys have harder rate limits and worse ranking in the server browser. - Server Type: pick
RedM(not FiveM). - Label: something you'll recognize later, like
prod-rp-main.
- Server IP: the public IPv4 of your VPS. Use
- Generate the key. It looks like
cfxk_xxxxxxxxxxxxxxxxxxx_yyyyy. Save it — you'll paste it intoserver.cfgassv_licenseKeyin section 07.
One key per IP. Reusing the same key on two different servers will cause both to show an "Invalid license key" error on startup. If you need to move to a new VPS, regenerate the key on keymaster with the new IP — do not try to spoof it.
04 // MariaDB Install & Database
Every serious framework (VORP, RSG Core, RedEM:RP) needs MariaDB for player data, inventory, characters, and jobs. Skip this section only if you are running pure vanilla with no persistence.
# Install MariaDB
apt install -y mariadb-server
# Secure the install — set a root password, remove anon users, disallow remote root
mysql_secure_installation
# Log in as root to create the redm database
mariadb -u root -p
Inside the MariaDB prompt:
CREATE DATABASE redm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'redm'@'localhost' IDENTIFIED BY 'CHANGE_THIS_TO_A_LONG_RANDOM_PASSWORD';
GRANT ALL PRIVILEGES ON redm.* TO 'redm'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Quick sanity test the credentials work before you bake them into server.cfg:
mariadb -u redm -p redm -e "SELECT VERSION();"
Default innodb_buffer_pool_size is tiny. For a 16 GB VPS dedicated to RedM, edit /etc/mysql/mariadb.conf.d/50-server.cnf and set innodb_buffer_pool_size = 4G, innodb_log_file_size = 512M, max_connections = 200. Restart with systemctl restart mariadb. You'll feel the difference at 30+ concurrent players with framework-heavy SQL traffic (inventory saves, job updates, metadata).
05 // Download the RedM Server Artifact
The server binary is distributed as a Linux artifact from Cfx.re. Artifacts update frequently — always grab the current recommended build from the artifacts page, not a random "latest" one.
# Switch to the redm user
su - redm
cd /opt/redm
# Grab the latest recommended Linux artifact URL from:
# https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/
# Copy the link to the most recent "recommended" build (not bleeding-edge).
# Example — replace VERSION and HASH with the current values:
mkdir -p server alpine && cd alpine
wget https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/VERSION-HASH/fx.tar.xz
tar xf fx.tar.xz
rm fx.tar.xz
Grab the cfx-server-data repository — this is the resource scaffolding every server builds on:
cd /opt/redm
git clone https://github.com/citizenfx/cfx-server-data.git server-data
Your layout should now look like:
/opt/redm/
├── alpine/ # server artifact (run.sh, FXServer, etc.)
└── server-data/ # resources/, server.cfg (we'll create this)
When a new recommended artifact drops (usually every 2–4 weeks), stop the server, back up alpine/, wipe it, and re-extract the new fx.tar.xz. Your server-data/ directory is untouched — resources, configs, and the database stay intact. This is why we keep them separate.
06 // txAdmin Setup Wizard
txAdmin is the official Cfx management layer — a web panel that runs in front of FXServer and handles the wizard-style initial setup, player moderation, deployment, scheduled restarts, live console, and monitoring. It ships inside the artifact, so you already have it.
# As the redm user, start the artifact — first run launches txAdmin
cd /opt/redm
./alpine/opt/cfx-server/run.sh
On first boot txAdmin prints a URL and a PIN in the console, something like:
[txAdmin] Access this URL to enter the setup:
http://<your-server-ip>:40120/addMaster/pin?pin=1234
Open that URL in your browser and follow the wizard:
- Create master account — links your Cfx forum account as the txAdmin owner. Use a strong password.
- Pick deployment mode:
- Popular Recipe — one-click install of a framework (VORP, RSG Core, RedEM:RP). Fastest path to a working RP server.
- Remote URL — deploy any git repo recipe URL.
- Existing folder — point at
/opt/redm/server-datafor a from-scratch vanilla build.
- Paste your CFX license key (from section 03).
- Paste DB credentials — hostname
localhost, port3306, userredm, password from section 04, databaseredm. - Set server name, max clients, locale — standard stuff. Max clients of 32 is a sensible start; scale up when you know the box handles it.
Exposing 40120 to the public internet is a footgun. If your password is weak or txAdmin ever has an auth bug, attackers get full server control. Bind txAdmin to localhost (127.0.0.1:40120) via the txAdminPort convar and reach it through SSH tunnel (ssh -L 40120:localhost:40120 redm@server) or behind an nginx reverse proxy with basic auth + Let's Encrypt.
07 // Framework Comparison — VORP vs RSG Core vs RedEM:RP vs Vanilla
Picking the right framework upfront saves weeks of rework. Here is the 2026 state of the four serious options:
| Framework | Best For | Community Size | Maturity | Performance | License |
|---|---|---|---|---|---|
| VORP Core | Full western RP, most popular in 2026 | Largest (active Discord, 100s of free scripts) | Mature, battle-tested | Good with tuning | GPL-3.0 |
| RSG Core | QB-Core style RP, cleaner codebase | Growing fast (2024-2026) | Active development | Very good, lean core | GPL-3.0 |
| RedEM:RP | Older servers, legacy compat | Shrinking | Stable but slower updates | Decent | MIT |
| Vanilla | Minigames, FFA, racing, custom from scratch | Small | N/A — you build it | Best (no framework overhead) | Your choice |
If you're starting a roleplay server today and have no prior framework investment, VORP is the safest bet — largest ecosystem, most free scripts, most guides and help available. RSG Core is a solid second choice if you're coming from a QB-Core FiveM background and want a familiar architecture. Pick one and commit — migrating frameworks mid-project is painful.
08 // server.cfg Tuning
Your server.cfg lives in /opt/redm/server-data/server.cfg. Here's a production-ready starting point. The lines marked CRITICAL are non-negotiable.
# ---- CRITICAL: this MUST be rdr3 or your server will not appear in the RedM browser
sv_gametypeName "Red Dead Redemption 2"
sv_projectName "My RedM Server"
sv_projectDesc "Western roleplay — VORP framework"
# ---- CRITICAL: tells the server it's RedM, not FiveM
setr gameName "rdr3"
# ---- CRITICAL: your keymaster license key (section 03)
sv_licenseKey "cfxk_xxxxxxxxxxxxxxxxxxx_yyyyy"
# Networking
sv_endpointprivacy true
sv_maxclients 32
sv_hostname "ˆ6[ˆ1EUˆ6] My RedM Server ˆ0| VORP | Whitelist"
# OneSync (required for RedM, keep on)
onesync on
set onesync_population true
set onesync_enableInfinity true # only needed for 64+ slots
# Steam Web API key (optional but useful for steam identifiers)
set steam_webApiKey ""
# txAdmin convars
set txAdminServerMode "true"
# Resources — load order matters. Framework first, then its dependencies, then content.
ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager-rdr3
ensure basic-gamemode
# ---- Framework resources (example for VORP — uncomment after install)
# ensure oxmysql
# ensure vorp_metadata
# ensure vorp_core
# ensure vorp_inventory
# ensure vorp_character
# ---- Your content resources load last
# ensure my-custom-jobs
# ensure my-custom-shops
gameName "rdr3"If your server starts but doesn't show up in the RedM server browser, 90% of the time it's because setr gameName "rdr3" is missing, misspelled, or set to "gta5". The artifact is the same as FiveM's — this single convar is what tells Cfx.re's master list to put your server on the RedM list instead of the FiveM list. Typos like "rdr2" or "redm" will silently fail.
09 // First Connect & Framework Install
Start the server manually to verify it boots cleanly before wiring up systemd:
cd /opt/redm/server-data
bash ../alpine/opt/cfx-server/run.sh +exec server.cfg
Watch the console for the boot sequence. Healthy output looks like:
[ script:svadhesive] Authenticated with license server.
[ c-scripting-core] Started resource sessionmanager-rdr3
[ c-scripting-core] Started resource chat
...
Server is now listening on port 30120
Launch RedM on your PC, open the console (F8), and run:
connect your.server.ip.here:30120
If you chose a txAdmin recipe (VORP / RSG Core / RedEM:RP), the framework is already installed and configured. If you went the vanilla route and plan to add a framework now, here's the VORP install outline:
- Clone the VORP Core repo into
server-data/resources/[vorp]/vorp_core/per the VORP install docs. - Install
oxmysqlintoresources/[standalone]/oxmysql/. - Import the VORP SQL schema:
mariadb -u redm -p redm < vorp_schema.sql. - Uncomment the VORP
ensurelines inserver.cfg. - Restart. Check the console for any
Failed to start resourceerrors — each one points at a missing dependency or SQL connection issue.
10 // Systemd Service
Running the server in a screen session works for testing, but production needs systemd — auto-restart on crash, boot-time startup, and clean log integration with journalctl.
Create /etc/systemd/system/redm.service as root:
[Unit]
Description=RedM Dedicated Server
After=network.target mariadb.service
Requires=mariadb.service
[Service]
Type=simple
User=redm
Group=redm
WorkingDirectory=/opt/redm/server-data
ExecStart=/bin/bash /opt/redm/alpine/opt/cfx-server/run.sh +exec server.cfg
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
# Hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
[Install]
WantedBy=multi-user.target
Enable and start:
systemctl daemon-reload
systemctl enable redm
systemctl start redm
# Check it came up cleanly
systemctl status redm
journalctl -u redm -f # tail live logs (Ctrl+C to exit)
If you are using txAdmin to deploy and manage the server, have systemd start txAdmin (which in turn starts FXServer), not FXServer directly. Otherwise txAdmin will keep spawning new FXServer instances every restart and you'll end up with port collisions. Either swap the ExecStart line above to point at txAdmin's run.sh, or manage the server entirely from the txAdmin web panel.
11 // Backups — Database + Resources
Two things need backing up on a RedM server: the MariaDB database (player characters, inventory, bank balances — the stuff players will rage about if it's gone) and the resources directory (your custom scripts, configs, assets).
Create /usr/local/bin/redm-backup.sh:
#!/bin/bash
set -euo pipefail
BACKUP_DIR="/var/backups/redm"
STAMP=$(date +%Y%m%d-%H%M%S)
DB_USER="redm"
DB_PASS="your-db-password-here"
DB_NAME="redm"
mkdir -p "$BACKUP_DIR"
# SQL dump — compressed
mariadb-dump -u "$DB_USER" -p"$DB_PASS" --single-transaction --quick \
"$DB_NAME" | gzip > "$BACKUP_DIR/db-$STAMP.sql.gz"
# Resources tarball (excludes the artifact, we only back up server-data)
tar czf "$BACKUP_DIR/resources-$STAMP.tar.gz" \
-C /opt/redm server-data
# Keep last 14 days
find "$BACKUP_DIR" -type f -mtime +14 -delete
Make executable, test once manually, then schedule:
chmod 700 /usr/local/bin/redm-backup.sh
/usr/local/bin/redm-backup.sh # test run
ls -lh /var/backups/redm # confirm files written
# Cron — daily at 04:30 local time
echo "30 4 * * * root /usr/local/bin/redm-backup.sh" > /etc/cron.d/redm-backup
Local backups save you from "whoops, I ran the wrong SQL", but not from a VPS disk failure or a compromised server. Push the $BACKUP_DIR to off-box storage — Backblaze B2 via rclone is ~€5/month for way more than any RedM server needs, or an S3-compatible bucket on Cloudflare R2 (first 10 GB free). Test the restore at least once — untested backups are just optimism.
12 // Custom Resources & Anti-Piracy
RedM's resource ecosystem is split between free community scripts (GitHub, Cfx forums) and paid scripts (Tebex stores). Two hard rules will save you pain:
- Never download from "leaked" script sites or Discord leak servers. Cfx.re actively monitors for pirated paid resources — when they detect a known leaked script fingerprint, the server gets an anti-piracy flag. Flagged servers are silently removed from the public server browser, stop receiving asset updates, and in some cases get their CFX license revoked. There is no appeal process worth the risk.
- Always buy from the original author's Tebex or official store. Yes, good scripts cost €15–€50. That's cheap insurance against losing your whole server's server-browser visibility and community.
Installing a custom resource is mechanically trivial:
# Drop the resource folder into server-data/resources/
cp -r my-custom-job /opt/redm/server-data/resources/
# Add it to server.cfg
echo 'ensure my-custom-job' >> /opt/redm/server-data/server.cfg
# Restart just that resource without a full server restart:
# In txAdmin console or live console:
restart my-custom-job
Cfx's authentication layer scans resource files for known hashes of leaked paid scripts. A match silently sets an account flag — players can still join, but your server is removed from the public server list and your license may later be revoked without warning. This has killed servers that were big enough to care about. The safe path is simple: free & open-source community resources + paid resources from the original Tebex author. No middle ground.
13 // Security Hardening
The RedM server process itself is reasonably sandboxed, but the VPS around it is where attackers actually get in. Here's the standard hardening pass that applies to any game server box:
- SSH key auth only. Disable password login in
/etc/ssh/sshd_config: setPasswordAuthentication no,PermitRootLogin no. Restart sshd. Test from a second terminal before you close the first. - fail2ban. Already installed in section 02. Default config blocks brute-force SSH. Check with
fail2ban-client status sshd. - UFW minimal surface. Only 22 (SSH), 30120 tcp+udp (RedM) should be publicly reachable. Everything else — txAdmin, MariaDB, nginx reverse proxy — should be localhost-only or IP-whitelisted.
- Unattended security upgrades.
apt install unattended-upgradesthendpkg-reconfigure unattended-upgrades. Applies security patches automatically so you don't forget. - Rotate the CFX license if compromised. If you ever suspect the license leaked (shared a backup publicly, hired a dev who turned out shady), regenerate on keymaster immediately.
- Database isolation. MariaDB in section 04 is already bound to
localhostby default. Verify withss -tlnp | grep 3306— should only show127.0.0.1:3306, never0.0.0.0:3306. - Resource audit. Periodically
grep -r "http://" resources/looking for plaintext callbacks to sketchy URLs. Compromised paid scripts sometimes phone home or open reverse shells.
14 // Interactive VPS Sizer for RedM
How much VPS do you actually need? Plug your server profile into the calculator:
15 // Troubleshooting — The 12 Most Common RedM Server Issues
| Symptom | Cause & Fix |
|---|---|
| Server not in RedM browser | 99% of the time: setr gameName "rdr3" is missing or misspelled in server.cfg. Check for typos (rdr2, redm, RDR3 are all wrong). Server restart required. |
| "Invalid license key" | Key is for a different IP, key is being reused on two servers, or you pasted a FiveM key on a RedM server type. Regenerate on keymaster for the correct IP + server type. |
| "Couldn't start resource oxmysql" | DB connection string wrong in server.cfg. Verify set mysql_connection_string "mysql://redm:password@localhost/redm?charset=utf8mb4". Test creds with mariadb -u redm -p redm first. |
| Players get kicked after 30 seconds | OneSync disabled. RedM requires onesync on — without it, the client gets desynced and kicks itself. Never run RedM with onesync off. |
| UFW blocks connections but port is open | You allowed 30120/tcp but forgot the matching 30120/udp — RedM uses both. Check ufw status verbose; add the missing protocol. |
| txAdmin says "FXServer crashed" | Usually bad resource. Check journalctl -u redm -n 200 for the stack trace — the offending resource name is on the line before the crash. Rename it, restart, isolate which one broke. |
| Server uses 100% CPU with no players | Infinite loop in a resource — usually a client-side script running every frame. In txAdmin, stop resources one by one until CPU drops. The last one stopped is your culprit. |
| MariaDB "too many connections" | Raise max_connections in /etc/mysql/mariadb.conf.d/50-server.cnf from default 151 to 200+. A resource is also probably leaking connections — audit with SHOW PROCESSLIST;. |
| Server shows in browser but can't join | Endpoint mismatch — sv_endpoints binding to the wrong interface. Add explicit endpoint_add_tcp "0.0.0.0:30120" and endpoint_add_udp "0.0.0.0:30120" to server.cfg. |
| Anti-piracy flag — server removed from list | Cfx detected leaked paid resources. Identify + remove the leaked script, then open a Cfx forum ticket explaining remediation. No guaranteed unban. Don't distribute the backup that contained the leak. |
| txAdmin forgot admin password | Stop the server. Delete txData/default/admins.json. Restart. txAdmin will print a new PIN to the console for a fresh master account setup. |
| Artifact update broke everything | New artifact has a breaking change your framework doesn't support yet. Roll back: restore the alpine/ backup from before the update. Watch the VORP/RSG Core Discord for the compatibility announcement before trying again. |
16 // Next Steps
- FiveM sibling guide — our full FiveM dedicated server walkthrough. If you ever want to run both a FiveM and a RedM server, the patterns here translate 1:1 — just flip
gameName. - Reverse proxy txAdmin — once your server is stable, put nginx + Let's Encrypt in front of
127.0.0.1:40120with basic auth. Same pattern as the FastDL nginx vhost, just pointing at a different upstream. - Pick a managed panel — if txAdmin's UI doesn't fit your workflow, Pterodactyl has community eggs for RedM. More config work up front, much nicer multi-server dashboard.
- Monitor performance — install
htopand keep an eye on per-process CPU. RedM'sFXServerprocess should idle under 10% with no players and peak around 40% with a full 32-slot server on a well-tuned framework. Sustained high CPU = a resource leak, not a hardware shortage. - Join the framework Discord — VORP and RSG Core both have active Discords where breaking-change warnings drop hours before you'd discover them via a broken artifact update. Free early-warning system.
17 // Frequently Asked Questions
Is hosting a RedM server free?
Hosting RedM server software is free — the server binary and CFX framework are released free by Rockstar/CFX. What costs money is the hardware you run it on: a self-hosted VPS (typically $5-30/mo depending on player count and mods), a managed RedM host like ZAP-Hosting ($10-25/mo with one-click install), or a home server (electricity + bandwidth). All players need legally owned copies of Red Dead Redemption 2 to connect. There is no Rockstar licensing fee for running a private/community RedM server.
How many players can a RedM server handle?
RedM's technical cap is similar to FiveM — up to 1024 players with the right hardware and tuned framework. In practice, well-optimized roleplay servers typically run 32-128 concurrent players smoothly. The bottleneck is usually not RedM itself but the resources and scripts loaded: heavy economy systems, complex inventory mods, and dozens of MLO interiors can drop frametime even with low player counts. For most RP communities, plan for 32-64 slots on a 16GB VPS or managed plan; scale up only after you've filled and stabilized that footprint.
What is the difference between RedM and FiveM?
FiveM is the GTA V multiplayer modification framework; RedM is the Red Dead Redemption 2 equivalent. Both are projects by CFX (Cfx.re), share similar architecture (resource scripts, server.cfg, txAdmin support), and use the same artifacts model. The differences are entirely in the game beneath them: RedM uses RDR2's engine, assets, and game logic; FiveM uses GTA V's. Roleplay frameworks like VORP and RedEM:RP are RedM-specific equivalents to FiveM's ESX/QBCore. Most server admin knowledge transfers directly between the two.
Can I use txAdmin with RedM?
Yes. txAdmin works with RedM exactly as it does with FiveM — it's the same management panel built by CFX. Start your RedM server with the txAdmin recipe, point your browser at http://your-server-ip:40120, log in, and you have a full web-based admin panel with player management, resource control, console access, deploy tools, and backup automation. For self-hosted RedM, txAdmin is the default recommendation — it dramatically simplifies day-to-day server administration versus raw SSH/console management.