All projects05 / 08

Minecraft SMP

A Fabric vanilla+ server for friends, with live status from the homelab.

live2026

05live

  • between world backups6 h
  • of snapshots kept7 days
  • less backup disk (incremental)95%
  • server-side mod written by me1

01 / Problem

Vanilla survival that nobody has to install anything for

Friends wanted a survival server that plays like the real game. I picked Fabric with server-side-only mods instead of Paper, because Paper changes redstone and duplication behaviour, and nobody needs a client mod to join.

The public BlueMap web map seen from above: forests, olive plateaus, rivers and a large bay, with a marker at the world spawn

02 / How it works

A sidecar that reads the log

A small Python service with no dependencies tails the server log. It posts joins and deaths to a Telegram group, builds the death leaderboard and playtime stats, and checks server status with the game's own list ping, cached for 15 seconds. Failures degrade one feature at a time, and it never crash-loops. BlueMap renders the public map, and the Live page of this site reads the same status and leaderboard.

03 / The hard part

Changing the game without breaking it

I wrote a server-side mod so zombies always convert villagers and cured villagers give shared discounts. I tested the conversion 10 times out of 10 before trusting it. Because the mod has to be rebuilt for each Minecraft version, upgrades go through a script that checks mod readiness first, and the weekly auto-update skips this stack. Everyone joins from the same local address behind the tunnel, so I turned off login sessions to stop one player taking over another's name.

04 / Result

Backups that fit the disk

Backups had grown to 99 GB, because each full archive included the rendered map. I switched to incremental snapshots, left the map render out, and the folder dropped to 4.6 GB. I restored a full world from a snapshot to prove it works, and snapshots now run every 6 hours and are kept for 7 days.

How it works

From the game log to the map and the feed

The server itself stays plain vanilla+. A small sidecar reads what it writes and turns that into a feed, a leaderboard, a status and backups.

The same flow as a list, in order.

  1. Play: Fabric server. Vanilla+, server-side mods only. Goes to Server log, World data.
  2. Record: Server log. Goes to Python sidecar.
  3. Record: World data. Goes to BlueMap render, Incremental backups.
  4. Process: Python sidecar. Tails the log; checks status with the game's list ping. Goes to Telegram feed, Leaderboard and status.
  5. Process: BlueMap render. Goes to Public map.
  6. Process: Incremental backups. Every 6 hours, 7 days kept. End of the path.
  7. Publish: Telegram feed. Joins and deaths. End of the path.
  8. Publish: Leaderboard and status. Read by the Live page of this site. End of the path.
  9. Publish: Public map. End of the path.

Stack, by layer

Server
FabricVanilla+Java 25Datapacks
Mods
LithiumFerriteCoreChunkyBlueMapOwn villager and chunk-loading mod
Operations
resticTelegram botPython sidecarDocker

Live from the serverOffline

Server
n/a
Players online
n/a
Version
n/a