Installation
There are three pieces to install: the master service (Postgres-backed event sink), the Paper and Velocity plugins (event producers), and optionally Metabase (dashboards).
1. Pre-flight
RabbitMQ reachable from every game server.
PostgreSQL 15+ reachable from the master node.
AstralCore installed and configured (its env-based
CredentialsProvideris reused for the RabbitMQ connection).
2. Database
The master ships a schema.sql that the DatabaseService runs on connect:
The GIN index on payload lets you filter on JSONB fields (e.g. payload->>'country' = 'FR') without a sequential scan.
3. Master service
The master is a MageHic plugin. Drop the master JAR into your MageHic plugins directory and provide database.properties in its data folder:
The PostgreSQL JDBC driver must be on the classpath. The master fails fast on startup with a clear error if it can't load org.postgresql.ds.PGSimpleDataSource.
RabbitMQ credentials come from environment variables via AstralCore's EnvCredentialsProvider.
4. Paper plugin
Drop the paper JAR into plugins/ on every Paper server you want telemetry from. The plugin:
Connects to RabbitMQ using the same env-based credentials AstralCore uses.
Registers the
AnalyticsServicewithAstralPaperAPI.Registers the
track-eventglobal action.Wires three sources of built-in events: join/quit, command execution, and the LuckPerms hook.
plugin.yml:
No additional configuration file is required on Paper.
5. Velocity plugin
Drop the velocity JAR into the proxy's plugins/ directory. The proxy plugin emits the richest set of join events (IP, client brand, mod info, locale settings) — see Events.
6. Metabase (optional)
docker-compose.yml in the repo provisions Postgres and Metabase in one shot:
Service | Port | Notes |
|---|---|---|
PostgreSQL 15 | 5432 | Volume: |
Metabase | 3000 | Volume: |
On first launch:
Open
http://localhost:3000.Complete the Metabase setup wizard.
Add a database of type PostgreSQL pointing at the same
eventsdatabase the master writes to:Host:
db(from inside the Docker network) or your DB host externally.Database name:
metabase(or whatever you configured).User / password: as in
docker-compose.yml.
Metabase scans the
eventstable and exposes it for queries.
See Metabase for example dashboards.
Permissions
There is no permission tree — AstralAnalytics has no commands. Events are emitted automatically based on Bukkit / Velocity events and the track-event action. Plugins integrate through the AnalyticsService API.