Building from Bedrock

Building from Bedrock

Volume Java

I've been hosting Minecraft servers for almost as long as I've been playing Minecraft. In the days before dedicated servers (or at least before I was aware of them), I would stand my Steve in a safe corner and leave my iMac on all day & night so people could still play on a shared map.

Fast forward ten years, and I almost feel incomplete without a Minecraft server running in my house. For most of that time, I preferred to stick with vanilla versions (other than the occasional texture pack). I was always aware of client-side mods, but I never had much interest. In 2022, I finally caught up with the times and learned about the vast server-side modding scene.

This opened up a lot of functionality that could all be enabled on the back end without anyone needing to mod their clients:

Reverse Proxies

Reverse proxies like Bungeecord, Waterfall (deprecated), or Velocity allow you to run multiple servers on the back-end, while still appearing as one server to the game client.

Why would you want to do that?

Well, you can do load balancing for larger servers, easy redundancy for high availability, or what I did: run multiple maps simultaneously, while using a server mod like Stargate to crate portals for players between maps.

Cross-server Communication

I found a great server mod called BungeeChat (for use with the Bungeecord proxy) that allows people to chat with each other across different servers that are connected to the reverse proxy. This creates a seamless social experience even when people are playing different maps.

Other mods

There's an entire ecosystem of mods that can all be controlled server-side like mini-games, total conversions, and even economic systems. Most of them are too involved for me, but it's cool so see such ingenuity in the MC modding scene.

As cool as all this stuff is, it became a lot to manage, especially since these modding projects are frequently forked, abandoned, or (most often) broken by Minecraft updates.

😖
The more mods you have, the more you dread game patches.

I still have my docker compose configs and saves backed up, but at the moment, our Java Minecraft server is offline most of the time and most of my friends lost interest.

New Seed

As mentioned in my last post, I've set out on this custom container journey to give myself power to customize and support these configurations according to my needs and philosophies.

Minecraft felt like a natural second project since I'm very familiar with the server behavior and architecture. However, this time, I'm starting with the Bedrock Edition. I have a few reasons for this:

  1. Performance - Both the server and the client versions of Bedrock run so much better. I love Java for its rich history, high compatibility, and relatively open platform. However, it uses way more memory than it needs to and doesn't scale at all with performant hardware. This leads to poor performance on even on high end machines.
📊
Say what you will about Microsoft's handling of Minecraft, but the performance difference between the Java and Bedrock Editions is astounding.
  1. Simplicity - I think the Java modding scene is extremely impressive, but I've always preferred the core survival mode gameplay in Minecraft. The bedrock dedicated server is much simpler and more lightweight. I think it will make a good starting point for maintaining my own container image.

Taking Inventory

As of now, I've published a working first version on this container. I have ideas for future stuff, but this one will work very well for vanilla setups. It currently has the following features:

  • Map saves and config are mapped to the /server directory. It is highly recommended that you map this volume to your host machine.
  • All server configuration (other than allowlists) can be done via environment variables.
  • Image version corresponds to the server version downloaded at build time.

Features I'm still working on:

  • Automated backups, specified by environment variables
  • Allowlist population with environment variables
  • Easy mod support (still working out what this will look like)
Where can I find this Minecraft Bedrock Dedicated server container image?

Thank you so much for asking. The source code is available here on Github, and you can download the image here from Docker Hub. As always, links to these have been added to jelliefrontier.net/games.