BWRP Panel

Community owner manual

Running your community

Written for the person who owns the community — the one who pays for it, connects the server, and decides who gets to ban people. Read it once from the top; after that use the contents on the left.

Your staff do not need to read all of this. Sections 4 to 7 are the moderation ones — those are worth sending to your team. The rest is yours.

1   Getting set up

  1. Sign in with SteamThere is no separate password. Your Steam account is your login, so there is nothing to remember and nothing to leak.
  2. Create your communityOn the welcome page. This starts your 7-day free trial automatically — no payment details, and nothing charges you when it ends.
  3. Add your serverSettings → Edit Servers. Name, the ip:port your players connect to, and your RCON password.
  4. Install the resourceCovered in the next section. Takes about five minutes.

Joining someone else's community instead?

Ask one of their owners to add you — they can pick you straight from their player list, and you do not need to sign into the panel first. Being staff somewhere else is always free and never counts against your own plan.

2   Connecting your game server

There is nothing to configure by hand. The download is generated for your server, with your community ID and address already inside it.

  1. Support → DownloadsClick Download next to the server you added.
  2. Extract into resources/The staff folder goes in whole.
  3. Add one line to server.cfg
    ensure staff
    ensure screenshot-basic   # only if you want screenshots

    Use a built copy of screenshot-basic — the one that ships with most FiveM server builds is ideal. The GitHub source needs yarn and webpack to build before FiveM can load it. If yours is missing or unbuilt, the panel says so in your server console rather than failing silently.

  4. RestartYour players appear under Servers within about 30 seconds.

If players do not appear

Check your server console for lines starting with [Staff Panel]. They report exactly what failed, in plain words.

The usual cause is the address in the panel not matching what the resource is configured for. Edit it in place under Settings → Edit Servers — you do not need to remove the server and start again.

If the download hands you a config.json instead of a zip, your host simply cannot build archives. Put that file into the staff folder yourself; nothing else changes.

What the detections do, and what they deliberately do not

The resource watches for explosion floods, entity spam and client-triggered server events, and reports them to the player’s record. Two of those also cancel the action. It is worth knowing where the lines are drawn, because the wrong setting here makes the panel accuse ordinary players.

Explosions are limited by rate, not by type. Twelve per player per ten seconds; over that they are cancelled and reported. Rate is the honest test — a script blowing up the map is abnormal by volume whatever it uses, and nobody reaches that many by playing. explosion_types_blocked lets you block particular types outright and ships empty, because which explosions are legitimate depends on your server. A rocket is griefing on one server and a gang war on another. Take particular care before listing petrol pumps, barrels, planes, trains, fireworks or snowballs: all six happen in normal play, so blocking them stops the world reacting the way players expect and marks them as griefers for shooting a petrol station.

Entity spam only reports; it does not cancel. GTA streams its pedestrians and traffic in through whichever player is nearest, so those count as entities that player created — loading into the world creates hundreds in seconds, and even mid-session, ordinary driving along a busy road produces a burst of the same vehicle model repeating, because GTA's population system leans on one vehicle type per road class rather than varying it. The limit is therefore high (150 per ten seconds), nothing is counted for the first minute after someone connects, and cancelling is off. You can turn cancelling on with entity_cancel while dealing with an active spawner, but leave it off the rest of the time: the entities being blocked are mostly scenery, so it deletes the world around your players rather than stopping an attack.

Protected events report; they do not block. List the server events in your framework that a client should never fire — usually the ones handing out money, items or jobs — and anyone who fires one is named on their record. It cannot stop the event: cancelling only works where the code that raised the event checks for it, which the game engine does for connections, entities, explosions and chat, but no framework does for its own events. So the money is still granted; what you get is the person who did it. protected_events_kick adds a kick, off by default, and it stops the next attempt rather than the first one.

All of these live under detections in config.json, and the whole thing switches off with "enabled": false.

Every detection on a player's page has Mark reviewed and Delete, both needing Delete Records. Reviewing keeps the entry but marks it looked at, so a busy queue shows what still needs attention. Delete removes it outright — for a false positive, since the checks above are deliberately generous and still catch the odd legitimate player.

