Storage & network
Flatfile vs MySQL, and how to make threat scores follow a staff member across a BungeeCord or Velocity network.
Argus v1.1.1Paper · Purpur · Folia-safe1.21 – 1.21.x
Argus stores profiles, scores, honeypots and the audit chain. Two backends, one decision.
Flatfile (default)
storage: type: FLATFILEZero setup, everything lives under plugins/Argus/. Correct for a single server. Back it up with
the rest of your server files.
MySQL
storage: type: MYSQL mysql: host: localhost port: 3306 database: argus user: root password: "" table-prefix: "argus_" ssl: falseRequired for network mode. The MySQL driver is not shaded into the jar — Paper's library loader
fetches com.mysql:mysql-connector-j on first start and caches it, so the download only happens
once and only if you actually chose MySQL.
Restart required
storage is read once at startup. /argus reload will not switch backends.
MariaDB works with the same driver and settings.
Network mode
On a proxy network, a staff member who is watched on survival should not get a clean slate by
hopping to skyblock. Network mode makes the score follow them.
storage: type: MYSQL # requirednetwork: enabled: true server-id: "survival-1"Install Argus on every backend server
The proxy itself runs nothing. Argus is a Paper plugin and needs to see the events, which only happen on the backends.
Point them all at one database
Same
host,database,userand sametable-prefix. Different prefixes mean separate markets of data that never see each other — which is occasionally what you want, but never what you want here.Give every server a unique server-id
YAML network: enabled: true server-id: "skyblock-2"The ID is stamped onto every audit entry, so the rewind timeline tells you where an action happened, not just that it did.
Restart everything
Backends first, proxy afterwards. Then run
/argus verifyon one backend to confirm the chain reads cleanly from the shared database.
What is shared and what is not
| Data | Shared across the network |
|---|---|
| Threat scores and profiles | yes |
| Audit log entries | yes, tagged with server-id |
| Honeypot locations | no — they are per-server, because coordinates are |
| Freezes | applied on the server where they were issued |
Backups
The audit chain is the piece worth protecting. A hash chain proves nothing was edited, but it cannot resurrect a table somebody dropped. Include the Argus tables in whatever database backup you already run, and keep the backups somewhere your staff cannot reach.
Verify after restoring
Run /argus verify after any restore. If a backup was taken mid-write you will see the break
immediately rather than discovering it during an investigation.