summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/adr/0001-rcon-only-interaction.md37
1 files changed, 37 insertions, 0 deletions
diff --git a/docs/adr/0001-rcon-only-interaction.md b/docs/adr/0001-rcon-only-interaction.md
new file mode 100644
index 0000000..ec7bb41
--- /dev/null
+++ b/docs/adr/0001-rcon-only-interaction.md
@@ -0,0 +1,37 @@
1# ADR 0001: RCON-only Minecraft server interaction (no console, no file editing)
2
3## Status
4
5Accepted
6
7## Context
8
9The webUI needs to interact with the running Minecraft server for several operations: querying player count (dashboard), managing the whitelist, managing OPs, and managing bans. Two primary approaches exist:
10
111. **File editing** — Read and write `whitelist.json`, `ops.json`, `banned-players.json` directly on disk. Requires a server restart or `/reload` to apply changes.
122. **RCON** — Send commands over the RCON protocol. Changes apply immediately, no restart needed. Also enables querying server state (`/list`).
133. **Docker stdin/stdout** — Attach to the container's console. Enables log streaming and command input. Requires persistent WebSocket/SSE connection.
14
15## Decision
16
17We will use **RCON exclusively** for all webUI-to-server interaction:
18
19- Player count queries via RCON `/list`
20- Whitelist, OP, and ban management via RCON commands (`/whitelist add`, `/op`, `/ban`, etc.)
21- No log streaming, no Docker console attachment
22- No direct editing of `whitelist.json`, `ops.json`, or other server files
23- RCON password is auto-generated per Instance and stored internally
24
25## Consequences
26
27### Positive
28- Changes apply immediately without server restart
29- No WebSocket or SSE infrastructure required
30- No log parsing or streaming complexity
31- User-facing player management is username-based (users don't need to know UUIDs or JSON structure)
32- Simpler codebase: request/response pattern over TCP, not persistent connections
33
34### Negative
35- No server logs visible in the webUI — debugging crashes requires Docker CLI access (but this is a system administration concern, out of scope for the webUI)
36- RCON must be enabled and reachable (`enable-rcon=true`, port exposed) for the webUI to function for live Instance operations
37- If the Minecraft process crashes inside the container, RCON becomes unreachable and the webUI can only report "crashed — check Docker logs" rather than showing the error