tapscrollWIKI

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)

plugins/Argus/config.yml
storage:  type: FLATFILE

Zero setup, everything lives under plugins/Argus/. Correct for a single server. Back it up with the rest of your server files.

MySQL

YAML
storage:  type: MYSQL  mysql:    host: localhost    port: 3306    database: argus    user: root    password: ""    table-prefix: "argus_"    ssl: false

Required 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.

YAML
storage:  type: MYSQL        # requirednetwork:  enabled: true  server-id: "survival-1"
  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.

  2. Point them all at one database

    Same host, database, user and same table-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.

  3. 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.

  4. Restart everything

    Backends first, proxy afterwards. Then run /argus verify on one backend to confirm the chain reads cleanly from the shared database.

What is shared and what is not

DataShared across the network
Threat scores and profilesyes
Audit log entriesyes, tagged with server-id
Honeypot locationsno — they are per-server, because coordinates are
Freezesapplied 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.