Minecraft Bedrock Edition – Ubuntu Dedicated Server Guide

Minecraft: Bedrock Edition Logo

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!


  • Sets up 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
  • Updates automatically to the latest version when server is started
  • Easy control of server with start.sh, stop.sh and restart.sh scripts
  • Optional scheduled daily restart of server using cron


Recommended Gear


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 options available) at a very low price:

Kingston A400 SSD 120GB SATA 3 2.5” Solid State Drive

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:

Samsung 970 EVO Plus M.2 NVME

If you have a normal SATA drive connection (no M.2) here is a good choice:

Samsung 860 EVO 2.5″ SATA SSD

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 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.

Cheap SBC Option

If you don’t have an old PC laying around or want something that is more portable and uses much less power than a PC consider the Intel Compute Stick. It’s a Intel X86_64 with 1 GB of RAM for around the same price as a Raspberry Pi.

Intel Compute Stick STCK1A8LFC

Intel Compute Stick

The Intel compute stick is just a little bit bigger than a USB flash drive and is powered by Micro USB. I developed this entire script and guide using one.

If you choose this option check out my guide for how to install Ubuntu Server 18.04 on the Intel Compute Stick

Mid Range Option

A very small and quiet 4 GB server. Just wipe Windows off it!

Mini PC, Intel Atom x5-Z8350 Processor 4GB

Higher End Option

This is the highest I would go before just buying a used PC from somewhere to use. The upside of this is you are covered by manufacturers warranty and are getting brand new up to date hardware.

HP EliteDesk 800 Mini

Getting Linux

I highly recommend using Ubuntu Server to run the Minecraft dedicated server. It is available here: https://ubuntu.com/download/server

At the time of writing the current version is Ubuntu Server 18.04.2. 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.

Download the image and write it to a USB drive. If you are on Windows Win32DiskImager is a easy to use program to do this. Now boot the computer from the USB drive and follow the installation instructions.

Make a note of the IP address during installation or alternatively log into your home router and see what IP address the machine was assigned. You’ll need this later to connect to the server from the Minecraft client.

Note: Users 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!


Log into your Linux server either using SSH or a mouse and keyboard and paste/type the following command:

wget https://raw.githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh
chmod +x SetupMinecraft.sh

The script will setup the Minecraft sever and ask you some questions on how to configure it. I’ll explain here what they mean.