Optional: refusing connections before they start

Two settings in config.json are left empty on purpose, because switching them on will refuse real players as well as the ones you are aiming at. Both are checked on the server, before the player is admitted, so neither can be defeated by a modified client.

"connection": {
    "require_identifiers": ["steam"],
    "blocked_names": ["admin", "moderator"]
}

require_identifiers is the one worth understanding. A ban recorded against a Steam ID does nothing to someone who closes Steam before reconnecting — there is no Steam ID left to match. Listing steam here refuses that connection instead of letting it through. The cost is that players who genuinely do not run Steam are refused too, which is why it is off by default. You can also list discord, fivem or license2. There is no point listing license: it is always present, and it is what every ban is matched on regardless.

blocked_names refuses anyone whose name contains one of these words, ignoring case. It is a substring match because impersonation is nearly always [admin] or admin  rather than exactly admin.

Both write a refusal to the player’s record, so you can see who was turned away and why rather than only finding it in the console. The messages shown to the player are in the same block and can be reworded.

Every setting in config.json

The download fills in the first four for you. You should not need to touch them unless something moves.

SettingWhat it does
urlYour panel’s address. The resource reports here
panel_ipOnly for servers whose host cannot resolve your panel’s hostname. Setting it connects by IP instead, which forces plain HTTP — leave it empty unless you have that problem
server_connectionThis server’s address. Must match what the panel has exactly, or players never appear online
communityidHow this server proves itself to your panel. Treat it as a password that happens to live in a file
SettingWhat it does
prefixTag on panel messages in chat. Supports colour codes, e.g. ^8[BWRP]
ban_messageWhat a banned player sees. Placeholders: {ban_staff}, {ban_reason}, {ban_issued}, {ban_expires}, {appeal}, {username}, {license}, {steam}, {playtime}, {firstjoined}, {lastplayed}, {trustscore}. If you leave {appeal} out, the appeal link is added at the end anyway
notify_typeWhich notification system warnings use: ox_lib, chat, esx, qb, vorp, rsg or custom
notify_eventOnly used when notify_type is custom — the client event to trigger instead
notify_durationHow long a notification stays on screen, in milliseconds
notify_positionWhere ox_lib notifications appear, e.g. top

The three that decide what gets stored

These are worth a deliberate decision rather than leaving at the default, because they control how much personal data your panel keeps about your players.

SettingWhat it does
server_logsRecords joins, leaves and moderation actions to your panel
chat_logsRecords what players type in chat. Remove the line entirely and it follows server_logs, so an older install keeps behaving the way its owner already agreed to. Set it to false to keep server logs while storing no chat at all
chat_proccessingSends chat to the panel for the in-game staff commands to work. Note the spelling — the key really is chat_proccessing

Chat is the highest-volume thing the panel stores and the most sensitive. If you do not need it, turning it off is a legitimate choice, and your retention period applies to whatever you do keep.

ip_address and debug appear in the file but the resource never reads them — they do nothing. They are left in place so an existing config is not invalidated; changing them has no effect either way.

3   Staff and permissions

Go to Settings → Edit Staff. The dropdown is searchable and offers everyone who has played on your servers, most recent first and shown by their in-game name — usually exactly who you are looking for. Existing panel accounts are listed separately.

Pick a person, choose a rank, submit. They do not need to visit the panel first. Adding them creates their account straight away; the first time they sign in with Steam their real name fills itself in and their rank is already waiting. People already on your staff are hidden from the list, so it only ever offers people you can actually add.

Deciding what each rank may do

Settings → Panel Settings has a grid of ranks against permissions. Tick what each rank may do.

The one that matters

A new moderator does not need Edit Panel or Edit Staff. Those let someone change your settings and promote themselves. Give new people the moderation ticks only, and keep the two editing permissions on ranks you genuinely trust.

Someone can be staff in several communities at once. Adding them here has no effect on their rank anywhere else, and every warning, kick, ban and note they issue records their name against it.

Staff cannot moderate each other

