76 lines
3.7 KiB
Markdown
76 lines
3.7 KiB
Markdown
Website for TFMC (teknisk fysiks minecraft server)
|
||
|
||
|
||
[] Add integration for playerstatistics across servers
|
||
- We have to read the jsons in world (i have example for two worlds)
|
||
- we have to get the uuid as stats are saved in uuid
|
||
- convert playername to uuid maybe? is there an api?
|
||
- Would be nice to see playtime and block usage over all the different servers + a total.
|
||
for example using edc64... uuid i would like to see total amount of diamond collected on all worlds and also diamond per world in a list.
|
||
[] Add a nice site for TFMC with information about the server.
|
||
[] Add statistics of online status on the server?
|
||
- Graphs of players online?
|
||
- Show total players that have played on server?
|
||
-
|
||
[] Registering form with email authentication so only UMU university students can join. (link email to minecraft account for whitelist)
|
||
- This could be done via rcon maybe? and have a separate list of players that have registered.
|
||
|
||
[] Build this entire website and management via docker for easier release?
|
||
- We could use environment variables and maybe also add volumes with the player files
|
||
like mounting ./minecraftserver/world/stats:/status/server1:ro or something?
|
||
- Maybe use integration with itgz, and get variables from those servers? via for example docker sock? or would that be to insecure?
|
||
[] Maybe integrate chat with discord via rcon?
|
||
- Base on existing project? This one exist and could maybe be useful? https://github.com/destruc7i0n/shulker
|
||
|
||
## Shulker Discord-Minecraft Bridge (Dockerized)
|
||
|
||
This repo includes [Shulker](https://github.com/destruc7i0n/shulker) as a Git submodule under `external/shulker`, plus a Docker setup so you can run it and mount your Minecraft logs as a volume.
|
||
|
||
### Prereqs
|
||
- Docker and Docker Compose installed
|
||
- A Discord bot token and (optionally) a Discord channel webhook
|
||
- Your Minecraft server configured with rcon and accessible logs
|
||
|
||
### First-time setup
|
||
1. Initialize and update submodules:
|
||
- git submodule update --init --recursive
|
||
2. Configure environment variables (create a `.env` in repo root or pass via CLI):
|
||
- DISCORD_TOKEN=... (required)
|
||
- DISCORD_CHANNEL_ID=... (required if not using webhooks only)
|
||
- WEBHOOK_URL=... (if using webhooks)
|
||
- MC_LOGS_DIR=/absolute/path/to/your/minecraft/logs (defaults to `./Worlds/tfmc23-24/logs`)
|
||
- IS_LOCAL_FILE=true to tail logs directly (recommended when logs are mounted)
|
||
|
||
### Run
|
||
Start the service (from repo root):
|
||
|
||
```
|
||
docker compose up -d --build shulker
|
||
```
|
||
|
||
On first run, `/data/config.json` will be created from `config.example.json`. The container will symlink it to `/app/config.json` and set `IS_LOCAL_FILE` and `LOCAL_FILE_PATH` to `/minecraft/logs/latest.log` by default. You can edit `config.json` by entering the container or by stopping the container and editing the file in the named volume.
|
||
|
||
Expose the Shulker webhook on port 8000 if you want to send remote hooks instead of tailing logs. For remote setup, set `IS_LOCAL_FILE=false` and follow the command in Shulker's README to pipe log lines to the webhook.
|
||
|
||
### Volumes
|
||
- `shulker_data` named volume stores `config.json`.
|
||
- `${MC_LOGS_DIR}` (host) is mounted read-only at `/minecraft/logs` (container). Ensure this path contains `latest.log`.
|
||
|
||
### Updating Shulker
|
||
Shulker is a submodule:
|
||
|
||
```
|
||
git submodule update --remote external/shulker
|
||
```
|
||
|
||
Rebuild the image after updating:
|
||
|
||
```
|
||
docker compose build shulker && docker compose up -d shulker
|
||
```
|
||
|
||
### Notes
|
||
- Node 16+ is required; the Docker image uses Node 18 Alpine.
|
||
- If your server is modded, you may need to adjust `REGEX_SERVER_PREFIX` per Shulker’s FAQ.
|
||
- For RCON features, set `MINECRAFT_SERVER_RCON_*` in `config.json` and ensure your server has rcon enabled.
|