Anyone got any advice for a techy dad with no (zero) Minecraft experience who wants to set up a Minecraft server for the family in 2026? Kids right now are playing on their iPads, and (sometimes) old macbooks/windows PCs.
Anyone got any advice for a techy dad with no (zero) Minecraft experience who wants to set up a Minecraft server for the family in 2026? Kids right now are playing on their iPads, and (sometimes) old macbooks/windows PCs.
Minecraft comes in two flavors, Java and Bedrock. All of the mobile, console ports, and windows store versions are based on bedrock. Java is the one you download directly from the website. Bedrock isn't really about custom hosted servers, but there is a way.
You can run a standard Java Minecraft server however you like, and then you can wrap it to also work with the Bedrock using Gyser[1] which will protocol translate it on the fly. It can require some workarounds on the more restrictive bedrock clients but it does work. That will let you setup and control the server from Java which has more options available.
[1] https://geysermc.org/
Apologies for hijacking an advice thread, but I'm another dad who's had to deal with this incompatibility nightmare, and I really really want to know what the hell happened within Microsoft & Mojang to end up with this mess.
No, seriously, I'm fascinated by the story. It's been over ten years. I'm happy to assume that most of the people involved are smart and good with decent intentions. I also bet there were many kinds of commercial and organisational pressures, especially because it's (a) Microsoft and (b) one of the biggest gaming acquisitions ever.
Does anyone here have any insider knowledge they could share?
Minecraft started on Java, a massive mod and server community created around it. Consoles won't run JIT/JVM/Java, so the Bedrock C++ version was created. People don't want to give up the massive mod community, so OG pc players stay on Java, while console players and newer PC players go to bedrock (with some of those PC players jumping over to Java after servers or mods are discovered).
They almost have feature parity, but there are some small differences around the edges. There exists modded server options for enabling bedrock and java users to connect to the same server.
It's absolutely crazy that a game so popular - let alone any game - was originally written in Java.
Why did notch do that?
There were next to no libraries, ecosystem, or support for Java at the time. It was such a bizarre choice.
Not to mention the JVM, GC, and all the other oddities. It was super off the beaten path to have done this.
Might as well have been Ruby or Perl.
Even at the time Java had some great tools and IDEs (NetBeans, Eclipse) and both computers and the JVM were fast enough for any performance issues compared to fine tuned C++ to not matter much, especially for a game like Minecraft that didn't (at the time anyway) push the CPU much.
Java allowed Minecraft to run pretty much everywhere, including as an applet (very important in its early time) and it relied (and still relies) on LWJGL which provides access to the most common stuff you'd need to make a game (OpenGL, windowing, input events, etc) - and at the time it also worked for applets too (you needed to download the LWJGL applet code but it was signed by the devs so you didn't get too many scary messages).
I used the same tech (Java+LWJGL) at the time to make a few simple demos/games and it was quite easy to make stuff - e.g. i made this[0] in a few hours using Java, LWJGL and Eclipse on the iMac i had at the time.
[0] https://www.youtube.com/watch?v=xXn8VhH6GFs
At the time, Java ran on the web so he could easily share demos.
He used LWJGL, which probably covered a lot of his library needs.
Java has a JIT, so it's not comparable to Ruby and Perl.
Minecraft gained popularity super fast in its early days, probably because it was a free-to-play game that worked in the browser (thanks to Java). Notch had no reputation or marketing at the time.
> It's absolutely crazy that a game so popular - let alone any game - was originally written in Java.
It did not start being popular :)
Seriously though, I think Java helped it get so much traction initially. Writing mods was tedious but not that difficult, and it was multi-platform for free. Nowadays I assume the vast majority are playing bedrock on consoles or PC, but at the beginning it was rather nerdy and being playable on Linux and Mac was nice for some tech-minded people.
Different era. At the time choosing the JVM and Java language for a multiplatform project that targetted a portable runtime was not controversial at all.
I spent my first 12 hours glued to Minecraft back when it was a Java applet. Probably wouldn't have bothered to install...
I remember some early posts from him about how he really liked how the debug mode made the iteration loop very short. Here's a video of him doing exactly this - it does look like a very pleasant development environment even now
https://www.youtube.com/watch?v=BES9EKK4Aw4
There were plenty of low level libraries available then, less in the way of frameworks. It was an environment that he was used to coding in and cross-platform (in the PC world anyway).
Given what it was in the very beginning versus what it very rapidly grew into, I guess it was just something that made sense at the time.
At least for libraries, Java was actually pretty good for game development at the time iirc (Admittedly, I wasn't there, so I could be misled). It was kinda your only option if you didn't want to use C++
Am I missing sarcasm here? Minecraft was developed in 2011 and Java was conceived in 1995; it was (already) an extremely mature and popular language at the time.
As a couple of others have mentioned, the original split between the original Java Edition and the now Bedrock Edition happened in 2011. This is several years prior to the 2014 acquisition of Mojang by Microsoft. So while Microsoft may have had motivations in Mojang promoting or expanding Bedrock adoption, that train had already left the station by the time Microsoft entered the picture.
Bedrock started as "Pocket Edition". Probably the best place to get the story is at: https://minecraft.wiki/w/Pocket_Edition
I like Minecraft quite a lot and am not concerned with interoperability between Java and Bedrock... but will only play the Java Edition because of game-play differences between the two; differences in which Java Edition comes out as being materially better than Bedrock... at least from my perspective.
The developers are used to Java, and as someone who's worked with both Java and C++, Java is simply better for the kind of iterative development minecraft seems to do. From what I've seen (which admittedly isn't much more than the public facing history and the minecraft live/minecon events), there isn't really a strict roadmap and they seem to value messing with features a lot. Also, the game was only rewritten in C++ to support multiplatform ports, and bedrock isn't even the first time they did it (though, the other C++ versions, also known as legacy console, weren't handled in house). The existence of a windows version is a strange curiosity stemming from the microsoft buyout and their ability to do so since that codebase is insanely portable.
Also, mojang (not microsoft) really appreciates modders, which java edition is strictly superior for
No insider knowledge but as far as I know, bedrock is written C++ not Java. They did that for porting to other devices and consoles, as well as preformance. It also allows them to sell skins, server hosting, more micro transactions since it's more locked down. So I think it's just a thing that happened, and it has been going on for a while and if they did anything to either the Java edition or the bedrock edition then it would make a lot of people really mad.
Here is something you can consider: https://pumpkinmc.org/ it's Minecraft rewritten in Rust. It's very fast and you can make your own mods.
Consoles hate having a jit vm so java is a non-starter for them.
The real reason is you want to run your game on the latest greatest WiiStation(tm). if it is written in C/C++ you sit down with a copy of their development library and change your code to fit. If it is written in java you port the jvm to the device. And I don't really know how hard that is(having never ported the jvm) but most people sort of balk at that step.
Microsoft thought it was easier/better to rewrite minecraft in C++ than port the jvm to the xbox. There was a big enough customer base attached to the original java version they did not want to discard it(backlash would be too huge and messy).
In Microsoft's defense at the time the java code base had a ton of technical debt and overtime they've essentially done a full rewrite of everything.
That said, I'm convinced that 90% of the reason that the current mess exists is because Microsoft was convinced that most users would be migrating from Java to bedrock. And they probably would have (modding and other things aside), had the Microsoft team not decided to "fix" many aspects of redstone.
Since then there's been the constant issue of parity between the two versions, which will likely never be achieved. And 90% of the time it's because the Microsoft developers working on bedrock edition decide they know better than mojang does, so they can implement a feature in a different way, or just implement a new feature entirely.
Ugh it's a mess, and I've spent way too long thinking about it.
As someone who's messed with redstone on both, Bedrock is uniquely infuriating because it adds some really cool things (being able to move entity blocks like chests and furnaces comes to mind) while completely destroying the groundwork of even moderately advanced redstone. The most visible is the timing for certain things becoming nondeterministic, and while technically a bug originally, quasi-connectivity is extremely useful
Unless I've got the product genealogy wrong, the rewrite predated Microsoft. The mobile version was also C++ based, and I think it is the distant ancestor to bedrock/windows/console editions.
> Microsoft thought it was easier/better to rewrite minecraft in C++ than port the jvm to the xbox.
I don’t think that’s quite right. IIRC, the mobile iOS version was released before the Xbox one and neither were developed by Microsoft. I think eventually it’s the mobile version that became Bedrock and replaced the older console version, which became a dead end.
The mobile version (released in 2011) could not be in Java, otherwise it could not have been sold on iOS. So at least initially it was more a business decision about which platforms to target than a technical decision to do away with Java.
All this happened years before Microsoft bought Mojang.
I know this is probably not as easy as it is in my head, but doesn't xbox have a .net runtime? It would completely take away the portability aspect, but if the original 360 port was handled in house I could totally see them using that weird Java on .net thing in at least some capacity
Bedrock has much better performance so it was used for consoles, but there were already hundreds of thousands of mods for Java edition, thus the split.
Bedrock does have better performance but it is also hella buggy and unstable.
And also it has worse performance than Java if you just install a basic optimization modpack like Adrenaline on Java, which many players do. There's effectively ~zero reason to use Bedrock if you're on PC.
Yes it is. The lack of mods was already a dealbreaker for me, though.
Geyser sounds very interesting especially if you know some or all players wouldn't be willing or perhaps able to play Java Minecraft and so they have to run Bedrock, but some would play Java and they'd enjoy being together.
Java Minecraft is just a better toy, I'm not altogether sure it's a better game, depending on how you define game, but it's a better toy because it's so flexible. I assume Geyser can't magically donate much of that flexibility to a Bedrock client, but if the players can co-exist then that's a boon in itself.
Aside from being more flexible they are mostly the same game. The original excuse for bedrock was that Java was slow and a native game would render much better, it was also easier to put shaders in a a native codebase. But Java edition is pretty performant nowadays and computers also got much more stronger than the game became heavier
As far as I can remember the origins of Bedrock are the original console releases which couldn't ship a JVM. So a whole new codebase was developed, and ultimately it was more performant as it had to run on 7th gen consoles.
Console releases were done by a different studio originally, 4J Studios. Bedrock spawned from the mobile ports, and eventually replaced the console editions and had different features.
Java edition still horribly underperforms. It’s mostly single-threaded and even if they’ve rewritten the lighting engine a few times (those decade old black-block bugs disappeared), the Sodium family of mods show you how much it can be improved.
Sure, but the fact that you can just install Sodium completely obviates the need for the Bedrock version to exist at all.
My main advice, ignore all advice online about JVM tuning minecraft. It's dated and often just wrong.
The best thing you can do is run on the latest JVM, set your max memory as high as you can tolerate, and use ZGC. That's it.
The JVM tuning guides for minecraft will have you switching and toggling every JVM flag under the sun with extremely dubious "evidence" of the payout for the flags they switch. In some cases, they will set contradictory flags. For example, setting eden size and target pause time. The fine tuning flags disable the heuristic flags like target pause time.
KISS. ZGC has very low latency and the larger the heap you give it the less it'll slow things down (though, do keep it under 32gb. Object header compression works on heaps less than 32gb). And using the latest JVM reduces the memory needed and increases the performance in general of the JVM. Win-win.
It did used to be required. Older Java versions performed pretty terrible. However, Java 17+ completely fixed that. Even the heaviest modded setups run buttery smooth, even on older versions which are not well optimized.
It really wasn't and was always dubious.
A lot of the advice, for example, suggested using CMS. Which has been a terrible garbage collector almost since it was added to the JVM. When G1GC landed in 8, that was the correct GC to select for minecraft. Even the parallel collector would have been a better option than CMS in a lot of cases (sub 4gb heaps).
It was placebo. People wanted there to be SOMETHING that made things better so they reached for the billion different flags on the JVM (rather than fixing the underlying code). I've seen the same sort of mentality professionally and it's basically always been wrong.
> rather than fixing the underlying code
There's not much you can do to fix the underlying code if the language doesn't allow you to declare a struct Vector3 { float x, y, z; } without heap-allocating it.
Yep, once people discover the multitude of JVM flags the cargo culting begins...
It really applies to anything with a huge number of options, I remember similar things from back when I used Gentoo and the wild suggestions I'd get for what exact CC/C++ compiler options to use...
It was more like Minecraft code was horrible, than anything else.
Creating objects like crazy, range for in hot paths, not caring about data representation, chosen algorithms,....
JIT and GC were already doing heroic efforts.
Yet, it settled Notch for life, which is something to take into account in the usual question regarding which technical stack for games.
For sure. The tech only needs to be good enough to support the game design. For some games that means very high optimisation is needed, and for others it's enough that the screen can refresh before the user gets tired of waiting.
Minecraft 1.7.10, covered in mods, can run fantastic (300+ FPS) if Java 25 is used. That used to be impossible.
Thanks to the Gregtech New Horizon folks.
Yeah at the time it was bad. Now, it's a pretty nice codebase
Do not set the heap size to more than 8GiB, even if using heavy modpacks. Anything above 8GiB actually makes the game run worse, unless you have tons of players, because of GC lag.
It depends on the GC, with ZGC no. Particularly if you enable generational mode.
For other GCs like G1 and the parallel collector, when new gen is filled up the GC pauses the application in order to run a minor collection. For G1, major collections are ran in the background until the heap fully fills up. When that happens, the GC triggers stop the world GC.
A smaller heap size would cause those pauses to be more frequent but because the heap is smaller it means that ultimately the pauses will be limited in length.
ZGC is different. Without generational mode, ZGC is collecting the entire heap every time with it, ZGC will do the young old collections.
When a collection is triggered, ZGC flips a field to indicate a collection in progress, that flip is the only pause for the application under zgc (except the case that the heap fully fills) it typically finishes in microseconds. Once collection starts, the ZGC collector threads and the in progress application are running collections. The size of the heap really doesn't change much other than the background collection could last longer (slowing down the server, but not totally stopping it from being responsive).
The payment you make with ZGC is that you do burn more CPU cycles doing collections especially while the app is running. But for a game server, that hardly matters. What matters is that the server remains responsive in a timely fashion, which ZGC enables.
I don’t believe this is exactly how g1 works.
- It is divided into by default 2048 regions so it will be setting region size to 4mb means with an 8gb heap, and that you’ll get an inefficient collection once you have a 2mb+ object to deal with. So there is a value to setting a bigger heap size to get a bigger region size. The max is 32mb region size then after that iirc the region count bumps. https://docs.oracle.com/en/java/javase/17/gctuning/garbage-f...
- The young gen size also something that resizes dynamically and so having a bigger max heap will let that get larger and avoid pressure and promotion of objects that would otherwise just never get promoted in the first place (stop the world to move from new to old gen). I’ve never seen this stated anywhere I can think of but believe that I’ve observed it many thousands times.
- The reason that a Full GC occurs is because the application allocates too many objects that can't be reclaimed quickly enough, this isn’t just something that is always happening in the background , I would call full gcs a tuning problem, not everyone agrees in a given org fwiw, but I’ve been able to tune them out for nearly all workloads. https://docs.oracle.com/en/java/javase/17/gctuning/garbage-f...
TLDR , as long as I have enough ram for the working set (page cache etc) I’ve had good luck cranking g1gc very high in prod and avoiding long collection times all together. You see other large deployments do similar (was big in the Cassandra space back in the day, Instagram off the top of my head was running very large heaps with g1gc before anyone else I knew of).
> I don’t believe this is exactly how g1 works.
Everything you've posted is accurate but I also don't believe it contradicts what I said. I certainly simplified and I'm not suggesting G1 is a bad GC, it's one that we often use. I just think ZGC is better for the job of a game server.
G1 is an excellent GC if your application can tolerate periodic 50ms latency spikes (most applications can). My argument is that specifically for a game server, ZGC is better. That's because game servers typically have more than enough CPU horse power and added latency is detrimental to the experience. So trading off more CPU usage due to GC is a worthy tradeoff vs the added latency spikes.
8 GB is simply not enough for most modpacks, at least the 200+ mods one. I know, I've tried, although it was years ago. You run at consistently 95% GC usage and get constant, very heavy, collections because of it. Like every second you get lag spikes due to GC pressure. And because of the usage these look to be full collections, which are stop-the-world last I checked.
This was ~5 years ago, so I'm sure it's gotten better. But not that much better 8gb would cut it, either client or server side.
I would generally not call modpack that runs well on 8gb heavy
Set JVM heap to half available memory. Mincraft is very much the kind of appication that benifits from filesystem cache to help with loading chunks.
Also if for some reason you are setting the heap size high avoid going past 32 gb unless you tune object alignment. Allocating between 32 and 47 gb will result in an effectively smaller heap. Allocating more than 32 gb can result in performance penalties.
Wow. When I played Minecraft, 1GB was enough and 4GB was a lot. I know that since 1.8 Microsoft rewrote large parts of the engine to make them less efficient and more ivory-tower, but I didn't know it was that bad.
We're talking for servers, which almost always means modded (even if only server side mods like the bukkit family). Pretty common for servers with more than a dozen people to be running heaps in the 8-16GB range. And one reason for the "large" size is that they can often run with a lot less but when memory isn't that constricted you can tune for smaller GC pause times
This was more a hasty response with modding in mind to the parent comment of "set it as high as you are comfortable with." There are limits to how high you should go. If you are running vanilla you may not need to set the heap to 50%. Anything past 50% or 32 gb isn't a great idea generally.
FWIW I still run a server for 5 people with 2GB ram and the performance is fine.
Go to https://minecraft.wiki/w/Tutorial:Setting_up_a_Java_Edition_... for how to create a vanilla server for Minecraft Java edition (which is the best version, but is only on Windows and MacOS and Linux, unlike the significantly inferrior bedrock edition, which is way buggier but is avalible elsewhere).
If you need more performance, install [fabric](https://fabricmc.net/) and then install [lithium](https://modrinth.com/mod/lithium), but do not use mods like paper or spigot or purpur as they will mess up farms.
And less capable as one is limited by the official extension points, instead of the anything goes with bytecode manipulation.
I assume you mean bedrock edition, but you did not specify.
Yes, the inferior edition.
The edition of Minecraft on phones/tablets/etc is more locked down and limited than Java, so unfortunately your options might be somewhat limited (though not impossible).
I have run a Docker Minecraft Server (itzg/docker-minecraft-server) for years and it's been rock solid. Best part is not having to install a lot of dependencies, the image just does it all. I think they also have a Bedrock Edition server but I never got it working right (see above).
You'd need everyone to run the Java Edition on Windows/Mac/Linux systems if you want to do it with the least amount of pain. Otherwise, people are just paying for "Realms" which are hosted servers.
Bedrock has always worked fine for me. That’s how I’ve self hosed for my kids.
Most comments here ignored the kids’ preference to play on the iPad. With that in mind, you may want to check out the Realms offering. I believe you get a 10 user server for ~$7. Note that is also highly fragmented, and there are different realms subscriptions for Java and Bedrock and also different tiers.
Depends on what your goals are with the family server, Realms may not be a good fit at all. But in terms of getting kids playing together simply and quickly, it’s the easiest way to go.
As a side note, I know kids who switched to Java after years of insisting only on Bedrock and sorely regretted not making the move much sooner. This is part of growing up these days.
I've been admining our family minecraft servers for about 5 years, and just handed off that job to my 12 year old daughter who now knows more than enough of the linux command-line to do it. I thoroughly recommend it, it's been great!
There are many ways to get it done. What worked best for us was choosing java over bedrock, renting a cheap linux vps, and writing some very simple shell scripts for starting, stopping, changing worlds, etc. Happy to talk you through anything you get stuck on!
If it’s a problem you’re willing to solve with money and don’t want any special stuff like mods, you can pay for a server with Realms and then you don’t need to think too hard about it.
But the canonical way to do it that is both free and infinitely customizable is to host your own server. It’s pretty straightforward to do these days. However, before you do, I would suggest playing the game a bit to understand what the settings are/mean. You and your kids could play together a bit on a Realms server or a community/public server to get a feel for what you want in a custom server.
A couple of weeks ago I set up a server this way to help get my fiancee into video games. I already owned a proper Minecraft PC license from way back in the day, and bought Minecraft on Android for ~$5. My thinking is that we could play together, me on a Mac and her on a Galaxy Tab we have with a controller. Attempting to get these two clients to play together is what led me into the same situation you are about to find yourself in.
Something to know is that there are two versions of Minecraft, Java and Bedrock (C++). Some others in this thread have talked about the history of why this is, but the important thing to know is that Java runs on Mac/Windows/Linux, and there are some neat launchers that can run it on Android. Bedrock runs on Consoles/Tablets/Phones/Windows. Note that Bedrock _does not_ run on Linux or Mac.
There are ways to host Bedrock-only servers if you're _sure_ no users will ever be running the Java client, but I would recommend running a Java server with the Geyser and Floodgate plugins for compatibility reasons. The plugins are a translation layer that trick Bedrock clients into thinking they're connecting to a Bedrock server. I've been playing this way (me on Mac/Java, her on Android/Bedrock) for two weeks with no real issues. I haven't explored adding any other plugins to the server.
I'm running this in a container on an old Thinkpad in my office. This setup is common enough that GLM-5.2 set it up in (nearly) one shot.
I also really recommend running an instance of https://bluemap.bluecolored.de/ in another container on the same machine. It hosts a neat map of your world, which your family could pull up on their phones while not playing. My server itself is LAN only, but I used a Cloudflare tunnel to host the map so she can show her friends: https://mcmap.thg3.net/
Let me know if you have any questions or would like my server config!
In case you aren't aware, bedrock and java are both part of the same license and can both be played freely in the launcher. Also, while desktop GNU/Linux can't run bedrock, android can, and that has been exploited to allow for actual desktop linux clients for bedrock
I'm aware that if you buy Minecraft proper (~$30) you have a license for Bedrock and Java, but I'm a little blurry on what license you get when you buy Minecraft from the Google Play store (~$5). I'm assuming it's a Bedrock-only license, and Microsoft makes money off selling skins etc.
I think most seasoned players, technical folks, or Mac users, would prefer Java. Java Minecraft doesn't have microtransactions, skinning your character is a matter of changing a file, and the plugin/mod support is huge. That's why I stuck to treating the server as "Java first, Bedrock supported" instead of ignoring Java and only playing Bedrock.
The license is tied to the platform (for the most part, there have been ways to run Java edition on android forever), so if you bought the android version you only have whatever's available on android.
I brought up the bedrock/java bundle deal with the PC version since the main advantage of Bedrock is the crossplay. If you want to play with someone on (for example) android, you can simply choose to launch into bedrock on PC for multiplayer
Correct me if I'm wrong, but what you're describing is client-hosted Bedrock servers, not a persistent, always available, self-hosted server. AFAIK connecting to a friend's world in Bedrock is free, but they must also be online. Hosting a persistent Bedrock server is a paid feature (Realms).
Additionally, highlighting that Bedrock Minecraft is not supported on Mac.
There are surely other ways of enabling multiplayer Minecraft for a family than what I've described, but this is the way I'd recommend.
Correct. There are ways to host bedrock servers, it just isn't as easy and most people are better served by realms.
Also, I thought you could play the iOS version on Mac. Doesn't apple let you run iPad apps on macOS?
Unfortunately, Apple made the decision to have that be an opt-in flag for developers, and so the vast, vast majority of iPad apps don't allow themselves to be used on macOS.
I recently did this so the kids and their friends could all play together. I ended up running the paper minecraft server on one of our home linux computers. It runs the java version but this is ok as there is a mod for bedrock to connect to java. I set it up so that the service starts every time the computer boots up so they dont have to run anything to start it. Then once you have it running and open the appropriate ports on your router, technically anyone with a valid java version can connect. But now its time to install 3 mods. geyser, floodgate and via version so its easier for everyone to connect from bedrock on tablets and on versions that are too high while your server is a version behind. As of writing this paper server is still stable on 26.1 not yet to 26.2.
[0] https://modrinth.com has a bunch of mods the kids have enjoyed as well.
I just run the server off of the fastest laptop and one of them also uses that machine to play and lock it all down with tailscale. Honestly probably not worth the effort when the java edition allows them to play together over the wifi network out of the box. Have not found a solution I like to open up to other kids at school.
If you want to selfhost and use docker for Java edition, this is the easiest way:
https://github.com/itzg/docker-minecraft-server
There’s also a version for bedrock (the version that’s supported on mobile devices).
I've been running this[0] for a few years now, moved it a couple of days ago to a portainer VM on proxmox with 6GB ram, its running perfectly fine for 3 of us, and works fine from tablets and PC.
Can also run on the nintendo switch if you setup a cname to redirect to your server IP, i.e: mco.lbsg.net x.x.x.x play.lbsg.net x.x.x.x
Then choose the "Lifeboat" server
[0] https://jamesachambers.com/minecraft-java-bedrock-server-tog...
Minecraft realms aren't as powerful as a server but if you are doing Bedrock to support iPads then it is certainly the easiest way to do it.
I run it on fly.io quite well
https://pdx.su/blog/2024-07-08-running-a-minecraft-server-on...
Minecraft servers are resource hogs even when idle. Enable the built-in idle server shutdown (IDLE_SERVER=true). It automatically stops the server after a few minutes with no players and starts it again when needed. It's not enabled by default.
I'm struggling to find documentation on `IDLE_SERVER`, do you know of any? The only place I see it documented is on ArchWiki [0], but I don't know if that is an Arch distribution specific feature.
I do see `pause-when-empty-seconds` [1] when looking at the wiki, which seems the closest, although I can't find doc on what "paused" means (this is the closest [2]). Looks like a fairly new feature (2024), but it's neat they've thought about it.
[0]: https://wiki.archlinux.org/title/Minecraft/Java_Edition_serv...
[1]: https://minecraft.wiki/w/Server.properties
[2]: https://www.reddit.com/r/admincraft/comments/1k330eg/what_ha...
You might be right: I am indeed using https://aur.archlinux.org/packages/minecraft-server. I thought IDLE_SERVER was an upstream feature but it seems to part of that package's management script.
> I don't know if that is an Arch distribution specific feature.
That's unlikely for two reasons, first because minecraft is closed source, and second because arch packages usually follow upstream very closely.
Based on my read of the `minecraft-server` package [0], I think it is using a management script wrapper around the raw Minecraft JAR [1], which implements the aforementioned idle functionality [2].
[0]: https://aur.archlinux.org/cgit/aur.git/about/?h=minecraft-se...
[1]: https://github.com/Edenhofer/minecraft-server
[2]: https://github.com/Edenhofer/minecraft-server/blob/421ff0ff3...
that's not arch specific per se but touche
Luanti with Mineclonia plug-in works well if you are willing to move entirely to Mac/Windows/Linux clients. The whole stack is open source so it's easier to make changes etc if you want. No hacky binary patching of Java bytecode. Originally I was going to try Minecraft proper first since I'd already paid for that, but Microsoft doesn't honor old licenses and in the end the Luanti path probably works better.
https://content.luanti.org/packages/ryvnf/mineclonia/
I love Luanti. Is it as good as minecraft? No, not really, but I appreciate it's existence, if not for a non-hacky BSD minecraft experience (You can run java edition on *BSD from what I've seen, but ymmv as I've personally never tried)
For our purposes it has the mining/crafting/construction bits the kids care about so in that dimension there's no difference. From my perspective it's been simple to operate, and having all the source makes a good base for building tools and mods (some new pet/creature entities, simplified launcher, screenshot tools).
GeyserMC will be your friend if using Bedrock and Java.
But the big thing is that community is a little all over the place. I use ChatGPT to walk me through everything to securely set up a couple of servers. Kids love it.
Most chatbots will be smart and recommend things you need for permissions, rollback, backups, and most importantly, whitelisting. For giggles I left an unprotected Minecraft server up on the default port of my residential IP and the thing was griefed to heck within days. The griefers were just griefing other griefers.
I've been on this journey! I am definitely not doing it the easiest way, but I've got it deployed on Kubernetes with https://github.com/itzg/minecraft-server-charts and then use prism launcher on my kids computers to get the versions to match up and stuff. I also use automodpack so I can install some quality of life mods on the server and they'll just sync to the clients.
I run the itzg Docker Image behind a Wireguard VPN, all hosted on an embedded board (a armbian powered Radxa 12L with 16 GB Ram).
So far so good, we have an offline server, so even if the Microsoft Server is down, we can play (we use PolyMC on PC with offline accounts as well, for the same reason). By default, new users are in "spectator" mode, so they can't do anything without an activation from admin.
Friends get Wireguard QR codes, periodically we rotate them.
Docker compose + systemd, automated backups (bonus points for coordinating with restic/borg + rsync cronjob), and ram disks. Ram disks in particular are a game changer for game feel. For the backups you'll need to leverage a feature that exports the world. This used to need to be a mod, but it's possible it's been folded into vanilla.
https://pufferfish.host/ they have the most powerful and easy to use panel.
Genuinely, install Ubuntu Server Edition into an old computer, set up SSH then tell Claude Code the account and IP for login.
You can ask if to set up damn near anything you want and it'll do it.
If you're using a laptop make sure it disables all of the sleep on lid close stuff, as well as other laptop-specific power optimisations.
A VPS would work too if you want something always available with a datacentre network connection.
Absolutely this. I had installed wekan for a home chores kanban board on a $5 vps and had spent several hours trying to get the proxy working to make it externally reachable, and then I did this. Well, I used grok build to evaluate it, but I just told it where to ssh, and in about 10 minutes it was working, security was configured properly, backups were set up, etc. all of those post install things that I might never have gotten around to for a simple home setup.
You can actually host a server for bedrock https://www.minecraft.net/en-us/download/server/bedrock The version that mobile and console uses and that in PC you can choose
I'm surprised no one mentioned https://github.com/pumpkin-mc/pumpkin in this thread. It's the fastest Minecraft server implementation and it's written in Rust.
If you decide to do mods, you can make your life much, much easier by using a launcher. I use Prism, but I haven't looked for anything new in the last few years so it's possible there are better options now.
Also, find a world backup solution and use it.
I run a docker image with the Java server and GeyserMC to allow Bedrock clients to connect to it so my son can play from my iPad while I use my computer.
If they’re playing from MacOS/Windows then the GeyserMC layer isn’t necessary as they can run the Java client.
The server is simple, theres plenty of docker examples online. Cross play between bedrock and java edition, and connecting to custom servers on eg switch is the harder part. And using linux as a client is more advanced.
I tried running my own but it turned out to be more complex than I was expecting (and desiring). I ended up paying a bit for a hosted server at ShockByte.
My son setup a minecraft server on a mac mini using claude, was pretty smooth. If your kids just use it in house you do no need to worry about security issues. In my case I did create a dedicated user account for the server.
BAD ADVICE. LIKE, REALLY BAD ADVICE. Many a dumb kid has set up an ill protected minecraft server for fun and gotten ddossed by skids only a few hours later
Just run the either the Java or bedrock server as a docker container. There’s good community-maintained containers out there.
Are all of your family playing on Bedrock edition? There is a version split between console editions (plus some Windows users) and the original Java edition, with most of the (verbal?) online community playing on the latter.
If you are not all playing on the same edition, you can use something called GeyserMC (https://geysermc.org/) to allow Bedrock players to join your Java server.
Modding your server can greatly improve your server performance. Java is the platform with the best modding support. The modding APIs are however community built, due to historical and upsteram reasons. The subjectively best API for development (in my opinion) is Fabric (https://fabricmc.net/), but many older mods have only targetted Forge. Due to a split in the Forge development team, this API was recently superceded by NeoForge (https://neoforged.net/). Most relevant mods support both Fabric and NeoForge.
To explore mods, I would recommend using Modrinth. It has a pleasant and powerful interface, and links to source code on open source mods.
https://modrinth.com/
Here is a search filter for an overview of server-side optimisation mods:
https://modrinth.com/discover/mods?g=categories:fabric&l=ope...
To set up your Minecraft server, I would recommend NixOS (https://nixos.org) for devops with nix-minecraft for server configuration:
https://github.com/Infinidoge/nix-minecraft
Feel free to ask clarifying questions if you have any, I might have written this somewhat compactly!
I had Claude code do this for me last night. Setup the whole thing in about 10 minutes with directions on connecting
I ran geyser with paper for years.. now I pay for 2 realms, and it's so much easier for them and their friends
I run the crafty controller Docker container on my unraid machine and it's easy and pretty hands off.
Just buy a Realm subscription from Mojang.
I ran a private server for my kids for a while and it was a huge headache. Bedrock is purposely made to not make it easy to DIY. It was difficult for their friends to join, everyone was mad when it was down when they wanted to play, and I had to take great care to not lose their progress.
Paying for a Realm doesn't scratch that DIY itch, but your kids will actually get to enjoy playing, which is really the point, isn't it?
Alternately, run a Java server and use the Java-to-Bedrock plugin / proxy / adapter.
No joke serious - play GTNH. You can turn off the mobs if needed and the quest book is phenomenal and the feeling of accomplishment is real.
And you can stay in steam forever if you wanted.
i did this and it’s so worth it.
just get everyone on java. i play on my framework laptop, my wife on her mac and my son on a steam deck.
Minetest?
docker run itzg/minecraft-server:latest
itzg has OCI container images and kubernetes helm charts
https://itzg.github.io/docker-minecraft-docs/
I used a Docker image. Good enough as is for LAN usage. I assume it could be exposed online with a Cloudflare tunnel but I wouldnt trust it to not be hacked. Docker may also make it harder to customize (install mods).
[dead]