Minecraft Bedrock Edition is the version of Minecraft that powers the iPhone / Android versions (formerly Minecraft Pocket Edition), the Xbox / PlayStation / Nintendo Switch editions and the free Windows 10 Minecraft edition.
Mojang has released a dedicated server which is considered to be in alpha testing. I have found it to be very stable and able to run on a wide variety of hardware.
This script and guide are written to help you get a robust Minecraft Bedrock dedicated server up and running in only a few minutes!
This is the standalone version. The easiest and most problem-free way to run this is using Docker (installed as simply as sudo apt install docker.io): Legendary Minecraft Bedrock Container
I’ve also released a way for Java and Bedrock players to play on the same server using Geyser: Minecraft Java + Bedrock Server Together – Geyser + Floodgate
It’s now possible to convert your worlds between Bedrock and Java versions. Check out my guide on Chunker here for more information.
Features
- Sets up the official Minecraft Bedrock Server (currently in alpha testing)
- Fully operational Minecraft Bedrock edition server in a couple of minutes
- Ubuntu / Debian distributions supported
- Sets up Minecraft as a system service with option to autostart at boot
- Automatic backups when server restarts
- Supports multiple instances — you can run multiple Bedrock servers on the same system
- Updates automatically to the latest or user-defined version when server is started
- Easy control of server with start.sh, stop.sh and restart.sh scripts
- Adds logging with timestamps to “logs” directory
- Optional scheduled daily restart of server using cron
Requirements
- A computer with a 64 bit processor (if you are trying to use ARM read my article on the limitations). 32 bit binaries of the official server are not available so it needs to be 64 bit!
- 1 GB of RAM or higher
- The only officially supported platform by Microsoft is Ubuntu 22.04 / 20.04 (current LTS, recommended)
- Other Linux flavors supported by this script as well as long as they use systemd (for the service). The script assumes apt is installed but there are minimal dependencies so you could install these on another distro (that doesn’t have apt present) and use the script normally.
Recommended Gear
Game Editions
Minecraft: Bedrock Edition is the “Windows 10” version of Minecraft as well as the version of Minecraft on the Xbox / Playstation / Switch. The versions of Minecraft for Android and iOS are also the Bedrock edition.
All of these versions support cross-platform play with each other (but not with the Java edition).
This is the PC Minecraft for Windows 10 (Bedrock) edition of Minecraft. It is able to play cross-platform with other players on Android / iOS / Playstation / Xbox / Switch. Available as a code that is instantly activated to give you permanent access to the game!
Links: Amazon.com*, Amazon.co.jp*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*
The Sony PlayStation version of Minecraft: Bedrock edition.
Links: Amazon.com*, Amazon.ca*, Amazon.com.au*, Amazon.co.jp*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.nl*, Amazon.se*, Amazon.sg*
This is the Nintendo Switch version of Minecraft: Bedrock edition.
Links: Amazon.com*, Amazon.ca*, Amazon.com.au*, Amazon.co.jp*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.nl*, Amazon.pl*, Amazon.se*, Amazon.sg*
This is the Microsoft Xbox version of Minecraft: Bedrock edition.
Links: Amazon.com*, Amazon.ca*, Amazon.com.au*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.nl*, Amazon.sg*
Recommended Storage (Solid State Drive)
I strongly recommend a Solid State drive (SSD) for your server. This is because Minecraft is constantly reading/storing chunks to the disk which makes I/O performance very important.
These are much cheaper than they used to be. Here’s a decent 120 GB one (higher capacity options are available) at a very low price:
The Kingston A400 is reliable, widely available around the world, has low power requirements and performs very well. It’s also very affordable. This drive has been benchmarked over 1000 times at Pi Benchmarks and is the #1 most popular SSD among the community!
Links: AliExpress*, Amazon.com*, Amazon.ca*, Amazon.com.au*, Amazon.co.jp*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.nl*, Amazon.pl*, Amazon.se*, Amazon.sg*
If you have a M.2 NVME slot in your motherboard you can go with a high end drive. This will give your server maximum performance even if a large number of players are running around on the server changing blocks and triggering disk writes.
This is the one I have in my machine. These range from 250 GB to 2 TB depending on how big your server might grow:
The Samsung 980 Pro (NVMe) is a professional grade SSD and one of the fastest in the world. The Samsung NVMe drives have been at the top of this category for a long time and are well trusted for both their performance and reliability / long life.
Links: AliExpress*, Amazon.com*, Amazon.ca*, Amazon.com.au*, Amazon.co.jp*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.nl*, Amazon.pl*, Amazon.se*, Amazon.sg*
Computer / CPU / Memory
Almost any PC made in the last few years will be a x86_64 bit computer. If you have an older computer around that isn’t being used then it will most likely have the right CPU and amount of memory (as well as fast storage) to run a basic server.
Throwing a SSD in one of these older computers will provide an excellent server experience for small and larger player counts.
The speed of your storage will make the largest difference. Older HDDs are going to have significantly slower performance than any modern SSD even with all other hardware equal. This is because the Minecraft server is constantly reading/writing chunks of your world as well as updates to it to the disk so this tends to be the bottleneck.
Operating System
I highly recommend using Ubuntu Server to run the Minecraft dedicated server. It is available here.
At the time of writing the current version is Ubuntu Server 20.04. This is a secure and robust operating system and will leave plenty of resources available for the server to run.
The script should run on any Debian based flavor of Linux but since the Minecraft Bedrock server is compiled natively for Ubuntu I recommend sticking with it. If you have a GUI flavor of Ubuntu and a decent PC (>= 2 GB of RAM) the server will work just fine on it.
Note: People have reported in the comments that Ubuntu 16.x is no longer working with the latest official Mojang binaries. Ubuntu 18.04 is the minimum requirement for the latest versions, and 20.04 is recommended!
Installation
Log into your Linux server either using SSH or a mouse and keyboard and paste/type the following command:
curl https://raw.githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh | bash
The script will setup the Minecraft sever and ask you some questions on how to configure it. I’ll explain here what they mean.
The first question will be the installation path. This is the root installation path for ALL servers you will have. If you add additional servers later you should select the exact same installation path. It should always be left as the default (~).
The only exception is if you have something like a completely dedicated disk for the Minecraft server. In that case you should always use the same root path of /mnt/yourdrive or wherever the path is for every new/additional server you install.
“Start Minecraft server at startup automatically (y/n)?” – This will set the Minecraft service to start automatically when your server boots. This is a great option to set up a Minecraft server that is always available.
“Automatically restart and backup server at 4am daily (y/n)?” – This will add a cron job to the server that reboots the server every day at 4am. This is great because every time the server restarts it backs up the server and updates to the latest version. See the “Scheduled Daily Reboots” section below for information on how to customize the time or remove the reboot.
That is it for the setup script. The server will finish configuring and start!
First Run
The server will start up and start displaying output to the console.
[2019-03-30 20:25:12 INFO] Starting Server
[2019-03-30 20:25:12 INFO] Version 1.10.0.7
[2019-03-30 20:25:12 INFO] Level Name: Bedrock level
[2019-03-30 20:25:12 INFO] Game mode: 0 Survival
[2019-03-30 20:25:12 INFO] Difficulty: 1 EASY
[2019-03-30 20:25:20 INFO] IPv4 supported, port: 19132
[2019-03-30 20:25:20 INFO] IPv6 supported, port: 19133
[2019-03-30 20:25:23 INFO] Server started.
Once you see the “Server started” line you will be able to connect from the client.
To add the server to the client open Minecraft and click “Play”. Then at the top of the screen select the “Servers” tab and click “Add Server”.
This will ask you for a Server Name and Server IP Address. For the name you can put anything and for the server IP address put the address of your Linux server. Leave the port as the default 19132. For more information on how to let people from outside your network on go to the “Port Forwarding” section below.
Now choose the server you just added in the list and connect!
Start, Stop and Restart Server
The server can be started, stopped and restarted two different ways. You can use the provided scripts in the Minecraft folder or you can use systemctl. Here are the commands:
cd ~/minecraftbe ./start.sh ./stop.sh ./restart.sh -OR- sudo systemctl start minecraftbe sudo systemctl stop minecraftbe sudo systemctl restart minecraftbe
Automatic Backups
The server backs up each time it starts. This helps you recover easily if something goes wrong. This system works best if you configured the server to restart daily since it means you will have a backup every day.
To access these backups type:
cd ~/minecraftbe/backups
ls
When a backup is made the filename will be the date and time the backup was taken. If you need to restore a backup it’s very easy. Substitute the timestamp in my example to the backup you want to roll back to. Type:
cd ~/minecraftbe ./stop.sh rm -rf worlds tar -xf backups/2019.02.15.22.06.30.tar.gz ./start.sh
Your world has now been restored! It’s a good idea to download these backups off the server periodically just in case the server’s storage fails.
Installing Resource Packs / RTX Support
For instructions on how to install resource packs (including optional RTX support) view my step by step Minecraft Bedrock Dedicated Server Resource Packs guide here.
Scheduled Daily Reboots
The daily reboots are scheduled using cron. It’s very easy to customize the time your server restarts.
To change the time that the server restarts type: crontab -e
This will open a window that will ask you to select a text editor (I find nano to be the easiest) and will show the cronjobs scheduled on the server. The Minecraft one will look like the following:
0 4 * * * /home/ubuntu/minecraftbe/restart.sh
There are 5 fields here. The default restart time is set to reboot at 0 minutes of the 4th hour of the day (4 AM). The other 3 fields are left as * to represent every day of every month. Make any desired changes here and press Ctrl+X to exit nano and update the cronjob.
To remove the daily reboot simply delete the line and save.
Reconfigure / Update Scripts
The scripts can always be reconfigured and updated by downloading the latest SetupMinecraft.sh and running the installer again. It will update all of the scripts in the Minecraft directory and reinstall the startup service for you.
Running SetupMinecraft.sh again will also give you a chance to reconfigure options such as the memory dedicated to the server, daily reboots, starting the server on boot, etc.
This will not overwrite your world or any other data so it is safe to run!
Port Forwarding
If everyone on your server is on the same LAN or WiFi network as you then you don’t need to do this. If you want people to connect from outside your local network then you need to set up port forwarding on your router.
The process for this is different for every router so the best thing to do is just look at your router and find the model # and put that in google with port forwarding for easy instructions on how to do it for your specific router.
You want to forward port 19132. The type of connection is both TCP and UDP. On some routers you need to do both a TCP entry and then a second entry as UDP.
Once you do this people will be able to connect to your Minecraft server through your public IP address. This is different than your local IP which is usually a 192.x.x.x or 10.x.x.x. If you don’t know what that is just go to google and type “what’s my ip” and Google will kindly tell you!
Version Override
You can revert to a previous version with the revert.sh script included in your directory like this:
james@jamesgigabyte-linux:~/minecraftbe/james$ ./revert.sh Set previous version in version_pin.txt: bedrock-server-1.19.10.20.zip
If you have a specific version you would like to run you can also create version_pin.txt yourself like this:
echo "bedrock-server-1.18.33.02.zip" > version_pin.txt
The version hold can be removed by deleting version_pin.txt. This will allow it to update to the latest version again!
Wired vs. Wireless
Going with an ethernet (wired) connection is going to be faster and more reliable. There’s so much wireless traffic and other interference in the air that running your server on WiFi is not recommended.
Even if it is working great 99% of the time it can ruin your experience very quickly if the WiFi drops for a couple of seconds and you get blown up by a creeper!
All that being said, the server works fine on wireless. The script will work fine as is with a wireless connection.
Benchmarking / Testing Storage
If you’re getting poor performance you may want to run my storage benchmark with:
sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
PC results won’t show up on the site yet (it’s meant for Raspberry Pi) but it will run on Linux just fine and give you a score. If you search for the model of your drive on Pi Benchmarks you can compare your score with others and make sure the drive is performing correctly!
Troubleshooting Note – Oracle Virtual Machines
A very common problem people have with the Oracle Virtual Machine tutorials out there that typically show you how to use a free VM is that the VM is much more difficult to configure than just about any other product / offering out there.
It is because there are several steps you need to take to open the ports on the Oracle VM. You need to both:
- Set the ingress ports (TCP/UDP) in the Virtual Cloud Network (VCN) security list
- *and* set the ingress ports in a Network Security Group assigned to your instance
Both of these settings are typically required before you will be able to connect to your VM instance. This is purely configuration related and has nothing to do with the script or the Minecraft server itself.
I do not recommend this platform due to the configuration difficulty but the people who have gone through the pain of configuring an Oracle VM have had good experiences with it after that point. Just keep in mind it’s going to be a rough ride through the configuration for most people.
Troubleshooting Note – Hyper-V
There is a weird bug in Hyper-V that breaks UDP connections on the Minecraft server. The fix for this is that you have to use a Generation 1 VM with the Legacy LAN network driver.
Conclusion
The Minecraft Bedrock Edition dedicated server runs much better than previous third party servers in the past that were missing critical features. The performance is very good even on low end hardware. It has never been easier to set up a Minecraft Bedrock server.
If you have any feedback or suggestions let me know in the comment section. A lot of the changes and developments in this script and guide are directly from readers.
Have fun!
Other Resources
For a guide on how to set up resource packs check out my Minecraft Bedrock Resource Pack guide
If you’re trying to run this on the Raspberry Pi check out the Raspberry Pi specific guide here
For anyone having constant crash issues here, the problem may not be corruption, but rather a memory leak.
Related to that, the solution I’ve been considering in the meantime is to restart the server multiple times a day. However from what I’ve seen the current script only supports once-a-day restarts at the least. How would I go about modifying the automatic restart script to run, say, every hour hours?
Hey MaladjustedPlatypus,
That is interesting! Does it happen with a new server? It just looks like typical corruption to me. It’s likely happening when someone approaches or loads a corrupt chunk. I’d imagine you could reproduce it by having someone walk to a certain chunk.
This is extremely, extremely common. Just turning off your server without shutting it down will corrupt it forever forcing a backup restore. Even if 99% of the server is uncorrupted the second anyone approaches the area of corruption it will crash like this.
We haven’t had anyone have trouble fixing this by restoring a backup from before it started happening. It also won’t happen on a new server typically. If you’ve already tested those then this may indeed be a new bug!
I’d recommend testing with a new server to see if this happens. You’re going to have to prove that to the developers for them to even take this seriously. I wouldn’t to be honest with you without some evidence that this isn’t just a corrupt server (which it definitely looks like it is). The memory usage and all of that might be true. It might even be a bug related to handling something weird. If it doesn’t happen on a new server though then restoring a backup will fix it.
They might be totally right about the memory usage. If it’s being caused by your server data files having something unusual in them though that the server is handling wrong then it honestly hardly makes a difference whether it’s corruption or not. You will be waiting a very long time for the Bedrock team to fix it (I’ve been waiting like 3-4 years for them to fix the Bedrock multiple server port bug) and it is within your control to fix by restoring a backup. Even if it’s not technically corrupted there is something unusual in your server data files that other people don’t have in theirs. Nobody knows how it got there. Probably bugs, maybe losing power on the server while it was running. The effects are identical though either way and it’s crashing it out with whatever it is that is in there that it doesn’t like.
For this reason I suggest treating it as corruption unless you can prove that this actually is some kind of weird memory bug (which I would think would be related to the very old 4.X kernel this person was using but they said they tried with the newest LTS too, again suggesting to me this is definitely their server files, this doesn’t just happen to everyone on LTS as I personally use it and it’s the #1 recommended choice by Microsoft). If it does turn out to be an actual bug not related to your server files I would still recommend following through with the bug fix but it may take a very, very long time. In the past most people have stopped actively playing by the time their bug reports are fixed. It will surely take longer than you want to wait to resolve this (even if it is a bug and your server files aren’t technically corrupt, if it doesn’t happen with a new server it is definitely something in your server files)!
I highly recommend trying with a new server. I get the sense that both you and the original bug report individual have both tried everything but this. Even if you are positive this is the case part of your investigation will be to show it happens with a fresh server because it literally looks like every other corrupt server that has ever happened. There are hundreds if not thousands of bug reports that look just like this which is why you basically have to prove it to the developers (this is what I spent most of the time doing in my IT career, convincing engineers that problems were real by proving it and then they would gladly fix them). If this was really a thing that impacted all servers I would be absolutely buried here because similar things have happened before and I get absolutely buried every time. We’ve definitely had people get this and we were able to fix them all as far as I’m aware so far!
This has been confirmed with multiple other server owners, on various devices, using multiple different worlds. It has been confirmed on a brand need map several times. It has been confirmed on people not even running this script. It’s not a problem with this setup, but rather a problem with Minecraft Dedicated Server. It is not triggered by a specific chunk, please read the bug report for more info, but basically loading ANY chunk, even chunks you have already been in, causes a step up in memory use by a few MB. Moving and loading ANY other chunks increases that use, without the previously visited chunks being unloaded. You could even walk back and forth between the same chunks over and over to see the memory increase. Using a memory logger helps with this. Once you stand still, the memory use stops going up, but it does not go down. Eventually you hit a point where your run into your maximum memory use (or allocated use) and the server is terminated by the system or crashes, not sure on that. Again this has absolutely nothing to do with the world or corruption.
Also regardless of the cause of the issue it would be nice to know how to set up restarts to happen more than one time per day. Could I duplicate the cronjob for the daily restart and simply use a different hour? So to have a restart every for hours I would do this?
0 4 * * * /data/TRS/minecraftbe/TRS/restart.sh 2>&1
0 8 * * * /data/TRS/minecraftbe/TRS/restart.sh 2>&1
0 12 * * * /data/TRS/minecraftbe/TRS/restart.sh 2>&1
0 16 * * * /data/TRS/minecraftbe/TRS/restart.sh 2>&1
0 20 * * * /data/TRS/minecraftbe/TRS/restart.sh 2>&1
0 24 * * * /data/TRS/minecraftbe/TRS/restart.sh 2>&1
You were able to get your memory usage so high with 3-4 people on that it crashed your entire computer using up all of the available memory? On Bedrock?
Okay. I just tested this. Here’s my memory usage when logging in:
399393 james 20 0 5315360 831468 276516 S 0.0 2.5 6:27.81 firefox
9820 james 20 0 1129.0g 742268 117144 S 2.0 2.3 118:35.73 brave
8323 james 20 0 32.7g 665056 301780 S 0.7 2.0 26:10.35 brave
500574 root 20 0 2403032 642320 83328 S 7.9 2.0 1:30.44 bedrock_server
408315 james 20 0 5696932 433564 131036 S 867.5 1.3 28:46.52 remmina
Okay, looks like pretty much nothing. Usage of 2403032. Then I logged on and flew through new chunks for a while as an admin. Without logging out:
500574 root 20 0 2403032 650240 83328 S 12.9 2.0 1:58.37 bedrock_server
alright and finally after I logged off:
500574 root 20 0 2403032 651028 83328 S 1.3 2.0 2:02.97 bedrock_server
Okay. So I can confirm this is not a thing. At all. My memory usage never changed. The CPU usage changed quite a bit but the memory did not. It remained laughably low. My browser is using literally an order of magnitude more memory than the Bedrock server flying around. I didn’t lose or leak any memory whatsoever doing this on a fresh server.
I would say good luck but luck has nothing to do with it. We’ve fixed all of these that have happened. This isn’t a thing unless you have some very weird hardware issues going on for sure.
This is not happening on my computer, it’s happening on a VPS with the specs listed in the report. I reiterate. This is not just happening to me. I have personally confirmed this to happen with at least four other people, potentially 7 others. I have literally created new maps, with new seeds, and the fresh map has this same behavior. The same worlds loaded in single player when downloaded do not have ANY memory issues. As for your testing. This is a slow leak, not some sudden thing. Spend at least 10-20 minutes flying around loading chunks and log as you go or use a logger. It won’t be apparent from 10 seconds of flying. Idk what to tell you. And again, the main issue for me is not whether this bug is real or “corruption”, it’s whether it is possible to have multiple restarts in one day set up. Some people are getting around this issue by brute force, using 16GB of RAM or more so the server lasts until their daily restarts. Others I have seen restarting their server every three hours via another script. I’m not asking to be believed, I’m just asking for help with the restart script.
Hey MaladjustedPlatypus,
That helps. I believe you that something is going on for sure. I’m only saying that it doesn’t seem like it’s a bug in bedrock_server itself. This seems like something to do with the VPS setups. Was everyone using the same VPS? Can you tell me which one it is? I’ve encountered most of them at this point.
This is a totally new one for me but I really think it is something that could probably be fixed. I’m not sure what it is about these VPS servers that are causing this but there almost certainly is an answer and if the answer is not that Microsoft has to fix it that is a *very* good thing due to the reasons I outlined in previous posts. It will take forever if that is the case but everything is pointing to some sort of configuration issue somewhere.
I’m sorry, I totally forgot about answering your question about the multiple restarts and that was not intentional. I can definitely help with this. So the way the automatic 24 hour restart works is using crontab. That looks like this:
croncmd="$DirName/minecraftbe/$ServerName/restart.sh 2>&1"
cronjob="0 4 * * * $croncmd"
If you run the command
crontab
you will see this line and you can edit it. The line right now reads basically to restart at 4 am. We can change it to do it once every hour using something like this:*/59 * * * *
Once you change it save the file and it will restart every 59 minutes with that syntax.
Definitely keep me posted on this issue. I’m sorry if it came across as I don’t care or don’t believe you as that isn’t the case. It definitely looks like a tough one and seems initially to be provider related somehow. I think this is just something that can be fixed and to me filing a bedrock_server bug report is almost like giving up because that is going to take longer than you will realistically be interested in playing.
The exception to this is that if this bug is super widespread then there will be so many bug reports that it will actually break through and nothing we do here will really make much of a difference. In that case this will probably be fixed in the very next Bedrock server update.
Hopefully that helps!
Thanks, I apologize on my part as well, misunderstood your comments. My server is hosted on OVH, running Debian GNU/Linux 10 (buster), Kernel is 4.19.0-13-cloud-amd64. I’ve tested this with Linux BDS and also with Windows BDS under wine, still the same issue. The bug report has another user running this on Azure with various versions. Another user is self hosting Windows server on Windows 10 Pro Edition.
Hey MaladjustedPlatypus,
No worries at all! So we’ve definitely seen issues with Buster on here but it’s usually on the Raspberry Pi. One thing to keep in mind is that Microsoft is always changing the dependencies.
I’m absolutely baffled by some of the platforms you’ve tested this on. Even BDS under Wine is getting this issue? I can’t even reproduce it which is very strange. I understand it’s a slow leak but I didn’t leak like even a single byte of memory which even a slow leak should have changed it a little bit I’d think. Maybe it absolutely will only start happening after 20+ minutes like you were saying but I’d expect to see some evidence of this. The whole thing makes very little sense at the moment.
I’m really wondering if it’s just because all of your kernels are too old. This has happened before. Microsoft made older versions of libc no longer work as time has gone on. This would typically make all non-current releases not work and I’ve seen it happen to 18.04 and eventually 20.04 on Ubuntu as well as the transition from Jessie to Buster to Bullseye etc.
That was a completely different round of this. That was for 20.04 and I remember it. They have been updating the dependencies and like I said earlier on the Pi it will not work with Buster anymore. It’s too old but the Pi has some emulation requirements that make it come sooner for it than for PC/x86_64. It’s only a matter of time before yours is too old to run it at all and maybe we’re already there. This would be the termination of support for 20.04 / Debian 10 basically and moving to 22.04 and Debian 11 this time around.
Is upgrading to Bullseye on the VPS a possibility (even just for testing)? That’s the current version of Debian and it definitely will not have any libc issues. I wonder if it would get you on a 5.x kernel as well!
Upgrading the kernel will likely take some time due to time and knowledge constraints on my part, but I’ll give it a shot. I will note that this issue was not happening for us around the start of the year. Only really started around May or so. One of the updates around then changed the chunk generation according to one of my sources, but if that’s the cause I do wonder why others aren’t seeing this. Also in case you didn’t notice the other post of mine your (I’m assuming) RSS was increasing in that test you showed me. Not a lot, but it was. Before messing with my OS I’ll try running the server on a local PC running Windows BDS myself, then on the platform you mentioned locally. If the leak still shows for me there it should be the nail in the coffin as far as confirmation goes.
Sounds good! That is exactly when the dependencies changed. My records show:
July 14th 2022
Added over a dozen new very recently introduced dependencies -- update container with docker pull 05jchambers/legendary-bedrock-container:latest to get new dependencies
Updated from Ubuntu "Impish" to Ubuntu "Latest" base image as libssl3 is now linked in the bedrock_server dependencies
I think we may be onto something here. It took some time for me to realize they had changed (but eventually it breaks through as multiple people will start posting strange issues like this) so these timeframes match up almost precisely.
I have a tip for you that may be of assistance. You don’t necessarily have to upgrade the kernel to get it on Bullseye most likely. I think the problem is most likely in libc (as in it’s an older version than what Microsoft is linking to).
You typically just edit /etc/apt/sources.list and change everything that says Buster to Bullseye. There’s one additional fix you’ll have to make as the bullseye-updates syntax changed slightly in Bullseye. You just change the security updates one to this instead:
deb http://security.debian.org/ bullseye-security main contrib non-free
If this is an important production server then definitely do not try this without backups galore first just in case. It is an option though if you happen to be using a custom kernel as I do this on a lot of the SBCs I cover on the site routinely and sometimes they are still using ancient 3.X.X kernels. I actually do that in this project here.
That is basically a Debian Bullseye image running a 3.X.X kernel (gross I know but there are reasons it has to use that custom kernel as I’m sure there are for you). If you could upgrade the kernel eventually it would be ideal but the libc issue specifically should be resolvable without upgrading the kernel theoretically.
Would you be willing to try the Docker container? That would be another way to upgrade your libc going a totally different route as in Docker it will use the dependencies I put in the container image no matter what is installed on the VPS. If the Docker container works that would give us additional evidence that it is indeed a libc (or potentially other dependencies) issue. It would also give you the option to completely sidestep this issue if Docker will work in your environment and leave the rest of it entirely as-is.
Did a complete and total upgrade of Debian and all installed packages. Running the latest public versions for everything, redownloaded the server script from scratch. Sadly I am still having the crash issue. Looks like I’ll either have to set up a vps with more RAM or go back to more frequent restarts. By the way, you mentioned the */59 * * * * cronjob to restart every hour, but what would one do to restart every few hours, say 4 or 6 hours?
Hey MaladjustedPlatypus,
Most likely you have a corrupted server or the machine needs a complete clean reimage. You may need to restore a backup from before it started happening.
If you start a new server and it doesn’t crash then your server is corrupted and a backup needs to be restored. Either that or your server is trashed and needs a clean reimage. You do not need anything close to 3GB of RAM for the server to run. You don’t even need 2GB of RAM for it to run. Something is broken.
It’s definitely not normal to have to restart the server so often. It will only get worse and needs to be fixed! If it’s a VPS I would literally delete your existing VM and start over with a fresh copy since that takes like 5 minutes and costs nothing. I would also check your backups.
The crontab is not a fix. You will be back again unless you really fix it. This is a band-aid and frankly it’s a lousy one. This happens all the time and you will never, ever stop coming back and having problems until you figure out which of those 2 things are wrong. It’s not anything else. You need to determine if it’s your server files that are corrupt or if you server needs a reimage. This is *extremely* common.
Every time this happens all it is is just me trying to convince someone that their server is trashed (either the server itself or their server files). It has literally never been anything else and I can link you to dozens of examples of people who tried to do exactly what you are doing for WEEKS until they finally just reimaged the server and they never had a problem again. This issue is already there in my opinion and you seem to be looking for other explanations like the RAM. It is not the RAM.
You have not tried with a new server. You have not reimaged the server. You have not tried restoring a backup from before it happens. You didn’t try anything I told you to do. You have 8 comments now total now and not one of those things. You tried your own idea that I told you is not a fix and won’t work and now you want me to write you a new variation of that fix and not try anything I said again.
No. You are wasting your own time and mine and you aren’t the first person to do so. I can link you to this EXACT situation dozens of times on this site. They’re right here in the comments. Until a real fix is done (which you want to try everything except what will actually make a difference) this will continue to happen forever. That I can guarantee you or I can even show you if you want from so many others who went through this and finally reimaged/restored a backup and wouldn’t you know it, that took care of it! I don’t know how to help you any further than to simply state this. I’ve already told you how to fix this so many times.
Hopefully that helps!
Okay I don’t know what the sudden tone shift is for, but you clearly have not been reading my messages. I did try on new worlds/maps, I did try fresh installs of the server, I did try on a local machine, I did try now on updated Debian builds, I did try backups. Hell in the other comment that you ignored your own example showed that the leak is happening. YOUR OWN EXAMPLE. Please don’t insinuate that I am being willfully ignorant here. I have been trying all of the options that I am capable of trying here.
I couldn’t tell you. It’s pretty clear that all of those OS installs and platforms work fine for other people. I have had no issues with memory leaks whatsoever. Nobody else has reported any issues with memory leaks whatsoever.
This isn’t something I can fix for you anyway. It is platform related. If you find a bug in the script please submit it as a GitHub issue and it will be fixed.
Otherwise this is outside of the scope of the script and has nothing to do with me. You need to figure out why your platform won’t work. This isn’t my responsibility nor can I do anything about it.
For anyone getting this no this is not a thing. It’s almost certainly related to this person’s provider which I asked them for in nearly every reply and they would not give it. Something is wrong with your configuration if this is happening and you should try with a different provider / machine.
I could not get this through to them and they will continue to fight with this issue forever because they’re not even looking. They’re looking for a magical memory leak to explain their crashes that if actually existed would cause catastrophic and immediate consequences that would NOT be hard to find at all (this would make so much noise if it happened, articles/reddit/tweets/all of it, lesser bugs have made a lot more noise).
It is literally common sense that if there was a widespread memory leak like this with consequences as serious as they were asking me to restart their server once an HOUR that if that was actually real there would be articles and posts EVERYWHERE about it. It completely escapes them that the problem might be on their end / their providers end and keep pushing this memory leak nonsense. If it’s leaking memory it’s because your OS / platform is BROKEN.
I can’t allow it to continue. You are wrong. It’s your provider somehow. This is not a stock or correct configuration that leads to this. This is some kind of form of denial or something but it’s incorrect information and not productive for the site so this conversation is over. I’ll gladly leave it up here though hoping that it dispels reasonable people from spending too much time going down this rabbit hole which will get you nowhere (keep looking for the real cause / a real solution, there is one).
Also your own testing does show an increase in what I’m assuming is RSS. Your first measurement is 642320, then 650240, then 651028. That will continue to rise without stopping.
Hey there James! Quick question, how do I shut down completely the server(making backups and such) down? In this case cancelling the Cron job and freeing up the ports and network currently being used so I can switch to a new server (your java raspberry pi one)?
Hey Benjamin,
Welcome back! So you are basically right on the money. The other thing you can do is remove
/etc/systemd/system/yourserver.service
. After that runsudo systemctl daemon-reload
.Other than that it’s as simple as removing the folder to completely get rid of the server. You can also stop it by typing “stop” in the server console that comes up with screen -r. Hopefully that helps!
Hi james
Why doesnt the ./update.sh update the server to the most recent version?
Its been running 1.19.11 and most clients are at 1.19.20 now
when executing ./start.sh
it outputs this:
Checking for the latest version of Minecraft Bedrock server ...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 312k 0 312k 0 0 481k 0 --:--:-- --:--:-- --:--:-- 481k
Latest version online is bedrock-server-1.19.20.02.zip
Current install is: bedrock-server-1.19.20.02.zip
Latest version bedrock-server-1.19.20.02.zip is already installed
Yet when i check the screen -r it show version 1.19.11 running.
Ive been searching for similiar issue’s without succes.
Here is the output of the start.sh file
[2022-08-14 11:46:39] NO LOG FILE! - setting up server logging...
[2022-08-14 11:46:39] [2022-08-14 11:46:39:907 INFO] Starting Server
[2022-08-14 11:46:39] [2022-08-14 11:46:39:907 INFO] Version 1.19.11.01
[2022-08-14 11:46:39] [2022-08-14 11:46:39:907 INFO] Session ID b4aeaf74-cc7d-4a57-9326-922fc81c1153
[2022-08-14 11:46:39] [2022-08-14 11:46:39:907 INFO] Level Name: Bedrock level
[2022-08-14 11:46:39] [2022-08-14 11:46:39:914 INFO] Game mode: 1 Creative
[2022-08-14 11:46:39] [2022-08-14 11:46:39:914 INFO] Difficulty: 0 PEACEFUL
[2022-08-14 11:46:39] [2022-08-14 11:46:39:949 INFO] opening worlds/Bedrock level/db
[2022-08-14 11:46:40] [2022-08-14 11:46:40:443 INFO] IPv4 supported, port: 19890
[2022-08-14 11:46:40] [2022-08-14 11:46:40:443 INFO] IPv6 supported, port: 19891
[2022-08-14 11:46:40] [2022-08-14 11:46:40:670 INFO] Server started.
[2022-08-14 11:46:40] [2022-08-14 11:46:40:696 INFO] IPv4 supported, port: 19132
[2022-08-14 11:46:40] [2022-08-14 11:46:40:696 INFO] IPv6 supported, port: 19133
[2022-08-14 11:46:40] [2022-08-14 11:46:40:720 INFO] ================ TELEMETRY MESSAGE ===================
[2022-08-14 11:46:40] [2022-08-14 11:46:40:720 INFO] Server Telemetry is currently not enabled.
[2022-08-14 11:46:40] [2022-08-14 11:46:40:720 INFO] Enabling this telemetry helps us improve the game.
[2022-08-14 11:46:40] [2022-08-14 11:46:40:720 INFO]
[2022-08-14 11:46:40] [2022-08-14 11:46:40:720 INFO] To enable this feature, add the line 'emit-server-telemetry=true'
[2022-08-14 11:46:40] [2022-08-14 11:46:40:720 INFO] to the server.properties file in the handheld/src-server directory
[2022-08-14 11:46:40] [2022-08-14 11:46:40:720 INFO] ======================================================
Hey Dennis,
There is a clean.sh script now that makes it redownload the latest if it ever gets stuck. update.sh is meant to update the scripts if that makes sense but there is a new script that does do what you’re trying to do called clean.sh (brand new actually as in like yesterday).
I’m not sure how it gets broken (it seems to vary) but something has messed with version_installed.txt and it’s not matching what the server thinks is installed (usually means another server instance ran using the files or something like that, possibly a backup was restored that had version_pin.txt, lots of ways this could happen). Since you’ve ran update.sh already you should have that in there. It’s a simple script that removes version_installed.txt and the downloads folder. That is all that is out of sync basically for whatever reason / however it happened.
That should take care of it here!
i understand it, thank you James =)
Hey dennis,
No problem at all, enjoy and have fun!
Hello James, question on the Server directory path (DirName). I recently noticed that there is now allowance for an override to the DirName rather than a prompt (I think). I discovered this by using
curl https://raw.githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh | bash
to get the latest updates. In which, there is no longer the prompt for the Server directory path. In my use case, I had installed MCPE server onto a separate Digital Ocean volume, which is not mounted or linked to my $home directory.
What would you recommend in this case for the most efficient maintenance going forward? Say, to first download the SetupMinecraft.sh script, override the DirName, and then run locally? Or is there a way to pass the DirName to the script in conjunction with the curl download? Or should I be following a better practice of mounting or linking the volume to the home directory? I didn’t really think this through when I first got this up and running.
Thank you!!
Hey Christian,
Great question, you’re the first to ask about this since I made that change actually. So basically what you would do is:
curl -o SetupMinecraft.sh https://raw.githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh
then you would open up SetupMinecraft.sh and set the custom path there. Basically exactly what you’re thinking and run locally. You can use the same local copy for as many servers are installed on the machine essentially.
You could actually use sed to one-liner it like this:
curl https://raw.githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh | sed 's+DirName=$(readlink -e ~)+DirName=/your/path+g' | bash
It’s mostly intended to be used for local use but there’s an example to completely automate it. It was mostly changed because almost anyone who tries to use it breaks the server and the prompt made it seem easier to use than it really is (you need to understand the path structure which I tried to warn about all over but it never really helped or at the very least this was still happening all the time).
The advantage of using the home directory for the paths is basically containment. If you create a new user named “minecraft” and install the server as that user and it is configured to have no rights to anything else then if there was another big Minecraft server hack like the log4j hack they wouldn’t be able to access anything else on the machine basically. This is how many Linux services are configured for this very reason. It’s basically the standard Linux security model.
Most machines will also have a www-data user, a php user, a mysql user, etc. that are all also service accounts and this can be used the exact same way. Their home folder on the accounts will be set to their working directories so that if php or mysql or one of those services are exploited they only gain access to a service account that can only access files used by the service they’ve already hacked (useless).
You definitely don’t have to use it though or worry too much about the paths if this is basically a VM that isn’t running anything else anyway. The reason I moved the option is simply because almost everyone who tries to use it breaks their server (due to not understanding that it’s asking for a root path for all servers) and isn’t using the paths for anything more than they just wanted to put it somewhere different than the home folder. It wasn’t because it was a separate drive or partition and was more that they just wanted to organize it differently.
It’s still a useful feature so I kept it in but wanted them to at least understand enough about how the paths work that they run a local install (and at least look at the source) and not really encourage usage of this feature without having a real need for it like a separate disk. It just seemed to be a design issue that the very first question it asked someone setting up a server was something they shouldn’t actually change without good reason / without further understanding of the paths. I figure anyone who has been using the paths feature will have no trouble using it this way as they’ve already learned the path structure and generally understand how it’s working (and that’s the hard part).
To be clear I’m not even opposed to people using the paths feature because they want to change where it is just because they feel like it and no other reason. That’s totally fine with me and not the problem I’m trying to solve. They simply just have to understand the path structure to use the feature without breaking the entire server and that actually hasn’t changed. I think getting people to look at and open the source has to be a more effective approach than what I’ve tried so far to help prevent people from getting derailed by the path prompt (many of which I assume give up and never comment or ask for help). Now they can at least get a server up and running in the default location and if there’s a need then this is still easy to do / available.
You’re definitely thinking right along the lines of how I intended for this to be used which is a local launch basically. If it drives you too crazy though you can use my one-liner trick to make it work the way it used to without having to download a local copy (the sed line basically just substitutes a path you give in place of ~).
Hopefully that helps explain it!
James, thank you very much for the detailed explanation and for the curl options. I’m still chewing on what is best for my situation… In the meantime, I started down the path with the one-liner, didn’t get the server running, then went back for the hard-coding, and still no-go. A couple of hours later, long-story short, I ended up wiping everything and creating a symbolic link to minecraftbe in my /home/user directory that points to my separate digital ocean volume. So, I’m back to running the original installation curl posted on this web page. This seems to be working smoothly at the moment. I will post back here if anything develops.
So, I can’t say that I verified either of the suggested hard-code or one-liner options here. I may try to chase those on another day. I believe that I may have created the problem upstream of your suggestions by using DirName=”my_path” (where I used double quotes instead of single quotes) at some point before I posted here. Just wanted to give my feedback on that, in case anyone else runs into something similar.
Thank you again for the quick response and assistance!! Much appreciated!!
Hey Christian,
No worries at all! It was my fault actually. The original code I gave you gave me this result:
DirName=$(readlink -e ~)
if [ -z "$DirName" ]; then
DirName=/your/path
fi
This will do nothing because the one I needed to replace was actually the first one with readlink. The -z means if the variable is empty which it won’t be as that one will still have the home folder (doh). The correct one would be this:
curl https://raw.githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh | sed 's+DirName=$(readlink -e ~)+DirName=/your/path+g' | bash
which gives me:
DirName=/your/path
if [ -z "$DirName" ]; then
DirName=~
fi
If you want to test the paths when trying this you can leave the
| bash
off at the end and it will just echo the script with the modified line right in the terminal instead of execute/run the code (so you can see if it’s right).I’m glad you were able to get this fixed. This should help others as well. Take care!
Hi James! Quick observation/question. Did you intentionally make the comment search on this web page case-sensitive? For example, a search for “ancient” will not find “Ancient” as I just discovered. I haven’t thought through the pro-cons of case-sensitive here, but I thought I would pass along this observation. Maybe a heads up somewhere would be good, like say “Comment search… (case sensitive)”. As always, thanks for these awesome resources here!!!
Hey Christian,
That’s a great observation, I did not! I was able to find the cause and fix this. It should bring up both now!
I have verified that it now is case-insensitive! I do think that is probably the way to go for this scenario. Thank you for the quick responses and changes!!!
Hey Christian,
Thanks for confirming! It was actually a weird database problem. I was not using a case insensitive collation so I had to change my database collation type and that fixed it.
Nothing too fascinating but I figured I’d give you the explanation of what it was anyway since you spotted it and reported it. It’s likely the other searches were also impacted as this was an issue at the database level essentially so it very likely fixed this issue for other places like the site-wide search as well.
Thank you!
HI James
Thank you for a great script, Ive got an issue with updating a server. I run 2 servers on 1 host and 1 updates fine the other just wont update.
The creative one updated fine but the survival one doesnt. It appears to see it already installed and only updates scripts but stays on 19.1.10
"Last login: Thu Aug 11 05:05:40 2022 from 192.168.30.124
minecraft@minecraft:~$ cd minecraftbe/
minecraft@minecraft:~/minecraftbe$ cd Surival1/
minecraft@minecraft:~/minecraftbe/Surival1$ ./update.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Minecraft Bedrock Server installation script by James A. Chambers
Latest version always at https://github.com/TheRemote/MinecraftBedrockServer
Don't forget to set up port forwarding on your router! The default port is 19132
100 19950 100 19950 0 0 66043 0 --:--:-- --:--:-- --:--:-- 66279
Updating apt..
[sudo] password for minecraft:
Hit:1 http://gb.archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://gb.archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB]
Get:3 http://gb.archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]Get:4 http://gb.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:5 http://gb.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [501 kB]
Get:6 http://gb.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [208 kB]
Fetched 1,033 kB in 1s (1,597 kB/s)
Reading package lists... Done
Checking and installing dependencies..
Dependency installation completed
Enter a short one word label for a new or existing server (don't use minecraftbe)...
It will be used in the folder name and service name...
Server Label: Surival1
Server Label : Surival1 -- accept (y/n)?y
Server Label: Surival1
Enter server IPV4 port (default 19132):
Server IPV4 Port: 19132
Server IPV4 Port : 19132 -- accept (y/n)?y
Server IPV4 Port: 19132
Enter server IPV6 port (default 19133):
Server IPV6 Port: 19133
Server IPV6 Port : 19133 -- accept (y/n)?y
Server IPV6 Port: 19133
Directory minecraftbe/Surival1 already exists! Updating scripts and configuring service ...
Server directory is: /home/minecraft/minecraftbe/Surival1
Grabbing start.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 100 8157 100 8157 0 0 22939 0 --:--:-- --:--:-- --:--:-- 22977
Grabbing stop.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 100 2731 100 2731 0 0 5073 0 --:--:-- --:--:-- --:--:-- 506100 2731 100 2731 0 0 5072 0 --:--:-- --:--:-- --:--:-- 5066
Grabbing restart.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 100 2856 100 2856 0 0 10461 0 --:--:-- --:--:-- --:--:-- 10500
Grabbing fixpermissions.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 100 2128 100 2128 0 0 4250 0 --:--:-- --:--:-- --:--:-- 4256
Grabbing revert.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 100 832 100 832 0 0 3027 0 --:--:-- --:--:-- --:--:-- 3025
Grabbing update.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 100 749 100 749 0 0 2646 0 --:--:-- --:--:-- --:--:-- 2656
Configuring Minecraft Surival1 service...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 100 362 100 362 0 0 653 0 --:--:-- --:--:-- --:--:-- 65100 362 100 362 0 0 653 0 --:--:-- --:--:-- --:--:-- 653
Start Minecraft server at startup automatically (y/n)?y
Your time zone is currently set to Etc/UTC. Current system time: Thu 11 Aug 05:29:58 UTC 2022
You can adjust/remove the selected reboot time later by typing crontab -e or running SetupMinecraft.sh again.
Automatically restart and backup server at 4am daily (y/n)?y
Daily restart scheduled. To change time or remove automatic restart type crontab -e
Setting server file permissions...
Setup is complete. Starting Minecraft Surival1 server. To view the console use the command screen -r or check the logs folder if the server fails to start
minecraft@minecraft:~/minecraftbe/Surival1$
"
Any ideas?
Or what the best way to restore the backup? I’m thinking start a new install (Spelt correctly this time! lol) then restore the backup from the Surival1 install.
Hey Toby,
Welcome! So this one is a little bit tricky. It depends on why it’s not starting. Looking at the “logs” folder can definitely help here.
Your idea of restoring a backup is also a good idea. The instructions are in the guide for how to do it but you’re pretty much exactly right. You can start a new server and then basically just extract the backup over the top of that new server.
I would definitely give that a try and if you’re still having issues definitely take a look at the logs folder and we can see exactly what is going wrong!
Thank you for the reply. I was using the tar command to try and extract the the file from the old server location and specify the extraction location (new server) but this didn’t work. In the end I moved the backup file to the new server directory and it extracted fine and all back up and working again.
Thank you
Hey Toby,
Excellent, I’m so glad you were able to get that restored! It’s not too bad especially once you’ve done it one time but that first one is definitely always the hardest since you aren’t 100% sure you’re doing it right (until the result).
Thanks for sharing what it was for you, you never know who else that may help as well. Take care and enjoy!
Hello james! Recently my server has started to crash for seemingly no reason, here’s the log:
[2022-08-10 13:40:40] NO LOG FILE! - setting up server logging...
[2022-08-10 13:40:40] [2022-08-10 13:40:40:907 INFO] Starting Server
[2022-08-10 13:40:40] [2022-08-10 13:40:40:907 INFO] Version 1.19.20.02
[2022-08-10 13:40:40] [2022-08-10 13:40:40:908 INFO] Session ID 81297410-30ef-4cb7-89ee-a98a34feb79f
[2022-08-10 13:40:40] [2022-08-10 13:40:40:908 INFO] Level Name: bootleg hemi
[2022-08-10 13:40:40] [2022-08-10 13:40:40:908 INFO] Game mode: 0 Survival
[2022-08-10 13:40:40] [2022-08-10 13:40:40:908 INFO] Difficulty: 2 NORMAL
[2022-08-10 13:40:40] [2022-08-10 13:40:40:949 INFO] Experiment(s) active: ddi_, biom, ucft, gtst, mola, wld_, VE__, scpt
[2022-08-10 13:40:40] [2022-08-10 13:40:40:950 INFO] opening worlds/bootleg hemi/db
[2022-08-10 13:40:40] [2022-08-10 13:40:40:459 INFO] IPv4 supported, port: 19132
[2022-08-10 13:40:40] [2022-08-10 13:40:40:459 INFO] IPv6 supported, port: 19133
[2022-08-10 13:40:41] [2022-08-10 13:40:41:677 INFO] Server started.
[2022-08-10 13:40:41] [2022-08-10 13:40:41:706 INFO] Package: com.mojang.minecraft.dedicatedserver
[2022-08-10 13:40:41] Version: 1.19.20.02
[2022-08-10 13:40:41] OS: Linux
[2022-08-10 13:40:41] Server start: 2022-08-10 13:40:40 EDT
[2022-08-10 13:40:41] Dmp timestamp: 2022-08-10 13:40:41 EDT
[2022-08-10 13:40:41] Upload Date: 2022-08-10 13:40:41 EDT
[2022-08-10 13:40:41] Session ID: 81297410-30ef-4cb7-89ee-a98a34feb79f
[2022-08-10 13:40:41] Commit hash: 1aa76c5813541fe1bbb16c4e3a0af2b29474dc34
[2022-08-10 13:40:41] Build id: 10811062
[2022-08-10 13:40:41] CrashReporter Key: 22615ea3-2b05-3658-a04e-cc578c309d8d
[2022-08-10 13:40:41]
[2022-08-10 13:40:41] Crash
[2022-08-10 13:40:41] [2022-08-10 13:40:41:706 INFO] at clone (UnknownFile:?)
[2022-08-10 13:40:41] c811665a-bece-4504-be86-6695a8a5e22c
I’m not sure what might be wrong. Would reinstalling the scripts help?
Hey Benjamin,
Welcome, I think I can help! This looks like a corrupted server to me from what the past few like this have ended up being and what the log file is looking like.
For example it says you have a bunch of experiments / experimental flags enabled: ddi_, biom, ucft, gtst, mola, wld_, VE__, scpt
I had never seen or heard of many of these experimental flags before and had to research them. It sounds like they’re enabled usually in single player mode by checking the various checkboxes when creating a world. It makes me wonder what other hidden flags are in the game and whether they do anything cool.
It’s strange to see this on a dedicated server unless you imported a previously single player world (which would explain it, the flags that enable these are embedded in the world data files and quite hard to find/modify). It’s so strange that it’s almost certainly corruption unless you know that you did this (and you will know if you did, I don’t even know how to enable some of these without using third party tools). I do not think you can legitimately set these through normal means (other than what they let you check in single player when creating a world which you have way more flags enabled than they have options for).
My guess is that you did not import a single player world with a bunch of experimental flags checked and that this server is corrupted somehow. I think the best way to fix this one will likely be to restore a backup. Definitely move any backups out of the backups folder before doing any more restarts as each time you do it will generate a new one (which will be bad since the server seems to be corrupted now, and it will delete a good backup each time as it keeps a maximum of 10 backups in rotation).
A few other people did get these as well. It could be bugs in 1.19 as well that caused this for a few people. I think you should be able to restore a backup from before this started happening to get rid of these crashes. The scripts basically just launch the server so these issues would all be in the server’s data files (which the backups contain). Hopefully that takes care of it for you here!
Yeah we had experimental features enabled in the flags in single-player before we turned that singel-player world into a server. I’m trying to look for backups from yesterday(when it was working) but all I see are backups for today, is this normal? I fear since all the backs are from today…I may have lost the server
Hey Benjamin,
Only if you restarted the server 10 times today since it broke without copying some backups out of there basically (or if the server is brand new today which I assume is not the case). I assume this is what has happened here. The backups are rotating otherwise they fill up people’s hard drives and crash the entire computer (which used to happen and why we had to add rotations, it crashed one of my servers entirely too resulting in a reimage).
You know what you may want to try is opening one of your backups with something like Amulet. It’s a bit of a long shot but it’s something I’ve been meaning to try if I ever have one of my own servers get corrupted. This is a level editor that works for Bedrock. I think it may be worth opening your world and seeing what it’s looking like in there. If you’re really lucky I’m wondering if Amulet may be able to detect something is wrong and fix it for you. You’ll also be able to get an idea of how corrupted it is. It could be a single person’s profile that is corrupted for example and that is much easier to fix than widescale world corruption. If it’s a small area that’s corrupted you may be able to just regenerate those chunks in the editor and export/save the world to fix it.
Sorry about that as the rotating backups is a tricky problem. When I didn’t rotate them it actually crashed people’s servers really badly by filling the drives 100%. Some servers get very, very large and even 10 rotating backups is sometimes too much and has to be reduced. It’s a fine line to walk. No matter which I choose it always won’t have been enough rotating backups to help someone and for someone else it will be way too many rotating backups and will fill the entire server to 100% (which can lead to having to reimage depending on what happens while it’s full, if it tries to install apt packages it’s going to get ugly for example). This was requested by multiple people here.
The best way to do it is to pull / copy all backups whenever there’s the first hint of a problem but I understand this is easy to say in retrospect and don’t want to harp on it. I only wanted to explain why it doesn’t just keep all backups forever or even a lot more than 10 (which you can set it to more if you want to in start.sh which likely won’t cause any problems for smaller servers) and that you can adjust this as well. Hopefully that helps, and perhaps with any luck maybe the level editor can help as well!