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
BTW, the BDS team basically broke everyone overnight with a “future” update (no corresponding client). I added a couple issues in the GitHub repo. It’s not your fault (theirs), but it does bring to light some nice feature enhancements like ability to pin a server version, revert to a previous server version or to stop updates entirely. Of course, the problem should go away once The Wild Update is released, but who knows when that will happen. Until then, we basically can’t play BDS. I suspect we might encounter this with each major update moving forward.
Hey Jason,
I figured something was up. I did hear a couple of questions here and there across the various GitHub projects and blog posts suggesting to me that something like this happened again.
That’s a particularly bad one (worse than usual) but definitely not unprecedented at all. I really like your ideas to mitigate this and think they can probably both be implemented fairly easily in both this version and the containerized Docker version.
I definitely appreciate your thoughts and both of those ideas hadn’t really came up before (especially in solution form like your issues were). Thanks!
BONUS EDIT: Just for fun I went back to see if I can find the first time I remember seeing this issue and it took me back to December of 2018 right here in this post. This particular person had several issues they were fighting with in the thread but one of them was the version mismatch issue.
There’s also been long periods of time where I won’t hear about this issue for like… a year until all the sudden it will start happening again more often. Maybe the interns are in charge of pushing the updates and sometimes we get good ones and then those ones will move on and we get a bad batch! This is mostly joking and for fun but it does seem to come and go.
One more nightmare story about this (and this hasn’t happened for a while) is that Microsoft used to block “robots” from connecting to download the Microsoft server software. This is why the script has ridiculously long user agent strings in the curl lines it sends to the Microsoft servers. This is because we have been caught up in bot blocking waves many, many times before where everyone will be blocked from updating.
We don’t think we were ever the intended target of this type of blocking and that Microsoft was probably trying to fight other types of bots hitting their servers and our “curl” user agent string got caught up in it. If we were they were incredibly ineffective and never tried again so this doesn’t seem likely. It also seems likely they would just ask me if they cared and say “hey don’t do that” and hopefully they’d have some sort of API or better solution for me but this has never happened.
Never in all the time of this coming up (it usually doesn’t every update or it’s only out of sync a few hours or so and nothing like this) has anything suggested anything like your ideas to manage this!
Hi James,
is there a chance to make a reroll to the previous version of the bds and stop the autoupdate for a while?
I can confirm that even joining the BETA team didn’t help, as the version running on server is 1.19.10 and my client turned beta was at 1.19.04. So we are basically locked out? This totally sucks. I have to count on this server running as my son puts up Youtube videos based in that server.
Hey Sebastien,
I would recommend contacting Microsoft and you can let them know that. I’m not sure you’re understanding that I and this project don’t control what Microsoft does with the Minecraft releases in case that wasn’t extremely clear/obvious beforehand. I do not work for Microsoft or have anything to do with how they release their updates.
It sounds like they’re totally out of sync and that you have both a beta server and a beta client.
Might I recommend for your own sanity based on your reaction to this that you just wait 24 hours and come back and never have to deal with this again. I am saying that respectfully / with sympathy as I see some of my own passion in your response and given that Microsoft will drop this either today or tomorrow (or already has and is still trying to sync the versions up) that this isn’t worth this reaction / stress on you when we know the problem literally will be gone within at most 24 hours because that is when the conference is 100% done!
will it wrk on crome
Hey Matthew,
That’s a tough question and I’m not sure anyone has ever asked it before. I’d love it if you tried it and let me know if this worked because this is actually a question I don’t know the answer to yet.
I can say that if you are having trouble I am *positive* it will run the Docker version.
The Docker version is super easy to use and works on all platforms that have Docker (Chrome does). It even works on different architectures using Docker like ARM and 32/64 bit. If the standalone version won’t work the Docker version should have you covered!
Hey Buddy, thank you from me and my kids for creating this… we’ve made so many worlds and had so much fun….. currently i’m getting an error though…… Wondered if you can assist me fixing this?
[2022-05-12 22:21:18] NO LOG FILE! - setting up server logging...
[2022-05-12 22:21:18] [2022-05-12 22:21:18:298 INFO] Starting Server
[2022-05-12 22:21:18] [2022-05-12 22:21:18:298 INFO] Version 1.18.32.02
[2022-05-12 22:21:18] [2022-05-12 22:21:18:298 INFO] Session ID 7bc7b6e0-a79d-4cd4-9e69-59d1626f87dd
[2022-05-12 22:21:18] [2022-05-12 22:21:18:298 INFO] Level Name: Bedrock level
[2022-05-12 22:21:18] [2022-05-12 22:21:18:313 INFO] Game mode: 0 Survival
[2022-05-12 22:21:18] [2022-05-12 22:21:18:313 INFO] Difficulty: 1 EASY
[2022-05-12 22:21:18] [2022-05-12 22:21:18:345 INFO] opening worlds/Bedrock level/db
terminate called without an active exception
[2022-05-12 22:21:19] [2022-05-12 22:21:19:777 ERROR] Network port occupied, can't start server.
[2022-05-12 22:21:19] [2022-05-12 22:21:19:777 INFO] Server stop requested.
[2022-05-12 22:21:19] [2022-05-12 22:21:19:795 INFO] Package: com.mojang.minecraft.dedicatedserver
[2022-05-12 22:21:19] Version: 1.18.32.02
[2022-05-12 22:21:19] OS: Linux
[2022-05-12 22:21:19] Server start: 2022-05-12 22:21:18 UTC
[2022-05-12 22:21:19] Dmp timestamp: 2022-05-12 22:21:19 UTC
[2022-05-12 22:21:19] Upload Date: 2022-05-12 22:21:19 UTC
[2022-05-12 22:21:19] Session ID: 7bc7b6e0-a79d-4cd4-9e69-59d1626f87dd
[2022-05-12 22:21:19] Commit hash: c83844d4a6fa9954f33e2f5d9a2a225d62b74bd2
[2022-05-12 22:21:19] Build id: 9631022
[2022-05-12 22:21:19] CrashReporter Key: 8c4937c1-64cb-3532-a8dc-1deb28f67293
[2022-05-12 22:21:19]
[2022-05-12 22:21:19] Crash
[2022-05-12 22:21:19] [2022-05-12 22:21:19:795 INFO] at gsignal (UnknownFile:?)
[2022-05-12 22:21:19] at abort (UnknownFile:?)
[2022-05-12 22:21:19] at __libc_start_main (UnknownFile:?)
Failed to open curl lib from binary, use libcurl.so instead
[2022-05-12 22:21:20] 250bf53b-aba3-42ae-92ee-87f975924a77
I’ve checked and nothing is running on 19132 ipv4 port and i dont have ipv6 enabled?
Should i simply change the port???
Many Thanks
Hey Richard,
That is a strange one! Have you tried rebooting the OS yet? There could be a zombie process stuck in the background that isn’t showing up on screen -r.
If that still isn’t doing it then yes there are some strange bugs related to the default ports. These primarily impact people running multiple servers on the same machine but if you notice when it starts it often says it’s listening on two sets of ports (a bug) but sometimes they do conflict with each other particularly with multiple servers. In that case if it won’t go away from a reboot then changing the port should be a safe way to avoid this port bug entirely.
You may want to check that libssl installed with
sudo apt install libssl1.1
although running SetupMinecraft.sh again should fix any dependency or permissions issues (also worth a try).
Hopefully that helps!
Thanks James,
Unfortunately nope that didnt work either… same error message no matter what port i use.
i have the latest version of libssl1.1 as well so i’m at a loss.
will keep trying to get it going but at this stage i cant understand what is causing the issue. and what is holding on to the port.
cheers
Rich
*****UPDATE*****
Its working!!!
I had completely disabled ipv6 in GRUB…. after reversing that and a reboot the server is running happily.. Is there a way you can adapt your script to check for that by anychance or at least mention that ipv6 interface needs to atleast have a fe80: address
Hey Richard,
Those are interesting findings! I know on my Docker Container of this it always starts up with IPV6 disabled (the server even says it’s disabled) although I know it’s possible to turn it on in Docker. It does seem to work without it as far as the server is concerned but it sounds like it was having conflicts on the system for sure.
It almost sounds like the Pi wasn’t figuring this out correctly (or having it disabled creates a different condition than if it’s missing altogether). Thanks for reporting this so I can try to decide how to prevent it!
I’ve gotten through all of this guide successfully until the point where i want to start the server. I get an error about unknown log file options.
(xenial)craft@localhost:~/minecraftbe/craft$ ./start.sh
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 310k 0 310k 0 0 255k 0 --:--:-- 0:00:01 --:--:-- 255k
Minecraft Bedrock server is up to date...
Starting Minecraft server. To view window type screen -r craft
To minimize the window and let the server run in the background, press Ctrl+A then Ctrl+D
Use: screen [-opts] [cmd [args]]
or: screen -r [host.tty]
Options:
-4 Resolve hostnames only to IPv4 addresses.
-6 Resolve hostnames only to IPv6 addresses.
-a Force all capabilities into each window's termcap.
-A -[r|R] Adapt all windows to the new display width & height.
-c file Read configuration file instead of '.screenrc'.
-d (-r) Detach the elsewhere running screen (and reattach here).
-dmS name Start as daemon: Screen session in detached mode.
-D (-r) Detach and logout remote (and reattach here).
-D -RR Do whatever is needed to get a screen session.
-e xy Change command characters.
-f Flow control on, -fn = off, -fa = auto.
-h lines Set the size of the scrollback history buffer.
-i Interrupt output sooner when flow control is on.
-l Login mode on (update /var/run/utmp), -ln = off.
-ls [match] or
-list Do nothing, just list our SockDir [on possible matches].
-L Turn on output logging.
-m ignore $STY variable, do create a new screen session.
-O Choose optimal output rather than exact vt100 emulation.
-p window Preselect the named window if it exists.
-q Quiet startup. Exits with non-zero return code if unsuccessful.
-Q Commands will send the response to the stdout of the querying process.
-r [session] Reattach to a detached screen process.
-R Reattach if possible, otherwise start a new session.
-s shell Shell to execute rather than $SHELL.
-S sockname Name this session .sockname instead of ...
-t title Set title. (window's name).
-T term Use term as $TERM for windows, rather than "screen".
-U Tell screen to use UTF-8 encoding.
-v Print "Screen version 4.03.01 (GNU) 28-Jun-15".
-wipe [match] Do nothing, just clean up SockDir [on possible matches].
-x Attach to a not detached screen. (Multi display mode).
-X Execute as a screen command in the specified session.
Error: Unknown option Logfile
(xenial)craft@localhost:~/minecraftbe/craft$
In a previous post from “Destinykid” you mention running these to see the version:
awk -W version
gawk -W version
which awk
Here is what I get:
(xenial)craft@localhost:~/minecraftbe/craft$ awk -W version
GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
Copyright (C) 1989, 1991-2015 Free Software Foundation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
(xenial)craft@localhost:~/minecraftbe/craft$ gawk -W version
GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
Copyright (C) 1989, 1991-2015 Free Software Foundation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
(xenial)craft@localhost:~/minecraftbe/craft$ which awk
/usr/bin/awk
Ahh yes, I was going to say I’ve seen this issue once before and you already linked directly to exactly the thread I’m vaguely remembering!
Which OS/flavor is this? I’d say that gawk is about 4 years outdated as I did a gawk –version on my server and got:
GNU Awk 5.0.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.2.0)
Copyright (C) 1989, 1991-2019 Free Software Foundation.
That is running the current Ubuntu LTS 20.04. It’s even newer on my desktop which is running 22.04:
GNU Awk 5.1.0, API: 3.0 (GNU MPFR 4.1.0, GNU MP 6.2.1)
Copyright (C) 1989, 1991-2020 Free Software Foundation.
I am coming up with the 4 year estimate as far as how far behind it is based on the copyright year (yours says 2015, mine says 2019).
I think this distro is going to be too old to run the server. Every couple of years Microsoft changes which libc (the core “C” Linux library) that they build against and I imagine yours will be too old to run it. It’s probably something like Ubuntu 16.04 or 18.04 and I think that both of those do no longer work (16.04 for sure).
Have you upgraded it to the latest version of your OS? Frankly it can’t be the latest version but it may be the latest that it will install through apt without doing something like a do-release-upgrade (assuming it’s Ubuntu).
sudo apt update && sudo apt dist-upgrade
is usually the normal way but my guess is that apt is either broken or that this is an older version like 16.04/18.04 that has never had asudo do-release-upgrade
.I imagine if you manually start the server though there are going to be other errors. If the gawk is 4 years outdated then this is either an end of life distro that has not been upgraded to a supported version or apt is broken and possibly needs a
sudo apt install --fix-broken
.You can work around the parameters for logging that don’t exist in a version that old by removing them but this is only one symptom of the actual problem which is that the software running on the machine is something like ~4 years out of date for some reason. If you worked around this by removing the parameters then *if* it will run with the libc on that version it won’t be long until it won’t. Basically it’s right on the edge of being too old to have libraries capable of running the current Bedrock server if it’s not already there but this is usually easily fixed with a
do-release-upgrade
.You can try taking out the parameters it doesn’t like from the command (you will lose some logging features I think related to timestamps off the top of my head) to test this or try a manual launch but I think this will need an upgrade!
I have a fresh version of Ubuntu but cannot get past the following error:
(xenial) craft@localhost:~$ curl https://raw. githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh|bash
bash:bash: command not found
bash: curl https: //raw.githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh : No such file or directory
(xenial) craft@localhost:-$
It looks like bash isn’t installed on this machine. You could probably try using sh or zsh although I’m not sure whether it will work or not. I’m guessing you could just do a
sudo apt install bash
as well.This should be included on xenial so I assume the package will be available and that this is a barebones install but that should get it going!
Hi, I’ve successfully installed and got running the bedrock server using your script (which is great, thanks!) but can’t connect to it from minecraft? Sorry if this is really noddy, but is there something obvious I’m not doing?
Running Ubuntu 22.04 on Oracle Clould ARM VM (no issues with openssl as in other comments – worked first time), have set up port forwarding for 19132.
Hey TangerinePaul,
Welcome! The Oracle VM always does this. It’s a well known and well documented phenomena here. You can’t use the default ports with Oracle. They block them (silently as far as I can tell). I would run SetupMinecraft.sh again and choose different default ports (anything) and then you will have to configure the Oracle VM firewall to allow those ports to get it going.
This issue is pretty much unique to Oracle. It’s something they’re doing. Nobody knows why they block the default ports especially when the main tutorial people use for this is written by Oracle themselves. You’d think this port would be allowed since they are actively encouraging this but apparently some other part of Oracle didn’t get the message and this port seems to be silently blacklisted.
They are definitely messing with your traffic on these free VMs and of course nothing they’re doing with it is documented or explained anywhere nor would they officially acknowledge they do this but they do / are and we have basically proven that. Despite the “official” tutorials out there they really don’t seem to like people doing this (or someone powerful at Oracle doesn’t) or it wouldn’t have this silent blacklist/block on the Minecraft ports.
Here’s some threads on this issue:
Thread #1
Thread #2
Basically switching ports seems to work around whatever magic block Oracle is doing behind the scenes. I assume there is nothing wrong ethically with doing this as Oracle themselves wrote and published the most popular tutorials out there on how to set this up on their VMs. The blocking is probably a case of one hand not talking to the other or some kind of misunderstanding / oversight. At the very least they seem to encourage it and have never published anything saying you shouldn’t or anything acknowledging you can’t run any services like this that I’ve seen.
That should take care of it here! It seems to be a great setup once you work around this issue so I think you’ll be in good shape with non-standard ports.
Thanks for getting back to me, and pointing me at the other threads (hadn’t managed to find that), much appreciated.
I’d tried changing the port just in the server.properties file, but not sure if you’re script did more than that, so tried that too, but no luck…..
Following some more of the thread it seemed like there was definitely some issue with connecting to the VM, so some more digging and I did find that in the oracle VNIC settings you need to create a network security group (with ingress for your minecraft ports), and then add this group to you instance – hey presto it works! So hopefully this helps anyone else trying to get working!
Yes, that was how I stumbled across it through the oracle blog, I was moving another project from google to oracle and thought there’s a good idea for the kids! So yes, it’s a bit odd it doesn’t really work!
Much kudos for your work and responsiveness, coffee coming your way from me! 👍
Paul.
Hey Paul,
Thanks for stopping by and leaving how it turned out! That is fantastic and lines up with what some of the others have said as well. Looking back at those other threads I had thought it was the port that did it but as I read them again I think similarly to you it ended up leading them to check the Oracle-specific port / ingress settings and it sounds like that is the step most people are missing for it.
I think this is an important topic right now as energy prices are skyrocketing. This makes things like VMs for hosting much more attractive or depending on your electricity rate (I have heard many personal stories of pain in the UK) it may become absolutely essential. Raspberry Pi is another great way to go for home hosting but due to Microsoft not providing a ARM binary for the Minecraft (Bedrock, Java works fine without emulation on Pi) server it’s slow since there has to be some emulation.
Right now I think a VM is probably the most energy efficient Minecraft Bedrock server possible without any compromises on performance. It’s the most energy efficient because you’re sharing hardware with countless other virtual machines running on the same hardware. This is usually located in a data center with commercial electricity rates using the most efficient equipment money can buy. Data centers at least in my state (Utah, a solar state) are all getting solar and often generate their own power (usually not entirely and they’ll still be grid tied but when the sun is shining they’ll be 100% independent) to make this even cheaper / greener.
It’s great work and thanks again for leaving the resolution (that’s often the piece I don’t hear back sometimes but it’s the most valuable for pretty much everyone looking for that information i.e. did it work) and I’ll definitely be linking people to your thread when this topic comes up as you also used the exact terminology that Oracle uses for these security groups and I don’t think anyone has said that as specifically as you before. Take care and thanks again!
P.S. Thanks for the coffee!
Just in case it isn’t clear to anyone, you have to set the ingress ports (TCP/UDP) in the Virtual Cloud Network (VCN) security list [as described in the oracle blog] *and* set the ingress ports in a Network Security Group assigned to your instance.
I stuck with a non-standard port number based on others experience, but if you do the above, it might still work for 19132 (but I haven’t tested it).
Oracle do seem to give you a pretty decent VM for free, so it’s definitely worth considering! They also have free instances in a lot of places around the world – this was one of my reasons for moving from google cloud where the free instances are US only – I could have a UK instance on Oracle.
A bit more fiddly for sure, but running 22.04 I’ve set up a docker container that’s running focal. Installed my BDS server there and all is well. I did try to pull the ssl1.1.1 libs first and that wasn’t wanting to work for me.
Hey SimpleSimon,
This sounds right. Did you use this script for it? The script now has a fallback installation for OpenSSL 1.1 where it directly downloads the package and installs it with a dpkg -i. This essentially “fixes” it on Ubuntu 22.04 and higher and can be undone later (if the necessity to do this changes as it likely will at some point) it can be undone with
sudo apt remove openssl1.1
.Glad you’ve got it working! I’m actually working on the long requested Docker version of this where it can be pulled directly from the docker store and set everything up. Thanks for letting me know your experience!
No I didn’t use the script here. Mine failed to launch like so many others after the upgrade so I started searching for options. Found a thread elsewhere about the lack of openssl1.1 breaking a great number of things so then proceeded to attempt pulling it back in. Was about to roll back to focal when I remembered reading about the Docker enviroment so started looking into that as it’s better than a roll back or a VM running focal. Much lighter weight. Moving files in and out is tedious somewhat, but I’m hoping to find a simplified solution to that. Another nice aspect with Docker is it would be incredibly easy to have multiple instances of a server running with little effort. I’m also risk free so to speak of 22.04 getting fixed and having to remove 1.1.
Excellent, that was the impression I got but I just wanted to make sure. I definitely see where you are coming from!
I am trying to figure out the same thing for implementing this script used here into Docker as far as having an easy way to get files in and out easily (particularly the backups). I remember a few tricks that can help with this but I need to do some more research again and make sure I’m using the latest methods that are also widely compatible.
I remember there being some options with docker volumes (persistent ones that can be shared with the host OS with at most a slightly more complicated docker launch line) that should be of some assistance and there’s probably even more bleeding edge features as I haven’t done a lot with containers recently and don’t know the latest additions. Definitely part of me writing the containerized version of this is going to be me brushing up on the latest container tech (and it’s also one of my motivations for writing it as I want to “keep up” by making sure I’m using the latest versions/features).
That’s definitely true that you’re risk-free with this setup. Definitely one of the advantages of containers for sure and why I’m working on a similar implementation for this version. Thanks for sharing your thoughts/discoveries!
Still researching it myself, but yes it does seem volumes are the way to go for backups. I just started messing with portainer too. It’s a gui that should greatly simplify container management including volume backups. I did come across a couple of other threads where they’d scripted docker containers to set up java servers. Process shouldn’t be a whole lot different I wouldn’t think.
My thoughts exactly for sure. When people were requesting the containerized version I imagined that it probably wouldn’t be too hard to put together. A lot of the “extra” things this script does would be incorporated but it really shouldn’t be too hard to do initially at least as far as “porting” the existing functionality over.
The portainer stuff sounds extremely interesting. That is not something I have worked with at all yet. It sounds perfect honestly if it’s widely compatible (available in most Docker versions people are running I guess would be my loose definition here) for a simple control panel. It would greatly simplify and even give a GUI driven experience instead of messing with those folders directly (which could still be how it works internally and that functionality is there for when people want/need it).
I have a Java version of this script that is extremely similar and I definitely agree that porting it would be about the same. I could even use the same control panel twice basically. It would include backups, maybe a log viewer built in would be pretty cool, easy start and stop buttons for the server, things like that. Fantastic ideas and I really love the portainer idea!