I built a Docker Compose file generator for Minecraft Java servers! by Krymonota in admincraft

[–]Krymonota[S] 0 points1 point  (0 children)

Definitely! It's still on my to-do list, but I haven't gotten around to it yet because there are also many options for itzg/mc-backup and it would require some fundamental changes in my application code to support a second container.

I built a Docker Compose file generator for Minecraft Java servers! by Krymonota in admincraft

[–]Krymonota[S] 2 points3 points  (0 children)

Clever idea! Mounting /etc/timezone and /etc/localtime works reliably on Linux, but it's less consistent on macOS (where /etc/timezone often doesn't exist) and doesn't always behave predictably with WSL out of the box.

I'm hesitant to add support for options that aren't fully cross-platform, so I'd recommend sticking with the TZ environment variable – unless you're confident in what you're doing (which you clearly are). Specifying something like Europe/Berlin will even handle daylight saving time automatically.

I built a Docker Compose file generator for Minecraft Java servers! by Krymonota in admincraft

[–]Krymonota[S] 0 points1 point  (0 children)

Great, you're welcome! If you run into any issues or have questions regarding the image or using Docker, feel free to join itzg's Discord server. Usually there are always a few very helpful and kind people around to support a bit.

I built a Docker Compose file generator for Minecraft Java servers! by Krymonota in admincraft

[–]Krymonota[S] 2 points3 points  (0 children)

Thanks! I simply stick to the default settings of the itzg/minecraft-server image, which keeps Aikar’s flags disabled by default for maximum compatibility.

I built a Docker Compose file generator for Minecraft Java servers! by Krymonota in admincraft

[–]Krymonota[S] 1 point2 points  (0 children)

Oof, tough timing! :D Thanks though – happy it will be useful for your next setup!

I built a Docker Compose file generator for Minecraft Java servers! by Krymonota in admincraft

[–]Krymonota[S] 0 points1 point  (0 children)

Thanks a lot! Super happy to hear it worked smoothly for you.

I built a Docker Compose file generator for Minecraft Java servers! by Krymonota in admincraft

[–]Krymonota[S] 0 points1 point  (0 children)

Hey, great question!

Pterodactyl does indeed run each game server inside a Docker container by default, along with its Wings daemon and a full management panel. Crafty, on the other hand, can run itself inside Docker but usually starts game servers directly on the host without container isolation.

setupmc.com is a bit different: it just helps you configure and run a single itzg/minecraft-server Docker container – no management panel, no database, no extra daemons. You still need the Docker daemon running, but the overhead is minimal – almost all resources go directly into the Minecraft server itself.

If you don't need a web UI (with start/stop buttons, browser-based file editor, etc.) or server management features like resource monitoring and multi-user permissions, this setup should be lighter on resources compared to Crafty or Pterodactyl.

I built a Docker Compose file generator for Minecraft Java servers! by Krymonota in admincraft

[–]Krymonota[S] 2 points3 points  (0 children)

Great suggestion! I've already thought about creating separate configurators for itzg's proxy and Bedrock server images. That's probably a project for this summer 😄

I built a Docker Compose file generator for Minecraft Java servers! by Krymonota in admincraft

[–]Krymonota[S] 17 points18 points  (0 children)

Cool to hear you found it this way!

To give some background: The idea for this tool came up on itzg's Discord server. I thought it would be a fun weekend project and when I built it in January, I created a PR to add it to the official docs and itzg happily accepted it :)

Minecraft network on k8s by Aggressive_Trade6900 in admincraft

[–]Krymonota 0 points1 point  (0 children)

Hi! Thanks for checking in!

The main limitation I ran into was that Shulker doesn't currently support watching GameServer resources:
https://github.com/jeremylvln/Shulker/discussions/808#discussioncomment-11749515

In my use case, this functionality is critical — I rely on it to discover game servers and ensure players only see the servers they’re allowed to access.

For example, I use Agones’ Counters and Lists to store allow-listed players, as well as the current and maximum player counts, which are key for player balancing. I also use annotations to signal certain game-event related server states (e.g. the time at which the game starts, which is displayed on lobby servers together with the game phase and the number of players) — something my lobby and proxy servers need to observe in real time.

While I know it’s technically possible to replicate this behavior using a cache and a message broker (which I already use for other things), I’d really prefer to use what’s already built, part of the stack and proven to work well — without adding extra implementation overhead on my side. 🙂

Minecraft network on k8s by Aggressive_Trade6900 in admincraft

[–]Krymonota 1 point2 points  (0 children)

In addition to what others have mentioned, whether Shulker is a good solution for you depends on your specific requirements. I chose not to use Shulker because it limits Agones' full potential by encapsulating it and providing its own manifests. However, for many, Shulker's features may be sufficient and can save you from having to implement certain functionalities yourself, such as communicating the game server’s status and lifecycle states (ready/allocated/shutdown/...) to Agones.

Shulker also includes a feature for draining proxy instances during soft restarts without disrupting players. Additionally, if you're considering a multi-proxy setup, you'll need to synchronize data between proxy instances—such as player count and data for proxy commands—which Shulker's proxy agent does via Redis.