Admin panel
Overview of rCTF administration, permissions, and settings management.
The admin panel manages challenges, teams, solves, and runtime settings.
Permissions
Each admin permission has a numeric value. Add the values together to grant several permissions to one account.
| Permission | Value | Description |
|---|---|---|
challsRead |
1 | View challenges in admin panel |
challsWrite |
2 | Create, update, and delete challenges |
leaderboardRead |
4 | View leaderboard data (required for CTFtime export) |
challsSolveWrite |
8 | Delete solves |
usersWrite |
16 | Manage users and generate team tokens |
settingsWrite |
32 | Modify platform settings |
A full admin uses 63, the sum of every permission.
Creating admin accounts
After registering a normal account, grant admin permissions with the rctf CLI:
-
For full admin:
Terminal window bun rctf user promote admin@example.com -
For challenge editors (read + write challenges):
Terminal window bun rctf user promote author@example.com --perms challsRead,challsWrite
If using Docker:
docker exec rctf-rctf-1 rctf user promote admin@example.comUse rctf user demote <email>rctf user list-admins
Permission bypass
Some permissions also bypass event timing. For example, challsRead can view released challenges before the CTF starts.
Runtime settings
An account with settingsWrite can change the following settings without restarting rCTF.
| Setting | Description |
|---|---|
| CTF name | Display name of the competition |
| CTF start time | Competition start time |
| CTF end time | Competition end time |
| Home content | Home page markdown content |
| Sponsors | Sponsor list (name, icon, description, URL) |
| Meta description | HTML meta description |
| Meta image URL | HTML meta image URL |
| Favicon URL | Browser favicon |
| Logo (light/dark) | Platform logos for light and dark mode |
These settings override values from the config files. Setting a value to null reverts to the config file default.
Start and end time overrides have to keep the start before the end. Runtime timing overrides are returned through the v2 client config.