Installation
Install Raven Anticheat on your FiveM server in about two minutes.
Download the build tied to your server, drop it in, add three lines to server.cfg and start it. This page also covers what Raven changes in your other resources on the first start, and how to check the install took.
Before you start
| Requirement | Why |
|---|---|
| A licence on an active server | The Download page is disabled until your account has a server, and an expired or suspended licence cannot be selected. |
Edit access to server.cfg | Three lines go in it, and two of them are permissions FiveM only grants from the config file. |
| Outbound HTTPS on port 443 | Raven reaches www.ravenac.net for licence and config, and wss://ws.ravenac.net for the live link. Nothing inbound is needed. |
Artifacts that support fx_version 'cerulean', lua54 and node_version '22' | Raven declares all three in its own manifest, and its server half is part Lua and part Node. |
Install
Download the build for this server
The build you download already carries that server's licence, so there is no key to paste in afterwards. Sign in at ravenac.net, open Download in the left sidebar, pick the server you are installing on and press the download button.
Download a separate build for each server you own. The package carries one server's key in licence.key, so copying one server's files onto another fails verification.
Extract it into your resources folder
The zip holds a single rac folder. Put that folder in your resources directory.
You can rename it to anything you like, which makes it harder for a cheater to spot which resource is the anticheat. Whatever you name it is the name Raven uses in both permission lines below, so rename it before you edit server.cfg.
Add the three lines to server.cfg
Put them above everything else your config starts.
ensure rac
add_ace resource.rac command allow
add_unsafe_child_process_permission "rac"Replace rac with your resource name if you renamed it.
Start the server
If the server is already running, restart it rather than starting the resource on its own, so every other resource reloads with Raven's script in it.
The server.cfg lines
| Line | Required | What it gives Raven |
|---|---|---|
ensure rac | Yes | Starts the resource. Put it first so every resource that starts after it is already protected. |
add_ace resource.rac command allow | Yes | Lets Raven run console commands. It checks for command.vstr specifically, and uses it to stop itself when the licence expires and to restart itself after a self-update. |
add_unsafe_child_process_permission "rac" | Yes | Lets Raven read and write resource manifests, which is how it installs itself into your other resources. |
set rac_allow_console_clear true | Optional | Allows rac clear to be run from the server console. Without it that command only works in game or from the dashboard, unless you set Commands.AllowConsoleClear in the config instead. |
Without the ace line Raven still protects your server, but when the licence expires it cannot stop itself. It prints the stop command and stands down instead, staying loaded and taking no action against anyone until you stop it by hand. Without the child process line it cannot read or write a single manifest, so it protects nothing in your other resources and prints both lines to the console telling you to add them.
What happens on the first start
Raven installs itself into your other resources rather than asking you to edit each one. It walks every resource on the server and adds two lines to the top of that resource's fxmanifest.lua or __resource.lua:
server_script '@rac/src/shared/shared.lua' -- Modified by Raven Anticheat
client_script '@rac/src/shared/shared.lua' -- Modified by Raven AnticheatTwo more lines go in only when the manifest is missing them:
| Line added | Added when |
|---|---|
lua54 'yes' | The manifest does not already mention lua54. Raven needs Lua 5.4 in the resources it protects. |
fx_version 'cerulean' | The file is an fxmanifest.lua and has no fx_version at all. |
A resource whose manifest declares no client_script, shared_script or server_script is skipped, which is why map and asset packs never gain the lines. Auto installation runs again on every resource list refresh, so a resource you add later is picked up without restarting Raven. From resource 1.9.3 it is controlled by ResourcesInstallation.Enable and ResourcesInstallation.Automatic, which both ship on. On 1.9.2 and older it is AutoInstallation.Enable.
If you see Please add to fxmanifest.lua or __resource.lua "lua54 'yes'" in the console, that is a resource Raven could not add the line to. Add it by hand to that resource's manifest and restart it.
Check the install took
These run from the server console once Raven has verified its licence.
| Command | What it tells you |
|---|---|
rac status | The running version, whether the cloud considers it outdated, and how many resources carry the injected lines. The total it prints already excludes Raven itself and any resource with no scripts. |
rac dashboard | Whether the WebSocket link is up and how many seconds ago it last saw activity. |
rac resource <name> | Whether one particular resource has the lines in its manifest. |
rac install <name> | Installs into one resource, or all of them when you leave the name off. From 1.9.3 it skips every whitelisted resource and refuses to install into one by name. |
rac uninstall <name> | Takes the two script lines back out of one resource, or all of them. |
Where your settings live
If the dashboard shows offline
Check the link first
Run rac dashboard. It says outright whether the WebSocket is connected and, if it is not, keeps watching for thirty seconds and reports when it comes back. There are no ports to forward and no proxy host to set: the resource dials out, so the only thing that can block it is outbound HTTPS being filtered.
Then check the licence
Raven reads licence.key from its own folder at start and refuses to run without a valid one. The licence is also locked to the IP the server logged in from, so a build moved to a new host stops verifying until the lock is reset. See IP reset requests for that, and Troubleshooting for everything else.