Cross-Server Setup
Cross-Server Setup
Section titled “Cross-Server Setup”Bazaar supports running across any number of Minecraft servers with a shared market backed by Redis. One server is the ORCHESTRATOR; the rest are PARTICIPANT nodes.
If Redis is disabled, Bazaar runs in single-server mode and everything stays local to that one server.
Topology
Section titled “Topology”[client] --(Minecraft)--> [orchestrator] \--> [participant A] \--> [participant B]
all servers -------> Redisorchestrator ------> dashboard HTTP/WebSocket serverBazaar uses Redis for:
- cross-server market event fanout
- cross-server personal notifications
- cross-server persistence and config reload signals
- orchestrator discovery
Minimum Requirements
Section titled “Minimum Requirements”- A reachable Redis 6+ instance
- The same Bazaar version on every server
- Shared Impactor currency storage so balances stay consistent
- Optional proxy messaging support through FabricProxyLite or CrossStitch if you use Velocity
Configure the Orchestrator
Section titled “Configure the Orchestrator”In config/bazaar/config.conf:
role = "ORCHESTRATOR"
redis { enabled = true url = "redis://redis.internal:6379" password = "<password>" poolSize = 8 serverId = "main"}
web { enabled = true port = 8080 jwtSecret = "<32+ random chars>"}Configure Participants
Section titled “Configure Participants”role = "PARTICIPANT"
redis { enabled = true url = "redis://redis.internal:6379" password = "<password>" poolSize = 8 serverId = "survival-2"}
web { enabled = false}Every server needs its own unique redis.serverId.
What Runs Where
Section titled “What Runs Where”| Component | Orchestrator | Participant |
|---|---|---|
In-game commands (/gts, /ah, …) | yes | yes |
| Redis listener | yes | yes |
| Dashboard HTTP/WebSocket server | yes | no |
| Stats rollups and security scans | yes | no |
| Cross-server config broadcasts | yes | receives |
Checklist
Section titled “Checklist”- Same Bazaar version on every server
- Same Redis connection settings on every server
- Unique
redis.serverIdon every server -
role = "ORCHESTRATOR"on exactly one server - Shared Impactor storage backend
-
web.jwtSecretset on the orchestrator - Firewall allows the dashboard ports only where intended