Two rules are enforced regardless of what you tick, because they are about conduct rather than capability:

RuleWhy
Nobody can warn, kick, ban or freeze their own accountDoing it to yourself is either a mistake or a way to manufacture a record. There is no legitimate reason for it, so it is refused for everyone — including you
Only the owner rank can action another staff memberPeers disciplining each other turns moderation into an internal weapon. A moderator who falls out with another moderator should not be able to ban them; that decision belongs to whoever runs the community

The owner rank is the first rank in your permissions list. It is exempt from the second rule but not the first.

Banning a staff member removes them from staff

Automatic, and it happens in the same action. Without it a banned staff member keeps their panel account and every permission on it — still able to sign in, warn, kick, ban and read your players' identifiers. The ban would only have removed them from the game.

Scoped to your community only, the same as the Remove Staff button. If they are staff somewhere else, that is not affected. It is logged and posted to your Discord, naming the rank they held.

Who you hand access to is your call, and your responsibility

Staff can read your players' identifiers, hardware IDs and past screenshots, and can request new ones. That is real personal data about real people, and in law you are the one accountable for it — not us. We only hold it on your instructions.

So check someone before you promote them, give them the least they need, and remove them the day they leave your team. A breach by someone you gave access to is treated as a breach by you.

If we are satisfied that a community has used the panel to harass, expose or profile people, we can suspend or terminate it. Players can report misuse to us directly, and we act on credible evidence. This is set out in the Acceptable Use Policy and the Data Processing Addendum.

4   Moderating players

What the dashboard tells you

Two things worth glancing at before anything else.

Staff online lists which of your staff are in game right now, with their rank and which server. Useful for the question you actually ask at 9pm on a Saturday — is anybody covering, or is the server unstaffed?

One honest limit. Staff are matched by their Steam account, so somebody playing without Steam running cannot be identified and will not be listed even though they are in game. The card says so on screen rather than leaving you to think they are offline.

Moderation, last 14 days plots warnings, kicks and bans per day, with the last seven days compared against the seven before. The comparison is the part that matters — a count on its own tells you nothing, but “up 40% on last week” is the difference between a quiet fortnight and something starting.

It also shows how many new players arrived this week, which is the other half of the same picture: more moderation with more players is normal, more moderation with the same players is not.

The player profile

Reach a player from Servers (whoever is online right now) or Player Data → Player List (everyone ever seen). Their profile carries these tabs:

TabWhat it does
WarnRecords a warning and sends the player a private on-screen notice. Only they see it — nobody is humiliated in front of the server
KickRecords a kick and removes them from the server
BanRecords a ban and removes them. Length in seconds; 0 is permanent
CommendA positive note. Raises their trust score
NoteStaff-only. Flags the profile for other staff; the player never sees it
Other ActionsRisk summary, linked accounts, screenshots, inventory and freeze

Freeze

Under Other Actions, behind its own Freeze permission (off by default). Holds a player in place so they cannot run off mid-conversation — the thing you actually want when someone is being questioned but has done nothing worth kicking them for yet.

It survives a reconnect. Dropping out to escape it no longer works: the freeze lives on their record, and the game server re-applies it the moment they load back in. If they are offline when you freeze them, it takes effect next time they join.

They see a notice on screen for as long as the freeze lasts, showing your reason and the time remaining. It stays put through death and respawn, so somebody cannot miss it and be left wondering why they are stuck. It was previously a chat message, which scrolls away and is invisible to anyone playing with chat hidden — if you froze someone before and they seemed confused rather than co-operative, that is why. Re-download the resource to get the notice.

They are also made invincible while held — a frozen player cannot run away, so without that they are a stationary target while you are talking to them.

It always expires. You set a length between 1 and 240 minutes, and it lifts on its own. This is deliberate: a freeze with no end is a ban the player cannot appeal and may not even understand, and one staff member forgetting to release somebody should not leave them stuck indefinitely. Release early with the button whenever you are done.

Every freeze and release is written to your logs and posted to Discord, naming who did it. A freeze that leaves no trace is how somebody ends up stuck with nobody knowing why.

