Today I finally finished setting up my Minecraft server.
今天,我的 Minecraft 服务器终于搭建完成了。
The server runs Minecraft Java Edition 1.21.11.
At first, the goal was simple:
Let a few friends join the same world.
Naturally, this simple idea quickly turned into Linux, Docker, port forwarding, plugins, cross-play, permissions, skins, backups, and several hours of wondering why something that worked five minutes ago had stopped working.
这类项目最经典的地方,就是每解决一个问题,系统都会很礼貌地再送你两个。
The server is based on Java Edition.
But I did not want it to be limited to Java players.
So I added Geyser and Floodgate.
Geyser translates the connection between Minecraft Bedrock Edition clients and a Java Edition server.
Floodgate allows Bedrock players to join without needing a separate paid Java Edition account.
The result is one world that can be entered from both editions.
Java players can connect normally.
Bedrock players can also join the same server.
电脑玩家可以选择使用 Java 版,也可以使用基岩版。
安卓手机玩家同样有两种选择。
They can play the native Bedrock Edition.
Or they can run Java Edition through an Android Java launcher.
MJ is a decent option for this.
苹果设备就没有这么自由了。
iPhone and iPad players are basically limited to Bedrock Edition.
Apple remains deeply committed to protecting users from the dangerous freedom of running whatever software they want.
The server also uses several plugins and supporting tools.
The important ones include:
- Geyser
- Floodgate
- A skin plugin for offline-mode players
- TPA and basic player utility permissions
- Server management and backup tools
- Performance and compatibility adjustments
The server runs in offline mode because not everyone uses an official Java account.
That created another problem:
Player skins.
Without extra handling, offline players often appear with the default skin.
So I added a skin plugin and configured custom skins for the server.
这部分看起来只是换个皮肤。
实际折腾起来,却很像在给一个身份系统补办户口。
The server is mainly used for building and survival.
Most of the time, fewer than three people are online.
So the goal was not to build a giant public server.
It was to create a small private world that works reliably across different devices.
The server currently supports:
- Java Edition on Windows
- Bedrock Edition on Windows
- Bedrock Edition on Android
- Java Edition on Android through a compatible launcher
- Bedrock Edition on iPhone and iPad
Everyone connects to the same world.
The underlying server is still Java Edition.
Bedrock support is provided through the translation layer.
This means the two editions are compatible enough to play together, but they are not completely identical.
Some interfaces, movement details, item behavior, plugin features, and visual effects can still differ between Java and Bedrock players.
跨版本互通不是魔法。
It is a very impressive collection of translation, compatibility work, and carefully hidden problems.
The server is now publicly reachable through my home network.
I already had a public IPv4 address, so I configured port forwarding on the router and exposed only the required game ports.
The machine running it is my Ryzen 5 2600 home server.
It also has 16GB of memory, a 1TB SSD, two 8TB hard drives, and an RX 6600.
For a small Minecraft server, this hardware is more than enough.
The real difficulty was never the CPU.
It was configuration.
After Docker networking, server properties, plugins, permissions, cross-play, skins, and router settings were finally working together, the server became stable enough for normal use.
Now my friends can join from computers or phones.
Java and Bedrock players can build in the same world.
安卓玩家甚至可以根据心情,在基岩版和 Java 模拟器之间来回折腾。
苹果玩家则继续老老实实使用基岩版。
The server is not perfect.
There are still plugins I want to test, performance settings I want to improve, and backup plans I want to make safer.
But it works.
And for a project that began with “I just want to open a Minecraft server,” that is already a surprisingly large achievement.
⛏️🟩