-
Notifications
You must be signed in to change notification settings - Fork 0
Data Backups and Recovery
Everything the dashboard stores lives in plugins/EssDashboard/. This page explains what each file
is, how to back it up, and how to recover from common lockouts.
| File | Contents | Sensitive? |
|---|---|---|
config.yml |
All settings, including the auto-generated jwt.secret
|
🔴 Yes — holds the session-signing secret |
dashboard.db |
SQLite database: staff accounts (bcrypt-hashed passwords, 2FA secrets), sessions, player index, punishments, staff notes, login history, economy & chat logs, metrics samples, scheduled tasks, branding & moderation settings | 🔴 Yes — account & session data |
audit.log (+ .1, .2, .3) |
Rotating [[audit trail | Audit-Log]] (5 MB per file, 3 backups) |
The GeoIP database (
.mmdb) is not stored here — it's read from EssentialsXGeoIP at runtime.
Because it's just files, backing up is straightforward:
- Stop the server (or at least ensure the dashboard is idle) for a consistent SQLite snapshot.
- Copy the whole
plugins/EssDashboard/folder somewhere safe. - Store backups securely —
config.ymlanddashboard.dbare sensitive (see table above).
To restore, stop the server, drop the folder back in place, and start up again.
Tip: keeping
config.ymlin your backups preserves yourjwt.secret, so existing sessions remain valid after a restore. If you rotate the secret (below), everyone is logged out.
The jwt.secret signs every session token. If it may have leaked (e.g. someone read your
config.yml), rotate it:
- Stop the server.
- In
config.yml, blank it out:jwt.secret: "". - Start the server — a fresh random secret is generated and saved.
All existing sessions are immediately invalidated and everyone must log in again.
The admin account lives in dashboard.db, not in config.yml. The bootstrap in config.yml only
creates the superuser if it doesn't already exist, so to reset an existing admin:
- Stop the server.
- Open
plugins/EssDashboard/dashboard.dbin any SQLite browser (e.g. DB Browser for SQLite). - Delete the admin's row from the
userstable. - Make sure
superuser.username/superuser.passwordinconfig.ymlare set to what you want. - Start the server — the account is recreated from config, and you'll be forced to set a new password on first login.
- You have recovery codes: enter one at the login 2FA prompt instead of a TOTP code.
- Another admin is available: they can reset your 2FA from Staff & Permissions.
-
The only admin is locked out: stop the server, and in the
userstable ofdashboard.dbclear that user'stotp_enabled/totp_secretcolumns, then restart.
Move the entire plugins/EssDashboard/ folder to the new host. Everything — accounts, history,
branding, scheduled tasks — comes along. Update config.yml (host, server-address, CORS) for the
new address if needed.
-
Configuration — every setting in
config.yml. - First Login & Security — passwords, 2FA, sessions.
-
Audit Log — the
audit.logfiles and rotation. - Troubleshooting & FAQ — more recovery scenarios.
EssentialsX Dashboard · GitHub · Releases · Report an issue · Licensed under GPL-3.0
Getting Started
Features
- Dashboard & Overview
- Analytics & Heatmaps
- Players
- Economy
- Bans, Mutes & Warnings
- Chat Moderation
- Kits & Warps
- Live Console
- Server Controls
- EssentialsX Modules
- Scheduler
- Broadcast & Mail
Administration
Reference