It is a moderation tool, not a security control. The freeze is enforced on the player's own game client, so a modified client can ignore it. The server re-applies it on every connect, but do not treat it as something a determined cheater cannot get around — if they are that far gone, ban them.

Every freeze and release is listed on the Freeze Log page under Server Data, with the staff member's name. Search a name there to read only theirs — freezing holds someone in place, so it is worth being able to see who uses it and how often.

Ban lengthSeconds
Permanent0
One day86400
One week604800

Trust score rises with playtime and commends, and falls with warnings, kicks and bans. Treat it as a rough reputation signal, not a verdict.

Donator vehicles

Further down the same player profile. Grant a vehicle and it belongs to that player: it is tied to their account, not to a character, so a character wipe, a new character or a fresh start does not take away something they paid you for. Enter the spawn name (adder), and optionally a display name and a plate.

The player picks from a menu. They type /mycars in game and see everything they own plus anything a friend has shared with them, and spawn any of it. Shared vehicles are marked with the name of the friend who shared it.

Owners share with friends themselves, from their own record page — up to five people per vehicle, added and removed whenever they like. You do not have to do it for them, and a friend can drive it whether or not the owner is online.

Anyone else who tries to drive it loses it. If somebody who is neither the owner nor a shared friend takes the driver seat, the vehicle is removed. Not merely ejected — ejecting leaves the car sitting there for the next person to try, and on most servers the next person parks it in their own garage and keeps it permanently.

Passengers are deliberately left alone. Riding along with a friend is ordinary roleplay; it is driving off with it that is the problem.

Revoking a grant is immediate and also removes every share on it.

It needs the optional resource. donator_vehicles is a separate download under Support → Downloads, listed beside the main one. Install it only if you hand out vehicles. Grants made without it are recorded in the panel but nothing happens in game.

It works on any framework — Qbox, ESX, QBCore or your own — because it answers only what may this player drive and leaves spawning and storage to your own scripts. If you want your garage script to refuse to save one, it exposes exports.donator_vehicles:IsDonatorVehicle(netId) for exactly that.

Unlike the freeze above, this check runs on your game server rather than on the player's computer, so a modified game client cannot skip it. A cheater can decline to tell the server they got in; they cannot hide from the server that they are sitting in the driver seat, which is re-checked every few seconds regardless.

Bulk actions

On Servers, select several online players with the checkboxes and act on all of them at once. Each needs its own permission, off by default, in Settings → Panel Settings:

PermissionWhat it does
Bulk Give ItemOne item and count to every selected player, in a single action. Reports back how many of the selection were actually online and received it — a player who left between selecting and submitting is skipped, not an error
Bulk Discord RolesAssign or remove a Discord role for every selected player who has linked their Discord account. Needs the Discord bot set up first — see Settings worth doing

Give these to a rank deliberately. Bulk item-give in particular is an easy way for a compromised staff account to duplicate items at scale — that is why it is a separate permission from giving a single player something, not bundled in with the moderation tabs above.

The Audit Log — yours alone

Under Servers in the sidebar, and only the owner rank can open it. No other rank sees the link, and none can reach the data behind it either — showing it to the people it covers would defeat the point of keeping it.

It records the actions that change what your panel holds, or who is allowed to change it:

RecordedWhat it keeps
Deleting any recordBans, warnings, kicks, commendations, notes, screenshots, detections — along with what the deleted record said, not just that something was deleted
Staff changesAdding someone, removing them, changing a rank
Settings changesWhich settings moved. For rank permissions it keeps the before and the after
Server changesAddress edits, and RCON password changes
Data export and erasureWho exported or erased what, and when

Deletions are the part that matters. A ban already records who issued it. Until this existed, removing one left nothing at all — so every record in your panel was only as trustworthy as whoever held the delete permission. The same was true of permissions themselves: somebody could grant their own rank the ability to delete, use it, and set it back, and nothing anywhere would show it.

Both are now recorded, which is what makes the rest of your records worth relying on.

Each entry records the staff member's IP address. That is the difference between “an admin deleted this ban” and “an admin deleted this ban from an address they have never used before” — which is what a stolen staff account looks like from the outside.