“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
[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


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

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
rm -rf worlds
tar -xf backups/2019.

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.

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
Crontab’s syntax layout

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!

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.


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!

247 thoughts on “Minecraft Bedrock Edition – Ubuntu Dedicated Server Guide”

  1. William Charles

    The start.sh script runs the Linux ‘route’ command twice, but on Debian that’s not in the standard PATH. Please set as /sbin/route or set a suitable PATH that includes /sbin

  2. Never mind my 1st comment. I got it to run. However, now I run into STOPPING the server which creates an error.
    This is what I get when I run ./stop.sh and run ./start.sh:

    NO LOG FILE! – setting up server logging…
    [2020-04-13 14:30:04 INFO] Starting Server
    [2020-04-13 14:30:04 INFO] Version
    [2020-04-13 14:30:04 INFO] Session ID 8c9b45f3-9c7f-4bd5-b2bb-06331a317df8
    [2020-04-13 14:30:04 INFO] Level Name: SebWorld1
    [2020-04-13 14:30:04 INFO] Game mode: 0 Survival
    [2020-04-13 14:30:04 INFO] Difficulty: 2 NORMAL
    [2020-04-13 14:30:04 INFO] opening worlds/SebWorld1/db
    [2020-04-13 14:30:04 WARN] LevelDB worlds/SebWorld1/db status NOT OK(IO error: fopen failed.). Trying repair.
    [2020-04-13 14:30:04 ERROR] Failed to open LevelDB!
    [2020-04-13 14:30:04 ERROR] IO error: fopen failed.
    [2020-04-13 14:30:04 ERROR] Network port occupied, can’t start server.

    Is there something not implemented when I run stop.sh?

    1. As it turns out, I moved World files from my Windows 10 machine to my Ubuntu Linux server. The reason why the fopen failed and the network port was “occupied” was because the files that were moved were still under Windows 10 ownership. I therefore opened a terminal on the parent folder of the world I wanted and ran this command:

      sudo chown -R root SebCity1
      sudo chown -R Seb1 SebCity1

      The format is used with sudo because without ownership you can’t modify. The -R means recursive, so chown will be applied to all files and folders under the selected folder. root or Seb1 would be the user with administrative powers that you are using. SebCity1 is the folder containing the files for your Minecraft level.

      Works like a charm!

  3. Hello James,

    thank you very much for your effort to create this great guide.

    In the sections Start, Stop and Restart Server, Automatic Backups, Scheduled Daily Reboots, etc. you refer to the path cd ~/minecraftbe, but the path should read: cd ~/minecraftbe/$ServerName.

    The reference to the service name is not:
    sudo systemctl start minecraftbe
    sudo systemctl start $ServerName

    For people without Linux knowledge the manual is a bit confusing at this point.

    Greetings and Happy Easter

  4. Hi there,
    so I installed the package, everything is running totally smooth… on LAN.
    However, no access possible from WAN. I checked my port forwarding, it is working properly (I created the 2 rules , TCP and UDP separately). Running the default ports. Everything checks out!
    But still no Minecraft access from WAN-side.
    Heres my copy-paste:
    NO LOG FILE! – setting up server logging…
    [2020-04-11 22:49:03 INFO] Starting Server
    [2020-04-11 22:49:03 INFO] Version
    [2020-04-11 22:49:03 INFO] Session ID d8d3139c-afcd-4ae6-9d63-a082dcc663ee
    [2020-04-11 22:49:03 INFO] Level Name: Bedrock level
    [2020-04-11 22:49:03 INFO] Game mode: 0 Survival
    [2020-04-11 22:49:03 INFO] Difficulty: 2 NORMAL
    [2020-04-11 22:49:03 INFO] opening worlds/Bedrock level/db
    [2020-04-11 22:49:05 INFO] IPv4 supported, port: 19132
    [2020-04-11 22:49:05 INFO] IPv6 supported, port: 19133
    [2020-04-11 22:49:05 INFO] IPv4 supported, port: 33477
    [2020-04-11 22:49:05 INFO] IPv6 supported, port: 43900
    [2020-04-11 22:49:06 INFO] Server started.
    gamerule showcoordinates true
    Game rule showcoordinates has been updated to true

    Am I missing something here? Fresh 18.04 LTS install, firewall running from the router… not sure however if there is a built-in software firewall in Ubuntu…

    1. Have you solved this?

      I am also having this issue after a fresh install of Ubuntu Server 20.04 and ufw inactive. Reading from the comments here, I saw most had success with Ubuntu Server 18.04 and so I gave that a shot as well, bu same result. I even changed NIC cards just for kicks and still no dice. Appreciate any help you could provide.

      1. Never mind, I was using port checkers to validate my port-forwarding rules, and all of them was reporting it is closed, but if you do try to connect to the server outside of your LAN (assuming you did configure it right), it works!

        And to the creator of this awesome script, a huge thanks to you!

        1. Can you confirm you managed to get WAN connectivity then?

          I have port forwarding for UDP setup yet still seem to not connect externally – Just looking for confirmation that someone has successfully had external connections.

  5. I can’t install the ‘qemu-user*.deb’ file
    I get this:
    Processing triggers for man-db (2.8.3-2ubuntu0.1) …
    dpkg: error: cannot access archive ‘qemu-user*.deb’: No such file or directory
    QEMU-x86_64-static did not install successfully — please check the above output to see what went wrong.

    Can anyone help??

  6. mooseknuckle_boi

    root@******:/home/*****/minecraftbe/boahs# ./stop.sh
    Server is not currently running!

    however, the server is running and I am logged in on another computer.

    1. Hey mooseknuckle,

      Can you try issuing a screen -r and see which screen sessions are running? You should be able to resume the session from there and take over the console!

      1. Mooseknuckle_boi

        That was a fast response, thanks. I set the server to start up as the machine starts. It works very well, but I am running in to two issues, including the one posted above.

        While I am logged into the world from another computer, I input:

        root@minecraft:/home/stephen/minecraftbe/boahs# screen -r
        There is no screen to be resumed.
        root@minecraft:/home/stephen/minecraftbe/boahs# cd ..
        root@minecraft:/home/stephen/minecraftbe# screen -r
        There is no screen to be resumed.
        root@minecraft:/home/stephen/minecraftbe/boahs# screen -list
        No Sockets found in /run/screen/S-root.

        However, the world is active and working from another computer. running ./stop.sh states that there are no servers. Running ./start.sh starts up the world, however, when I then run screen it says the world cannot be started because there is already an active world, so it looks like the game is trying to start a second session of the game besides the one that is starting up as the computer starts up. for some reason screen -list cannot detect the already running version.

        if I then run ./stop.sh, both servers are stopped. But ./stop.sh only shuts down both of them only after I’ve started up the second instance of the server. Then if I start it again, I can use the screen command to see the console. I’d really like to not have to start another server, stop both servers, and start the server again every time I want to see the console. I can’t get why screen list can’t see the startup server running in the background, even when I’m cd’d directly to the server folder.

    2. Mooseknuckle_boi

      root@minecraft:/home/stephen/minecraftbe/boahs# ./stop.sh
      Stopping Minecraft server …
      Minecraft server boahs stopped.
      root@minecraft:/home/stephen/minecraftbe/boahs# ./start.sh
      Backing up server (to minecraftbe/boahs/backups folder)
      worlds/Bedrock level/
      ……..(level successfully starting, didn’t want to spam this comment)
      ……..(level successfully starting, didn’t want to spam this comment)
      2020-04-05 14:21:35 (3.63 MB/s) – ‘downloads/version.html’ saved [300962/300962]

      Minecraft Bedrock server is up to date…
      Starting Minecraft server. To view window type screen -r boahs
      To minimize the window and let the server run in the background, press Ctrl+A then Ctrl+D
      root@minecraft:/home/stephen/minecraftbe/boahs# screen -r boahs

      NO LOG FILE! – setting up server logging…
      [2020-04-05 14:19:00 INFO] Starting Server
      [2020-04-05 14:19:00 INFO] Version
      [2020-04-05 14:19:00 INFO] Session ID f0b35755-dd48-491a-b024-40751c5060f3
      [2020-04-05 14:19:00 INFO] Level Name: Bedrock level
      [2020-04-05 14:19:00 INFO] Game mode: 0 Survival
      [2020-04-05 14:19:00 INFO] Difficulty: 1 EASY
      [2020-04-05 14:19:00 INFO] opening worlds/Bedrock level/db
      [2020-04-05 14:19:03 INFO] IPv4 supported, port: 0
      [2020-04-05 14:19:03 INFO] IPv6 supported, port: 0
      [2020-04-05 14:19:03 ERROR] Network port occupied, can’t start server.
      [screen is terminating]

      Now I cannot get the console window at all, just this when running “screen -r minecraftserver”.
      During this entire console process, I am logged in to the server from another client computer, and there have been no interruptions. It’s like the linux startup instance of the game is not affected by the commands run in this folder at all. To check why the screen command is trying to run the console on port 0, I looked in server.properties, and see what is expected:

      # Which IPv4 port the server should listen to.
      # Allowed values: Integers in the range [1, 65535]

      # Which IPv6 port the server should listen to.
      # Allowed values: Integers in the range [1, 65535]

  7. moosknuckle_boi

    Ho would I see the minecraft console through ssh (ability to ssh into my server from a mac or windows computer) to perform commands such as reloading permissions? Thank you.

  8. I cant seem to get the client to connect. It says that the server i up and I am on Lan. They (Client/Server) are both connected to the router. I always time out while connecting.

    1. Hi Pete,
      Can i ask how you fixed this?
      I am trying to connect and the server says that the clients are connected but it times out on the client side and I can never connect.

  9. I hope someone can help. I called my server “mcbed” as I have a java one installed on another server that works fine.

    I set up a brand new Ubuntu Server, ran the script and got this:

    :~/minecraftbe/mcbed# ./start.sh
    Checking for the latest version of Minecraft Bedrock server …
    –2020-04-03 23:54:38– https://minecraft.net/en-us/download/server/bedrock/
    Resolving minecraft.net (minecraft.net)…,,, …
    Connecting to minecraft.net (minecraft.net)||:443… connected.
    HTTP request sent, awaiting response… 302 Moved Temporarily
    Location: https://www.minecraft.net/en-us/download/server/bedrock/ [following]
    –2020-04-03 23:54:38– https://www.minecraft.net/en-us/download/server/bedrock/
    Resolving http://www.minecraft.net (www.minecraft.net)…, 2606:2800:233:1cb7:261b:1f9c:2074:3c
    Connecting to http://www.minecraft.net (www.minecraft.net)||:443… connected.
    HTTP request sent, awaiting response… 200 OK
    Length: 300962 (294K) [text/html]
    Saving to: ‘downloads/version.html’

    downloads/version.html 100%[====================================================================================================>] 293.91K –.-KB/s in 0.03s

    2020-04-03 23:54:38 (8.64 MB/s) – ‘downloads/version.html’ saved [300962/300962]

    Minecraft Bedrock server is up to date…
    Starting Minecraft server. To view window type screen -r mcbed
    To minimize the window and let the server run in the background, press Ctrl+A then Ctrl+D

    :~/minecraftbe/mcbed# screen -r mcbed
    There is no screen to be resumed matching mcbed.

  10. I’m trying to set this up using Digital Ocean so that it’s available externally and was able to get everything working and connect when just using the normal java minecraft server. However my son wants to play from his iPad and I think I need to install bedrock to do this. I’ve followed the guide and didn’t run into any issues with the install of bedrock using your guide. However, I’m unable to connect to the server from either my PC or from an iPad. I wasn’t sure if anyone had any thoughts.

    1. Are your ports open? assume so if you got the java one running… but they do use different ports – 19132 is the standard
      Also are you running as ROOT? (probably shouldn’t but that is one option.

  11. I get this after I run the ran the setup.

    Setup is complete. Starting Minecraft server…
    Minecraft server failed to start after 20 seconds.
    There is no screen to be resumed matching minecraft.

    Not sure, where to go from here!


    1. I realized that I wasn’t using Ubuntu 18.04. Once I move to Ubuntu 18.04 it worked, like a charm. Thanks for all you hard work!

  12. Server didn’t start and no errors given, kindly help.

    sudo ./start.sh
    Checking for the latest version of Minecraft Bedrock server …
    –2020-03-26 22:58:18– https://minecraft.net/en-us/download/server/bedrock/
    Resolving minecraft.net (minecraft.net)…,,, …
    Connecting to minecraft.net (minecraft.net)||:443… connected.
    HTTP request sent, awaiting response… 302 Moved Temporarily
    Location: https://www.minecraft.net/en-us/download/server/bedrock/ [following]
    –2020-03-26 22:58:18– https://www.minecraft.net/en-us/download/server/bedrock/
    Resolving http://www.minecraft.net (www.minecraft.net)…, 2606:2800:233:1cb7:261b:2074:3c
    Connecting to http://www.minecraft.net (www.minecraft.net)||:443… connected.
    HTTP request sent, awaiting response… 200 OK
    Length: unspecified [text/html]
    Saving to: ‘downloads/version.html’

    downloads/version. [ ] 293.91K 520KB/s in 0.6s

    2020-03-26 22:58:20 (520 KB/s) – ‘downloads/version.html’ saved [300962]

    Minecraft Bedrock server is up to date…
    Starting Minecraft server. To view window type screen -r Home
    To minimize the window and let the server run in the background, press Ctrl+A then Ctrl+D
    minecraft@NUC:~/minecraftbe/Home$ sudo ./stop.sh
    Server is not currently running!

    1. lol you have to type what is written there: Starting Minecraft server. To **view*** window type “screen -r Home”

  13. Thanks for this. Question, no matter how I join my server, I’m put in survival mode despite changing game mode to creative. Any ideas? client is Windows 10

    1. ***** gamemode | survival (0), creative (1), adventure (2) survival ******


      The server will try to read a file named server.properties. Some of these options are only read when a new world is created, while some others are read every startup. The file should contain a list with keys and values separated with an equal sign, one per line.

      read “bedrock_server_how_to.html” for more configurations.

  14. Nathan Goodfellow

    This worked but how do I make myself an OP or run commands once the server is running? Can I have the server console run at login?

  15. How are you finding the performance (specifically CPU utilization). I’m running on AWS Lightsail 10$/month , and CPU spikes to 100% when players join.

  16. Worked perfectly on an Unbuntu VM I’ve hosted on Azure. Will let you know the on going costs after running it for a day.

    1. Hey Phil, I just attempted to install Minecraft Bedrock on an Azure Ubuntu Vm. I am getting stuck with this message.

      Setup is complete. Starting Minecraft server…
      Minecraft server failed to start after 20 seconds.
      There is no screen to be resumed matching minecraft.

      I did both
      sudo apt-get update
      sudo atp-get upgrade

      What were the step you did to get yours running. I ssh into the server and followed the

      wget https://raw.githubusercontent.com/TheRemote/MinecraftBedrockServer/master/SetupMinecraft.sh
      chmod +x SetupMinecraft.sh

      I also did
      sudo apt-get install screen

      kind of lost.


  17. Hi,

    I redownloaded and reran the SetupMinecraft.sh script and wasn’t careful with capitalisation. I now have two instances trying to run on the same port.

    How can I remove one instance?


    Steve D.

  18. On my Atom X5-Z8350, it would not boot without the HDMI. The solution is to add nomoeset to the GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub:

    the run: sudo update-grub

    If anyone uses this minipc, what the max number of players before it gets laggy?

  19. If you buy the mini pc and put ubuntu 18 on it, my box would not boot without an HDMI connected. This can be fixed by

    sudo pico /etc/default/grub

    adding “nomodeset” to below line:
    save and exit

    sudo update-grub

Leave a Comment

Your email address will not be published. Required fields are marked *

Type here..

Exit mobile version