Troubleshooting
Symptom tables for the dashboard connection, start-up, players and detections, plus what happens when a license expires or a renewal is still pending.
Raven reports almost everything through the server console, so this page is arranged by the line or the behaviour you see. Each area gets a table of symptom, likely cause and what to check. The two situations that need more than a table row, a license that expired while the server was up and a subscription inside its renewal grace, are written out at the end.
First checks
These console commands answer most of it before you change anything. All of them are console only, and in game rac on its own opens the admin menu instead.
| Command | What it tells you |
|---|---|
rac status | The running version, with (Outdated) after it when the cloud has a newer package, and how many of your resources carry the protection, printed as Installed: n/total. |
rac dashboard | Whether the WebSocket is connected and how many seconds ago it last heard anything. When it is not connected it watches for 30 seconds and then prints the outcome, so run it once and wait rather than running it again. |
rac resource [name] | Whether one named resource has the protection installed. |
rac help | Every console subcommand. The in-game list is shorter, because status, dashboard, resource, install, uninstall and update are console only. |
Commands covers the rest, including rac ban, rac kick, rac unban and rac clear.
Dashboard connection
Raven connects out to wss://ws.ravenac.net, so there is nothing to expose, forward or point at a proxy. From resource 1.8.9 that socket and the self-update requests both verify the certificate, so a firewall or proxy that intercepts HTTPS breaks them instead of passing them through. The resource retries on its own, starting at about a second and backing off to thirty, and it never prints the reason the cloud refused a socket, which is why a connection that will not come up has to be diagnosed from this table rather than from the console.
| Symptom | Likely cause | What to check |
|---|---|---|
| The server reads Offline on the dashboard while it is up and full of players | The outbound socket is not connected | Run rac dashboard. Allow outbound HTTPS on port 443 to ws.ravenac.net, and make sure nothing on the way out is intercepting TLS. |
Dashboard: not initialized yet. The license is still being verified. | Start-up never got past the license login | This is not a connection problem yet. The verification lines further up the console are the ones to read, and they are in the next section. |
Dashboard: still not connected after 30 seconds. | The handshake was refused, or never arrived | Four things get a handshake refused: a license key the cloud does not recognise, a suspended license, a license that has expired with no renewal grace left, and a request coming from an address other than the one the server is registered to. The address is the common one after a host or port move, and IP reset requests is how you change it. The expired case refuses every reconnect for as long as it lasts, and License expiry and renewal below covers what else goes with it. |
| Two servers take turns being Offline, or one keeps dropping and coming back | Both are logging in with the same license key | Only one live socket is kept per license, and a new one evicts the old. Give the second server its own license. |
Disconnected from the dashboard, reconnecting. or Dashboard connection timed out, reconnecting. | The socket dropped after being up | Normal after a network blip, and it reconnects on its own. Constant flapping is usually the shared-key case above. |
| A setting saved on the dashboard does not change anything in game | The push arrives over the same socket, or the reload failed | Check rac dashboard first. A push that lands prints Config updated from the dashboard by .... One the resource cannot parse is refused silently. A reload that throws prints Live config reload failed, restoring previous config: ... and keeps the config that was already running. |
Start-up and verification
Raven logs in to the cloud before it loads anything else. It tries up to ten times, 30 seconds apart, but only keeps retrying when the refusal could change on its own, which means a rate limit or a server error. A settled refusal such as a wrong key or an expired license stops at the first attempt. When it gives up it prints the reason and then shuts the server down after a 15-second countdown, so a verification problem takes the whole server with it rather than leaving it running unprotected.
| Console line | What it means | What to do |
|---|---|---|
License key is missing. Please add your license key to the "licence.key" file. | The file is empty or could not be read | Paste the key from the dashboard into licence.key in the resource folder. Installation has the whole sequence. |
License key is invalid. Please check your "licence.key" file. | The key is not 31 characters long, or does not contain RAC- | Copy it again from the dashboard. Whitespace is stripped before the check, so the usual cause is a partial copy rather than a stray newline. |
Login attempt 1/10 failed: ... then Server verification failed. | The cloud answered and refused the login | The Reason: line under it is the real cause, so read that rather than the attempt count. The This is usually temporary warning after it is printed for every refusal, including the ones that are permanent. |
Reason: License expired. Please renew your license at www.ravenac.net. | The license had already lapsed at start-up and is not a subscription inside its grace | Renew, then start the server again. Nothing retries this one, so the countdown follows immediately. |
No permission to run system commands, so the anticheat could not read or write resource files. | The resource may not run console commands or child processes | Add the two lines it prints to server.cfg and restart: add_ace resource.rac command allow and add_unsafe_child_process_permission "rac", with your resource name if you renamed it. Without them resources installation, rac install, rac uninstall and the Resources page's Install and Uninstall cannot touch any files. |
Spoofed server data detected. | fxmanifest.lua no longer loads the files Raven expects, or could not be read | Put the shipped fxmanifest.lua back. Editing the script lists out of it is the usual cause, and Updating Raven covers replacing the folder cleanly. |
Auto-installation got no response from the anticheat resource. Nothing was changed. | The installer side did not answer | Nothing was written, so no resource is half-installed. Check the two server.cfg lines above, then restart the server. |
Could not install on <resource> | Raven could not write that one resource | Check the file permissions on that resource folder, then run rac install [resourceName] for it on its own. The summary line after the run counts how many were installed, already protected, skipped and failed. |
License expiry and renewal
An expired license is the one failure that changes what Raven does rather than just what it prints, so it gets the three sections below: what happens when the license runs out mid session, what the renewal grace covers, and which cases get no grace at all.
Raven stopped and says the license has expired
When your license runs out while the server is up, Raven stops itself and nothing else. On a subscription it can first keep running for up to three days past the expiry date while the renewal is charged, as explained below. A one-time purchase stops at the date itself, and a refund or chargeback that leaves your license with no time left ends it the same way, with no grace. The FiveM server and every other resource keep running, and Raven starts no new kick, ban or warning on the way out, though a kick or ban it had already decided can still drop that player. The console shows:
[Raven Anticheat] Error: Your Raven Anticheat license has expired.
[Raven Anticheat] Warning: Raven Anticheat is stopping now. Your server keeps running, only the anticheat stops.
[Raven Anticheat] Info: Renew your license at www.ravenac.net, then start the anticheat again with "ensure rac".About three seconds later the resource stops, the same as if you had typed stop rac. The pause lets the part of Raven that runs inside your other resources stop sending events to it first. Its server and client scripts, its NUI on every player's game, its exports and commands, the in-game menu and every detection go with it. Your convar list then carries RAC:Licence:Stop set to stop rac. That is the stop command Raven queued, and it does nothing on its own.
To bring it back, renew at www.ravenac.net, then run ensure rac in the server console, with your resource name if you renamed it. Restarting the whole server works too.
Raven stops only when the cloud confirms the expiry, which it treats as confirmed only by a 403 answer whose body says the license has expired. It can learn that from the answer to any request it makes to www.ravenac.net/api/ other than the start-up login, from the dashboard connection, where the cloud sweeps its connected servers once a minute, or by asking for itself once the Expires Date it printed at start-up comes round. When it asks and the license is still valid, because you renewed in the meantime or a subscription is still inside its grace, it keeps running and asks again every 15 minutes. A network error, a timeout or a cloud outage never stops it.
Raven stops itself through the server console, so it needs the add_ace resource.rac command allow line from the Installation guide. Without that line, with a resource name the stop command cannot take (anything beyond letters, digits, dots, dashes and underscores), or if the resource is still running ten seconds after it asked to be stopped, Raven stays loaded but stands down. It bans, kicks, warns, reports and screenshots nobody, and players joining are let in without its ban check. After the three lines above, the console names the reason and says what to do:
[Raven Anticheat] Error: Raven Anticheat could not stop itself: resource.rac is not allowed to run console commands.
[Raven Anticheat] Error: Stop it now with "stop rac" in the server console. To let it stop itself, add this line to server.cfg: add_ace resource.rac command allow
[Raven Anticheat] Warning: Until then it stays loaded but has stood down and takes no action against any player.Run that stop, add the line so it can stop itself next time, then renew and start it again.
A license that had already expired when the server started, and is not a subscription inside its grace, is refused at verification instead, which is the Reason: row in the table above. Renew, then start the server again.
The dashboard says Renewal pending
That is the renewal grace, and only a server on a subscription gets it. A monthly license counts 30 days and a quarterly one 90, but the subscription is charged once a calendar month, or once every three, so the expiry date can come round a day or so before the renewal is paid, and a payment that fails is tried again later. To cover that, a server on a subscription keeps running for up to three days past its expiry date. Raven works as usual in that time: detections, bans, kicks, the ban check on joining players and the dashboard connection all carry on, and a restart verifies as normal, though the Expires Date it prints at start-up has already passed.
On the dashboard the server still reads Online or Offline by its connection, and its License Information panel says Renewal pending with the date it is covered until. The Players List, Multi Stream and Map Interaction tabs open as usual, and bans, kicks, messages, settings and IP reset requests all go through. The Resources page and entity cleanup, on the World page and the server home, work as usual too. Nothing needs doing unless the renewal payment failed, which Manage billing in User Settings shows as past due. Then update the payment method there before the three days are up. When the renewal is paid, its time is added from that moment and the dashboard shows the license as active again. If it has still not been paid three days after the expiry date, Raven stops as described above, and once the payment goes through you can start it again with ensure rac.
Cases that get no grace
The grace is read from the subscription payments behind the license, so anything that is not a live subscription paying for the current period ends at the expiry date itself. The grace does not lift a suspension either.
| Case | What happens at the expiry date |
|---|---|
| A monthly or quarterly license bought with a one-time payment, or time added by a one-time renewal | It stops at its expiry date, even on a server that also has a subscription. The grace is only ever counted from subscription invoices. |
| A subscription cancelled from Manage billing, where it is set to end with its current period | It stops at its expiry date, the Expires date in the server License Information panel, and for the calendar reason above that can be a day or two before the Access until date that Manage billing and the cancellation emails give. Manage billing offers Resume until that period ends, and resuming it brings the grace back, so a server that has already stopped can be started again with ensure rac. |
| A subscription cancelled outright, as when you delete your account | It stops at its expiry date and cannot be resumed. |
| A purchase or renewal refunded in full, charged back or reported as fraud | The license is revoked, which takes the grace with it. A partial refund leaves the license and its grace as they were. |
| A subscription whose expiry date runs more than three days past the 30 or 90 days its last payment bought | Its next renewal falls due before the expiry date, which happens when the key was redeemed some days after it was bought or added to a server that still had time left. If that payment is still failing when the date comes, Raven stops at the date itself. |
Players and connections
| Symptom | Likely cause | What to check |
|---|---|---|
Players kicked for Missed too many heartbeats | Raven stopped hearing from its own client on that player | Covered under Players kicked for missed heartbeats below. |
Players kicked for Failed to verify in time | The player had not been verified in time after joining | Look for the verification warnings in the rows below. A player whose verification never lands never receives their in-game staff row either, so for them the menu and every rac subcommand are refused. There is no ace fallback on 1.8.9. On 1.9.2 this reason is a kick even when Heartbeat is set to ban. |
Could not verify ... with the cloud, it will retry. Server replied 403. | The verify request came from an address other than the one the server is registered to | The same registered-address check the dashboard socket uses. IP reset requests is how you move it after a host or port change. |
Could not verify ... with the cloud, it will retry. Server replied ... | The verify request did not come back 200 | It retries on its own, so one of these on one player is noise. 401 means the license key is not on any server. Every player showing one points at outbound HTTPS to www.ravenac.net being blocked. |
The cloud declined verification for ... | The cloud answered 200 but did not accept the player | Nothing on the player to fix. Check that the license is active and the server is not suspended, then let it retry. |
Ban check for ... timed out, allowing the connection. or Could not reach the cloud for a ban check on ... after 3 attempts, allowing the connection. | The connect-time ban lookup did not answer | Both mean that player was let in without a ban check: the first after a 15-second deferral, the second after three tries half a second apart. Raven prefers letting people in to locking everyone out, so a cloud or network problem never closes your server. |
rac does nothing in game, or the player gets a denied notice | The player has no in-game staff row on that server, or their verification has not landed. An ace right is not a way in | Admins and moderators for tagging them and ticking what they may do, and Ace permissions for why a server.cfg grant does nothing. |
Refused. Resource "..." tried to run "rac ..." through ExecuteCommand. | Another resource tried to run the command | Raven takes rac from the real server console or an in-game admin only, so a script cannot ban or clear through it. |
rac clear from the console is refused | The console path for clear ships off | Any resource can reach the console path, so it stays off until you turn it on with set rac_allow_console_clear true in server.cfg, or "Commands": { "AllowConsoleClear": true } in this server config. An in-game admin can run it either way. |
Detections and punishments
| Symptom | Likely cause | What to check |
|---|---|---|
| One detection produces far more hits than the rest | A resource on your server does legitimately what that detection watches for | Covered under Too many false positives below. |
AntiClearPedTasks would have actioned ... Add "Enforce": true to the config option to act on it. | AntiClearPedTasks never acts on its own | It is warning-only until you add "Enforce": true to that option in Protection Rules. |
Players kicked for missed heartbeats
The reason Missed too many heartbeats means Raven stopped hearing from its own client on that player while their game stayed connected. From resource 1.8.9 it catches a cheat that blocks Raven's heartbeat while the player keeps playing. A timeout log carries Last Heartbeat and Last Activity.
Heartbeat in the Detections reference covers the check, and Reading a detection explains the fields the log carries.
Too many false positives
Narrow before you disable. Every detection that produces false positives on a healthy server does so because one of your resources legitimately does the thing it watches for, and that resource can almost always be named and whitelisted instead.
Read one of the hits properly
Confirm Raven is installed where it needs to be
rac status prints the installed count and rac resource [resourceName] answers for one of them.Whitelist the cause rather than the check
Then turn off the one type, not the feature
A detection might be a false ban
Review the log evidence before you decide. See Review a potential false ban.