It is your staff's address, not a player's. Because it identifies them personally, tell your staff it is recorded. That is both fair and what data protection law expects of you as the controller — see the DPA.

Kept indefinitely. Your Server Log is pruned on a schedule because chat fills it up; the audit log is not, because the entries most likely to be asked about later are the ones worth keeping longest. It is included in Export My Data, so it can leave the panel if somebody asks you for it in writing.

What it does not record: who merely looked at a player's record. On a busy panel that is thousands of entries a day and it would bury the ones that matter. If you need read-tracking for a specific reason, ask — it is a deliberate omission, not an oversight.

5   How bans really work

A ban is not attached to one account. When you ban someone, the panel stores every identifier they had at that moment — Steam, Discord, licence, licence2 and their hardware IDs. On every connection attempt it checks all of them, and matching any single one blocks entry.

So a banned player coming back on a brand-new Steam account, from the same machine, is still stopped by the hardware ID.

The honest limit, which you should know now rather than discover later

Hardware IDs are reported by the player's own computer, and tools that fake them are openly sold. A determined evader with a spoofer and a fresh account will get past a hardware ban.

What hardware bans reliably stop is the lazy returner — which is most of them. For the rest, the panel gives you identifier analysis: it cannot stop a spoofer, but it can show you the signs that someone is using one.

6   Investigating

Linked accounts

Under Other Actions. Lists other players sharing this one's Steam, Discord, licence2 or any hardware ID — showing which identifiers overlap and whether that account is already banned. This is how you find alt accounts and ban evaders.

Risk summary

Trust score, Steam account age (flagged under 30 days, typical of throwaway evasion accounts), recent warnings and kicks, and total bans.

Name mismatch

Compares the name the game client reports against the real Steam account name. Cheat menus can fake the in-game name; they cannot fake the Steam one.

A mismatch is a hint, not proof. Roleplay character names, framework renaming and a recent Steam rename all set it off perfectly innocently. Always check further before you act on it.

Identifier analysis

Every player page carries a short analysis of the identifiers that player has connected with. It exists because of the uncomfortable fact above: since hardware IDs can be faked, what is worth watching is not the values themselves but whether they stay consistent. A player whose hardware ID changes every session is telling you something.

Live map

On each server's page, needs the Live Map permission (off by default — Settings → Panel Settings). Plots every connected player's current position, refreshed every 30 seconds — the same rate the panel already hears from your game server, so this adds nothing extra for it to report. A player still loading in has no position yet and is left off rather than shown at the wrong spot.

No game map image ships by default — positions plot on a plain grid until you supply one. This is deliberate: the in-game map texture belongs to the game, not to us, so sourcing an image is left to you rather than decided on your behalf.

Inventory, trunk and glovebox

On a player's own page, needs the Screenshot permission (the same one that gates screenshot requests — both are "look at what this player actually has right now" tools). Reads live from the game server: their inventory, or whatever vehicle they are currently sitting in.

Trunk and glovebox only work for the vehicle the player is currently in — not an arbitrary plate. A parked, unattended vehicle cannot be read this way; that is a limit of how the game server tracks vehicles, not a bug.

7   The player portal

Your players have their own page at /me on the panel. They sign in with Steam — no account to create — and see what your community records about them.

They seeThey never see
Their playtime, first and last seenAnyone else's records
Their warnings, kicks and commends, with reasons and datesYour staff notes — those stay private
Whether they are banned, why, and when it expiresTheir trust score, linked accounts or identifier analysis
An appeal form, if they are bannedAnything about your other servers or your staff

It covers every community they play on that uses this panel — each one separately, and only their own rows.

Sharing a donator vehicle

If a player owns a donator vehicle, it is listed on the same page with a box to share it. They type a friend's exact in-game name, and that friend can then drive it whenever they like — the owner does not need to be online. Up to five friends per vehicle, removed again with one click.

Deliberately the player's job rather than yours. The alternative is your staff handling “can you add my mate to my car” tickets forever, and there is nothing in that decision a staff member needs to approve.

