Minecraft Server
A Minecraft server for the Java Edition — optionally reachable for Bedrock Edition clients (phones, tablets, consoles, Windows app) as well — built on the widely used itzg/minecraft-server image: Paper, Vanilla or Fabric server, world rules, whitelist and operators from the settings page, server console, world backup.
Announcement and talks
The Minecraft Server app announcement TBA
Minecraft Server is a community application from the tebbiworld repository. Documentation and source can be found on Github
What it does
- one rootless container with the pinned
itzg/minecraft-serverimage (Java 25); the server software itself (Paper, Vanilla or Fabric, versionLATEST,SNAPSHOTor fixed) is downloaded into the data volume at start - Bedrock Edition players join through Geyser + Floodgate (Paper only), the latest builds from the official GeyserMC download API, fetched at every start
- MOTD, game mode, difficulty, max players, PvP, online mode, seed, whitelist and operators (synchronised at every start), free-form additional variables for everything else the image supports (view distance, mods/plugins via Modrinth, modpacks, …)
- the game port(s) are chosen in the settings, published on the node and opened on the node firewall as a public service
- server console on the settings page (RCON), also available as the
run-commandaction - NS8 backup of the world volume with auto-save paused for a consistent copy; full restore
Architecture
| Container | Image | Purpose |
|---|---|---|
minecraft | docker.io/itzg/minecraft-server:<version>-java25 (pinned) | game server; 25565/tcp (Java) and 19132/udp (Bedrock) published on the configured ports; RCON 25575 internal only |
| Volume | Purpose | Backup |
|---|---|---|
minecraft-data | server jar, worlds, plugins/mods, server.properties, whitelist.json, ops.json | yes |
Installation
On the NethServer 8 cluster leader:
add-module ghcr.io/tebbiworld/minecraft:latest 1
or from the Software Center after adding the tebbiworld repository.
Configuration
Open the instance settings:
- Minecraft EULA — must be accepted, the server refuses to start otherwise (https://aka.ms/MinecraftEULA)
- Server type — Paper (recommended: fast, plugins, required for Bedrock), Vanilla (Mojang's unmodified server) or Fabric (mods)
- Minecraft version —
LATESTinstalls the newest release at every server start; a fixed version such as1.21.8keeps the world there. Minecraft cannot downgrade a world. - Java heap — memory for the JVM; 2048 MB for a few players, more for Paper with plugins or many players. The node needs enough memory left.
- Java Edition port (TCP, default 25565) and, with Bedrock support, the Bedrock port (UDP, default 19132)
- World and rules — MOTD, game mode, difficulty, max players, PvP, online mode (verify players with Mojang; switch off only for LAN/offline servers — then anyone joins under any name), seed (used only when the world is created)
- Players — whitelist (empty: everybody may join) and operators, one name per line; written to the server files at every start, removals included
- Additional server variables —
KEY=VALUEper line, applied after the generated settings, e.g.VIEW_DISTANCE=12,SPAWN_PROTECTION=0,MODRINTH_PROJECTS=…(plugins/mods), see the image documentation. Variables managed by the page (EULA,TYPE,VERSION,MEMORY,RCON_*,SERVER_PORT,REMOVE_OLD_MODS*,PLUGINSwhile Bedrock is on, …) are refused.
server.properties is regenerated from the settings at every start, so a change on the page always wins over a hand-edited file.
The first start downloads the server for the requested version (internet access required) and generates the world — allow a few minutes. The settings page shows the live state (version, players online) and the addresses to connect to.
Server console
The settings page sends console commands to the running server through RCON: list, say Hello, whitelist add Steve, op Alex, time set day, save-all, … From the leader node:
api-cli run module/minecraft1/run-command --data '{"command":"list"}'
Connecting
Java Edition: <node IP or name>:<port>. Bedrock Edition: the same host with the UDP port (add the server manually in the Bedrock client). For players outside the LAN forward the port(s) on the router to the node; the node firewall is opened by the module.
Backup and restore
The NS8 backup contains the module settings and the minecraft-data volume. Right before the snapshot the module flushes the world to disk and pauses auto-saving (save-all flush, save-off), afterwards auto-saving resumes (save-on); a stopped server is backed up as is. A restore recreates the instance from the snapshot, re-applies the settings and the firewall service and starts the server on the restored world.
Updates
The module pins the itzg/minecraft-server image. A weekly GitHub Action checks Docker Hub for a newer YYYY.M.N-java25 tag that is at least six weeks old and releases a new module version; the Software Center update restarts the server. The Minecraft version itself follows the setting (LATEST = newest release at every start).
Resources
Java heap as configured plus about 0.5 GB for the JVM and the image tooling; disk grows with the world (hundreds of MB to several GB). Several instances per node are possible with different ports.
Licences and trademarks
Unofficial, community-built package, not affiliated with or endorsed by Mojang, Microsoft or the itzg project. “Minecraft” is a trademark of Mojang Synergies AB / Microsoft and is used here only to identify the packaged software; the module logo is the official Minecraft icon, used unmodified. The server software is downloaded at runtime and used under the Minecraft EULA; nothing of it is redistributed.
The itzg/minecraft-server image is Apache-2.0; the module's own code is GPL-3.0-or-later.
Links
Disclaimer
Private hobby project, shared as-is. No warranty, no guaranteed support, use at your own risk.