Ban appeals

A banned player can appeal from that page. The appeal arrives as an ordinary support ticket in your queue, so it lands where you already look rather than somewhere new. One open appeal at a time, so a frustrated player cannot flood you.

This is worth turning on in your community's mind: it saves your staff answering the same "why was I banned" question in Discord all week.

8   Settings worth doing

All under Settings → Panel Settings.

SettingWhy it matters
Discord webhookWhere moderation alerts, support replies and renewal reminders are posted. Leave it empty and you get no notifications at all — including replies to your own support tickets
TimezoneEvery date in the panel and in ban messages uses this. Type to search
Community nameShown throughout your panel
Trust score valuesHow far each action moves a player's score
Server buttonsCustom buttons on a server's page — pick a server, action, label and colour
Your frameworkQbox, QBCore, ESX or None. Features needing an inventory stay hidden until you set it. See below
Your Steam API keyOptional. Your own key instead of the shared one, so you are not competing for someone else's rate limit. See below
Approved server addressesA second lock on your community ID. See below

Set the Discord webhook first

It is the single most useful five seconds in this list. Without it your staff cannot see moderation happening, and you will not be warned before your plan runs out.

Your framework

Qbox, QBCore, ESX, or None / not sure, which is the default. It controls one thing today: whether the panel offers features that need an inventory to exist.

Left on None, Give to Selected on the Servers page is hidden. That is deliberate — on a server with no item system there is nothing to give, so offering the box would only ever produce a silent failure.

Set this, then restart your staff resource once. On start it reads your server's real item list and sends it to the panel, and the item box becomes a searchable dropdown of what you actually have — with proper names like “Water Bottle” next to water.

Until it has reported, the box stays a plain text field and says so. Typing an internal name still works; it is just easier to get wrong, and a name that does not exist fails silently because handing over a nonexistent item does nothing at all.

The list is refreshed every time the resource starts, so adding items to your server and restarting is all it takes to see them here.

Your own Steam API key

Optional, free, and takes about a minute. The panel uses a Steam key to turn a player’s Steam ID into their real Steam name and account age — which is what powers name-mismatch detection and the “this account is four days old” signal when you are investigating somebody.

Leave it blank and the panel’s own key is used. That works, and nothing breaks. But Steam limits requests per key, and on a hosted panel that one key is shared with every other community here — so a busy neighbour can eat into what is available to you.

Get one at steamcommunity.com/dev/apikey, paste it into Settings → Panel Settings, and save.

It is never shown again once saved, the same as an RCON password. Leaving the box empty keeps the key you already have — it does not clear it. To stop using your own key and go back to the shared one, type remove in the box and save.

Changing it is recorded in your Audit Log. The fact that it changed, never the key itself.

Self-hosted? There is only ever one key on your install, and this field simply is not needed — set it in your config file instead.

Approved server addresses

Your community ID is how your game server proves itself to the panel. It sits in a file on that server, so treat it as something that could be discovered rather than as a password.

It cannot be used to warn, kick or ban anyone — those need a signed-in panel account. But it is worth a second lock: list the addresses your game server actually calls from, and the community ID alone stops being enough.

The panel records every address it sees, so you can copy real values rather than typing one from memory. A wrong entry stops your bans being enforced, so use the recorded list.

Discord bot (for bulk roles)

A separate integration from the webhook above — a webhook can only post messages, this can grant Discord roles, so it needs its own bot with its own token. It only powers Bulk Discord Roles; nothing else in the panel needs it.

  1. Create a bot at discord.com/developers/applications.
  2. Invite it to your server with the Manage Roles permission — nothing wider than that.
  3. Move its own role above any role you want it able to grant, in your Discord server's own role list. This is a Discord rule, not ours: a bot can never assign a role equal to or higher than its own.
  4. Paste the token and Server ID into Settings → Panel Settings, add the roles you want available, and hit Test Connection. It checks both the token and, if you have already listed roles, whether the bot can actually grant each one — so a role-order mistake is caught here rather than mid-assignment later.

The bot token is write-only once saved — the field always shows blank, the same as your RCON passwords. Leaving it blank on a later save keeps the existing token; nothing is ever redisplayed.

9   Your plan and paying

Sidebar → Account → Landing Page shows your current plan, how much of your allowance you have used, and days remaining.

PackagePriceCommunities
Free trial1, for 7 days
Starter$5 / 30 days1
Duo$8 / 30 days2
Pro$15 / 30 days5

Renewing early adds to your remaining time rather than replacing it, so there is no reason to leave it late. Belonging to other people's communities is always free and never counts against your allowance — the limit is only on communities you own. If you own more than one, a dropdown appears at the top of the sidebar to switch between them.

Right now, paying goes through email

Card and crypto checkout is not live yet. Email contact@markoski.org and we will send you payment details and activate your plan straight away.

Your free trial is unaffected — it starts by itself and there is nothing to arrange.

Before you pay

On the same Landing Page, under the packages, there is a box headed Before you pay. Do this before sending any money:

  1. Choose your package from the dropdown — the one you actually intend to buy.
  2. Tick the box confirming you want immediate access and understand you give up the 14-day cancellation right by taking it.

This exists so both sides know where they stand. It is recorded with the exact wording, the package and the time.

You are warned on Discord, not by email

The panel has no email feature. Before your plan ends it posts to your own Discord webhook at 7 days, 3 days and 1 day — once each. Receipts come from the payment provider, not from us.

If a plan does lapse, nothing is lost

Your game server keeps running and your bans stay enforced — the resource does not stop working. Only the panel pauses, nothing is deleted, and renewing brings everything back exactly as it was.

10   Your players' data

You hold real personal data about real people: identifiers, hardware IDs, chat and screenshots. Two tools exist so you can meet requests without asking anyone's permission.

Download everything

Settings → Download My Data gives you the whole community as JSON, CSV and the screenshot image files.

That file is your players' personal data. Once it is on your computer you are responsible for it. Do not pass it around your staff team.

Downloads are recorded in your Server Logs and announced to your Discord webhook, so you can see if anyone else ever takes one.

Delete one player

On that player's page, for when a player asks you to. It permanently removes their profile, warnings, kicks, notes, commends and screenshots in your community, and the image files on disk. You confirm by typing ERASE, because it is irreversible. Records held by other communities are theirs, not yours, and are untouched.

Keep the ban — erasure is not a way out of one

The erase form has a keep bans option. Tick it and everything else about that player goes while the ban record stays and keeps working.

Use it whenever the person asking is banned. Data protection law does not require you to delete records you need in order to prevent abuse, and a ban record is exactly that. Without this, "please delete my data" would be the cheapest ban evasion there is.

Players cannot erase anything themselves. From their own page they can only view their record and appeal, so every erasure is a decision you make.

Delete one screenshot

Each screenshot on a player's page has a Remove label next to it, for anyone with the Delete Records permission. It deletes the database record and the image file together — there is nothing left to clean up afterwards. Use it for a screenshot that should not have been kept, without erasing the rest of that player's history.

Delete the whole community

Available to the registered owner only, and confirmed by typing a phrase so it cannot happen by accident.

Our side of this is set out in the Data Processing Addendum. Worth reading once if you take players from the EU or UK.

11   When something breaks

SymptomAlmost always
Players not showing under ServersThe address in the panel does not match the resource. Edit it in place under Settings → Edit Servers, and check the console for [Staff Panel] lines
Kicks or bans not reaching playersA wrong RCON password. Retype it in the second box on the server's row — you do not need to remove the server
No Discord notificationsThe webhook field in Panel Settings is empty
“No Access” on a pageThe screen names the exact permission you are missing. Ask an owner to grant it
Bans stopped being enforcedA wrong entry in Approved server addresses. Copy from the recorded list rather than typing one

Opening a ticket

Support → Support Tickets. Status moves through Open, In-Progress, Pending and Closed. Replies appear on your dashboard with a New reply badge, and are posted to your Discord webhook if you have set one.

Questions about pricing, bigger networks, or running the panel on your own hosting: contact@markoski.org.