Minecraft 1.17 (Caves and Cliffs Update) is here! This script and guide are written to help you get a great performing Raspberry Pi Minecraft server up and running in only a few minutes.
This is the standalone version. It runs on most flavors of Linux and should work on most architectures as well (arm, aarch64, etc.).
I highly recommend using Docker over the standalone version for most people. Installing Docker is as simple as sudo apt install docker.io. There are 3 Docker options available:
- The Docker version that has Geyser + Floodgate installed (allowing people running Minecraft Bedrock Edition such as on iOS, Android, and console to connect)
- The Docker version that runs the Purpur Minecraft server with Geyser + Floodgate installed (allowing people running Minecraft Bedrock Edition to connect)
- The Docker version that only includes the Paper Minecraft server (the same as this standalone version)
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 fully operational Minecraft server in a couple of minutes
- Runs the highly efficient “Paper” Minecraft server
- Raspbian / Ubuntu / Debian distributions supported
- Installs and configures OpenJDK 18
- Sets up Minecraft as a system service with option to autostart at boot
- Automatic backups to minecraft/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 Pi using cron
Requirements
- Raspberry Pi model with 1 GB of RAM or higher. Basically a Raspberry Pi 2B or higher. (No Zero unfortunately, 512MB is not enough RAM to do this, I’ve tried!)
- Headless Linux distribution such as Raspbian Buster Lite, Ubuntu Server 18.04.2, or any Debian based distribution (GUI distros can be used at the expense of available RAM and server performance)
- Solid state drive highly recommended but not required.
You can get a SSD setup on a Pi for less than most Micro SD cards cost. See my article here for details - If using MicroSD you want to be using a high range card otherwise you will really be hurting on IO when the server is reading/writing chunks of terrain! Click here for MicroSD card benchmarks/recommendations.
Recommended Gear
The Raspberry Pi 4 is available in different memory configurations all the way up to 8 GB. It’s about the size of a credit card and uses an extremely low amount of power making it ideal for all sorts of projects and ideas!
Links: Amazon.com*, AliExpress*, 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*
The Raspberry Pi 400 kit includes everything you need for a full Pi 400 desktop build. The Pi 400 is the fastest Raspberry Pi ever released and comes in the form factor of a keyboard!
Links: Amazon.com*, AliExpress*, 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*
The Kingston A400 has been a great drive to use with the Pi for years. It’s 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 pibenchmarks.com and is the #1 most popular SSD among the Pi 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*
The USB 3.1 variant of the StarTech 2.5″ SATA adapter works well with the Pi 4. The USB 3.0 variant doesn’t have firmware updates available and is not recommended.
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*
SD Card Setup:
The SanDisk Extreme A1-A2 SD card has the best scoring SD card on Pi Benchmarks for years and is second in popularity only to the SanDisk Ultra (often included in combo kits). The application class (A1) means random I/O speeds (very important when running an OS) have to meet a higher standard. There’s no benefit on the Pi for A2 right now so get whichever is cheaper/available.
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*
Choosing a Linux Distribution
The most important consideration when choosing which flavor of Linux to run the server on is simple: available RAM. Headless Linux distributions such as Raspbian Lite that don’t have a built in GUI have
Our biggest obstacle when running a Minecraft server on the Pi is available RAM since 1 GB is extremely low for this type of server. To have a playable experience you should not be running anything else on the Pi so all memory is available to be used.
After testing on many different distros I am finding Raspbian Lite and Ubuntu Server 18.04.4 32-bit to be the best choices. These distributions come with very few background processes and have rock solid support and performance.
64-bit vs 32-bit
There’s a lot of discussion in the Pi world about the up and coming aarch64 64-bit distributions vs. armhf 32-bit distributions. They have been and continue to improve dramatically. There are already use cases where 64-bit is far superior such as video encoding, advanced compression, etc.
So how about for running a Minecraft server? I have been testing extensively with Ubuntu Server 18.04 64-bit and the Debian Buster 64-bit. I have consistently had worse performance and stability than on 32-bit versions of the exact same distros.
But how can that be? It’s certainly true that Minecraft servers benefit in CPU performance from 64-bit versions of Java. The answer is actually incredibly simple: memory. The server running on a 64-bit Java Virtual Machine uses a minimum of about 100 MB more memory. This makes perfect sense because 64 bits > 32 bits by definition!
The Raspberry Pi’s 1 GB of memory has been the biggest obstacle for this project since the very beginning. Back when I first went into the Paper Minecraft developer IRC room and told them what I was trying to do I was practically laughed out of the chat room for even thinking of trying this. Most Minecraft server branches including vanilla can’t even start on the Pi because of the limited memory.
For a dedicated Minecraft server on the Pi I very highly recommend staying 32-bit. You will have more available memory which means it will be much faster and more stable. Since memory is our bottleneck the increased CPU throughput does not help us and losing *any* of our memory is disastrous!
If the Raspberry Pi 4 has more memory like we all expect it to this recommendation will change completely. Even 2 GB of memory would make the extra memory that 64-bit uses a non-issue and the CPU throughput performance gains very desirable. For now though stay 32-bit for a Minecraft server!
Tested Distributions
Raspberry Pi OS – It’s Raspbian. It has very low memory usage and is the official distribution of the Raspberry Pi. The server runs very well on this. It’s overall the best choice. The Buster release has made OpenJDK 11 available on it so it’s no longer behind the rest of the distros.
Ubuntu Server 18.04 / 20.04 – Ubuntu Server is my favorite Linux distro. I use it for nearly all of my projects. The performance of the 32-bit armhf version is on par with Raspbian. It’s a great choice! Click here for my Ubuntu setup guide for Raspberry Pi. The 64-bit version is not a fantastic choice and not recommended because of the higher memory usage. Stick with 32-bit and you’ll be a happy camper with Ubuntu Server.
Debian Buster 64-bit – Debian is the distribution Raspbian is based on. This version is a preview of Debian “Buster” which is the successor to Stretch and will be the next version of Raspbian when it is released. I like this distribution but it is currently still unofficial and unsupported. Performance and stability was less than Ubuntu and Raspbian.
Minecraft Server Installation
SSH into your Raspberry Pi and paste the following commands:
curl https://raw.githubusercontent.com/TheRemote/RaspberryPiMinecraft/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.
“Enter amount of memory in megabytes to dedicate to the Minecraft server” – The amount of memory that will be dedicated to the Minecraft server. The more the better, but you must leave some room for the operating system background processes.
If you exceed the total available memory either the server will crash or the Pi will get incredibly slow to the point where your SSH session will start timing out. The setup script will make a recommendation to you which is your available memory – 10% for headroom. If you aren’t sure what to put just go with the recommended amount.
Note for Raspberry Pi 4: Currently on 32-bit Raspbian 2700 MB is the maximum that Linux will let us allocate in a 32 bit environment. The script has been updated to check for this as the server will not start if it is set over 2700M on a 32 bit server. 64 bit operating systems will be able to allocate all available memory as Pi 4 support rolls out for them.
“Start Minecraft server at startup automatically (y/n)?” – This will set the Minecraft service to start automatically when your Pi boots. This is great because whenever you want to play you can just plug it in and go without having to SSH in.
“Automatically reboot Pi and update server at 4am daily (y/n)?” – This will add a cron job to the server that reboots the Pi 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!
Check Java Version
Sometimes if you have multiple versions of Java installed the wrong version of Java will be selected as the default. If the server didn’t start check that the right version of Java is selected with this command:
sudo update-alternatives --config java
If you get the message “update-alternatives: error: no alternatives for java” then you only have one version of Java installed and can skip to the next section.
If you are presented with a list of choices then your machine has multiple versions of Java installed. It will look like this:
update-alternatives: warning: /etc/alternatives/java has been changed (manually or by a script); switching to manual updates only There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
You will usually want to just select the newest version of OpenJDK that is listed so you would type 0 and press enter. In some cases on some platforms you may want to switch to the official Oracle JDK although I strongly recommend sticking with OpenJDK!
First Run
The first time you run the server it will take a little longer to start since it is generating all the server data. If you try to log in before it fully starts you will get a connection timeout error. Watch for the line: “Timings Reset”. This is the last line that prints when the server is ready to rock and roll. At this point you will be able to connect successfully.
The very first time you log into the server it will be slow for about 1-2 minutes. This is because since nobody has logged in before the server has to scramble to generate all the chunks within your view distance (10 by default) and send them to you/store them. During this time you may not be able to see very far and if you try to destroy blocks there will be noticeable lag from when they break to when they actually disappear.
Don’t panic! This will go away within a couple of minutes as the Pi catches up with all the first time login stuff it needs to do. Performance stabilizes and it will feel very much like the offline experience after that.
If you are hosting for a few friends I’d recommend logging in for the first time right after you set up the server instead of having several people nail a blank server at first startup. This gets it out of the way and when everyone is ready to log in the starting area chunks will be fully fleshed out and the Pi just has to read them. It’s an order of magnitude faster for the Pi to read chunks than to generate and store chunks.
In my experience after the initial login exploring new parts of the server doesn’t cause any lag even though new chunks are being generated. The reason for this is that when you’re walking it’s really only having to generate a new chunk as you get close to the border instead of a huge square area of chunks in all directions and all at the same time like during the first login.
Benchmarking / Testing Storage
If you’re getting poor performance or just want to verify everything is working correctly you may want to run my storage benchmark with:
sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
If you search for the model of your drive on pibenchmarks.com you can compare your score with others and make sure the drive is performing correctly!
Changing Minecraft Server Version
To override the default version let’s grab a copy of the script locally:
wget https://raw.githubusercontent.com/TheRemote/RaspberryPiMinecraft/master/SetupMinecraft.sh
nano SetupMinecraft.sh
Now make these changes from inside nano:
Version="1.16.5"
AllowLocalCopy="1"
Now press Ctrl+X to exit nano and answer “y” to save. Now let’s run the script:
chmod +x SetupMinecraft.sh
./SetupMinecraft.sh
And the setup will run and install the version of Minecraft you set at the top of the file!
Changing Minecraft Client Version
If you are wisely running the “stable” branch instead of the “development” branch there will be times where you need to select the version of Minecraft to run otherwise you will get an error message that your client is outdated when you try to log in.
Fortunately this is very easy. Open up the Minecraft launcher and instead of hitting “Play” choose “Launch Options” in the menu at the top of the window. It will look like this:
Click the “Add new” button and pick which version you want to add. You can optionally gave it a name or just click save.
Now when you go back to the “News” tab you will see a dropdown arrow where you can select which version of Minecraft you want to play!
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 ~/minecraft ./start.sh ./stop.sh ./restart.sh -OR- sudo systemctl start minecraft sudo systemctl stop minecraft sudo systemctl restart minecraft
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 ~/minecraft/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 ~/minecraft ./stop.sh rm -rf world world_nether world_the_end 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 Pi periodically just in case the Pi’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 Pi. The Minecraft one will look like the following:
0 4 * * * /home/ubuntu/minecraft/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.
Installing Mods / Plugins
The server supports plugins that are compatible with Bukkit / Spigot / Paper. A popular place that you can get plugins is at dev.bukkit.org where there are thousands of them!
To install a plugin you simply download the .jar to the minecraft/plugins folder and restart the server. For example, WorldGuard is a very popular plugin that lets you add protection to different areas of your server.
To install this plugin on our Minecraft server we would use the following commands:
cd ~/minecraft/plugins curl -H "Accept-Encoding: identity" -H "Accept-Language: en" -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.12.212 Safari/537.36" -o worldguard.jar https://dev.bukkit.org/projects/worldguard/files/latest sudo systemctl restart minecraft
The reason the middle line is so long is that “robots” (roughly anything that isn’t a web browser being used by a user in this context) including scripts and utilities are blocked by the Bukkit server. The extra parameters we’re including in this line will add the location (-L) flag as well as a user agent and an identity / language header which will allow us to fetch the files without getting a 403 forbidden error.
Make sure to change “-o worldguard.jar” (second to last parameter) and the URL (very last parameter) to match the project you want to download.
The server will restart and the plugin will be installed. It’s that simple! To use the plugin refer to the documentation on the plugin download page to find out which commands you use to configure/interact with it.
Warning: be advised that plugins are the #1 issue for performance degradation on Minecraft servers. This isn’t because all plugins are bad. Some plugins are coded very inefficiently or perform features that require a lot of hooks in the code.
You should be careful about what plugins you install on the server and if you start having bad performance disable your plugins one by one until you find the culprit!
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 25565. The type of connection is TCP if your router asks. 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.
Upgrading
PLEASE BACK UP YOUR SERVER FIRST! The server makes automated backups by default for you in the backups folder but I recommend you back up the entire server folder yourself (basically the entire minecraft folder) any time you attempt to upgrade or downgrade. If you need to roll back to older versions it won’t work without a backup from that version or older!
The easiest way to upgrade an installation is to download the latest SetupMinecraft.sh and run it. This will automatically upgrade you to the latest version.
Upgrading and downgrading to versions that aren’t the default the script chooses is pretty simple. Simply change the Version line at the top in the SetupMinecraft.sh script:
#!/bin/bash
# Minecraft Server Installation Script - James A. Chambers - https://jamesachambers.com
# More information at https://jamesachambers.com/raspberry-pi-minecraft-server-script-with-startup-service/
# GitHub Repository: https://github.com/TheRemote/RaspberryPiMinecraft
# Minecraft server version
Version="1.16.1"
Edit this file in your favorite text editor (you can use nano or vi on the Pi like nano SetupMinecraft.sh) and change the Minecraft version to what you want.
Downgrading
PLEASE RESTORE USING A BACK UP FROM THE VERSION YOU ARE DOWNGRADING TO
If you are having problems on a newer version of Minecraft and want to downgrade you can do so using a complete backup of your server before you ran it on a newer version.
The reason you can’t take server data that has been touched by a version such as 1.17 and go back to 1.16 is that the new version adds all sorts of new data types/structures for the new content into your server data files. If you try to roll back the old versions of the Minecraft server will not understand these data types since they didn’t exist in that version and will crash.
As long as you use a backup for your server files from that version (or older) it’s as simple as changing the version in SetupMinecraft.sh just like I show in the “Upgrading” section.
You can upgrade any old version of Minecraft to any version, but again make sure you have a backup first as it is a one way street and you will need that backup if you want to roll back!
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.
Version History
To view the version history check out the GitHub README here:
Update History – RaspberryPiMinecraft – Official GitHub Page
Other Resources
If you’re trying to set up SSD / USB storage booting check out my Raspberry Pi USB booting setup guide
For benchmarks and recommendations on the fastest storage drives/adapters for the Raspberry Pi check out my 2021 Storage Roundup
If you’re having firmware issues and need to update/restore your firmware check out my Raspberry Pi firmware guide here
hey just wondering how do i see the status on 1.19 there is not a executable command in the minecraft file and how do i see the chat lop to op myself
Hey Andrew,
Welcome! So the easiest way to pull up the chat is to use the command:
screen -r
This will bring up the console where you can type “op yourplayername” or op “your player”. That should pretty much get you where you are trying to go here. To hide the console again you can press Ctrl+A followed by Ctrl+D and it will go back to the background. Hopefully that helps!
Hey James. I followed everything you said, but when I run the ./start.sh, I get feedback saying command is not found. It loads and shows my connections speed, then I get things like “line 208: start.sh: screen: command not found
Hey Caleb,
Did you run SetupMinecraft.sh first? It sounds like it’s missing the screen command and SetupMinecraft.sh should take care of it.
I’d try running it one more time with:
curl https://raw.githubusercontent.com/TheRemote/RaspberryPiMinecraft/master/SetupMinecraft.sh | bash
That should take care of the screen dependency for you!
I did what you told me about running SetupMinecraft. I changed allowLocalCopy to 1, and I still get the error for ./start.sh.
Hey Caleb,
Can you run SetupMinecraft.sh and post the output here? Something isn’t working on your system and it should tell us what it is!
For ./start.sh:
./start.sh: line 28: screen: command not found
Updating to most recent paperclip version ...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 147 100 147 0 0 506 0 --:--:-- --:--:-- --:--:-- 506
Latest paperclip build found: 29
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 36.3M 100 36.3M 0 0 935k 0 0:00:39 0:00:39 --:--:-- 1024k
Starting Minecraft server. To view window type screen -r minecraft.
To minimize the window and let the server run in the background, press Ctrl+A then Ctrl+D
./start.sh: line 208: screen: command not found
For sudo systemctl start minecraft:
Job for minecraft.service failed because the control process exited with error code.
See "systemctl status minecraft.service" and "journalctl -xe" for details.
Hey Caleb,
Not start.sh. That is not getting far enough. You’re missing required software. Can you post the output from SetupMinecraft.sh? You need SetupMinecraft.sh or the original installer. start.sh will not work on a system this broken!
Is this Ubuntu / Raspberry Pi OS? Showing the SetupMinecraft.sh server should tell us why it can’t install screen on your system. Basically it looks like your system can’t install screen through apt which is pretty unusual.
pi@raspberrypi:~ $ ./SetupMinecraft.sh
Minecraft Server installation script by James A. Chambers - https://jamesachambers.com/
Version 1.19 will be installed. To change this, open SetupMinecraft.sh and change the "Version" variable to the version you want to install.
Latest version is always available at https://github.com/TheRemote/RaspberryPiMinecraft
Don't forget to set up port forwarding on your router! The default port is 25565
Installing screen, sudo, net-tools, curl...
Get:1 http://deb.debian.org/debian buster InRelease [122 kB]
Get:2 http://deb.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://archive.raspberrypi.org/debian buster InRelease [32.6 kB]
Reading package lists... Done
N: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from '10.6' to '10.12'
E: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://deb.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://deb.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://archive.raspberrypi.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
Reading package lists... Done
Building dependency tree
Reading state information... Done
net-tools is already the newest version (1.60+git20180626.aebd88e-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libutempter0
Suggested packages:
byobu | screenie | iselect
The following NEW packages will be installed:
libutempter0 screen
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 570 kB/577 kB of archives.
After this operation, 1,015 kB of additional disk space will be used.
Err:1 http://deb.debian.org/debian buster/main arm64 screen arm64 4.6.2-3
404 Not Found [IP: 146.75.30.132 80]
E: Failed to fetch http://deb.debian.org/debian/pool/main/s/screen/screen_4.6.2-3_arm64.deb 404 Not Found [IP: 146.75.30.132 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Enter root directory path to install Minecraft server. Almost nobody should change this unless you're installing to a different disk altogether. (default ~):
Directory Path:
Directory Path : /home/pi -- accept (y/n)?n
Directory Path:
Directory Path : /home/pi -- accept (y/n)?y
Directory Path: /home/pi
Directory minecraft already exists! Updating scripts and configuring service ...
Java is already installed.
Getting total system memory...
Total memory: 3711 - Available Memory: 3292
Total memory: 3711 - Available Memory: 3292
Please enter the amount of memory you want to dedicate to the server. A minimum of 700MB is recommended.
You must leave enough left over memory for the operating system to run background processes.
If all memory is exhausted the Minecraft server will either crash or force background processes into the paging file (very slow).
INFO: You are running a 64-bit architecture, which means you can use more than 2700MB of RAM for the Minecraft server.
Enter amount of memory in megabytes to dedicate to the Minecraft server (recommended: 2992): 2992
Amount of memory for Minecraft server selected: 2992 MB
Grabbing start.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12076 100 12076 0 0 27015 0 --:--:-- --:--:-- --:--:-- 26955
Grabbing stop.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1631 100 1631 0 0 5547 0 --:--:-- --:--:-- --:--:-- 5566
Grabbing restart.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2207 100 2207 0 0 6453 0 --:--:-- --:--:-- --:--:-- 6453
Grabbing fixpermissions.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1582 100 1582 0 0 5308 0 --:--:-- --:--:-- --:--:-- 5290
Grabbing update.sh from repository...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 853 100 853 0 0 2716 0 --:--:-- --:--:-- --:--:-- 2716
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 311 100 311 0 0 909 0 --:--:-- --:--:-- --:--:-- 912
Minecraft can automatically start at boot if you wish.
Start Minecraft server at startup automatically (y/n)?y
Setting server file permissions...
Your time zone is currently set to America/New_York. Current system time: Sun 19 Jun 15:59:49 BST 2022
You can adjust/remove the selected reboot time later by typing crontab -e
Automatically reboot Pi and update server at 4am daily (y/n)?y
Daily reboot scheduled. To change time or remove automatic reboot type crontab -e
Minecraft installation scripts have been updated to the latest version!
pi@raspberrypi:~ $
Hey Caleb,
Perfect, that helps! So your Debian/Raspbian installation is broken basically as it is on an old release and can’t patch. We can tell with these lines:
N: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from '10.6' to '10.12'
E: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://deb.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://deb.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://archive.raspberrypi.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
This system is not patching at all. The apt is completely broken on it. It can’t install screen or any security updates for your OS.
I strongly recommend installing an updated OS on your Pi. It doesn’t take very long. You are running Debian Buster and the current release is “Bullseye”.
You may alternatively be able to fix it like this:
sudo apt-get --allow-releaseinfo-change update
This may get the apt going again to where it can download updates!
I tried the last command, it didn’t work. I am downloading an updated Raspberry PI os
Hey Caleb,
I’m not too surprised the command didn’t fully take care of that. I’ve fixed some of these before on my Pis when I booted up ones that had an older version of Raspberry Pi OS on it and it’s always been more trouble than just downloading the fresh image and burning it. Sometimes you need to edit the apt lists to get it going and this one might be one of those. I’ve also found it far less reliable to enable the oldstable repositories or try to update to the latest vs. doing a clean install.
If I were to make an analogy to Windows it would be the more times it has been upgraded (to like a major new release) or the further behind it is the more likely you are to have problems with older crud in there from the older versions. When I’d see this working as a L3 tech I knew it was time for a reinstall on those too as you can fight with Windows to clean up those images but the amount of time and effort it takes is usually more than a clean reinstall. Sometimes it’s just time to do this and this seems like one of those occasions.
I think it will probably just fire right up once you’ve got the clean image installed of Bullseye. The problem was basically since apt is broken it can’t download the screen application so you’re missing dependencies but I don’t think you will have any problems when this is fixed. Definitely let us know how it goes!
Hey james! My server started like a charm, running bullseye right now. Everything worked for about a month, and I was getting work done on my minecraft server. I did the restart command, and it won’t start back up. I tried ./start.sh too, it loads everything, then the screen just terminates.
Hey Caleb,
The last few people this has happened to ended up having corrupt servers and needed to restore a backup. Can you look at your log file in the “logs” folder and see why it is terminating? I’m sure we can get it going here!
i cant find my logs. I use ssh with putty, but i can create a new one. Not much work done anyways.
Hey Caleb,
Definitely give that a try and let’s see if it actually works as a new server. At the very least it’s an easy way to know what you’re dealing with.
So to get to the logs if you know how to get to start.sh you’re almost there. Basically from putty it would look like:
cd ~/minecraft/logs
cat *
This will dump the output of the log files that are present. You can also do a ls in that folder to only read the latest one for example.
No matter what you decide let me know if I can help further for sure!
Hi, I went to restart the server so i typed /restart instead of the command recommended here, and then it says that minecraft is already running when i use the start command (it definitely isnt). So I tried using “java -jar Minecraft.jar” but then it curiously says that the java command can’t be found. Is this a path issue? Is there a reason I shouldn’t start using the jar file?
Hey greg,
Welcome! I think I can explain what is going on. The command that should be failing to get this message is:
screen -r
Can you run that command and see what it is finding that makes it think the server is already open?
Now for the java command not working that is because the script uses it’s own separate Java installation (this is located in the jre folder). You can still do a manual launch like you are trying to do but it just looks slightly different since this script doesn’t replace your system’s java command anymore (and in your case it doesn’t sound like there is a base JRE installed at all, which is actually fine for this):
/home/james/minecraft/jre/bin/java -DPaper.IgnoreJavaVersion=true -jar /home/james/minecraft/paperclip.jar
would be a simplified manual launch line for example. I imagine this will tell you that the ports are actually in use that and that the server is actually running in screen and will probably come up with screen -r. If it doesn’t rebooting the server may help but you should see java or screen somewhere on the process list with ps -A or top. Hopefully that helps solve this one for you!
Thanks for the response! Running screen -r after restarting shows that there are no screens to be resumed. But if I use the start command ./start.sh, it actually does start the server now for some reason. I can’t replicate what was happening before. Something odd about this though is why the server needs to be started if the restart command is used instead of the stop command (to be clear, not “./restart”, but “restart”).
Hey greg,
Great questions! So to try to explain what is happening here there is a systemd service that controls the server but you can also control it manually with start.sh, stop.sh and those scripts if that makes sense.
You can use the systemd service like
sudo systemctl start minecraft
for example. All the systemd service does basically is call the start.sh script. From your testing we can see that the scripts are working fine but your systemd service doesn’t seem to be.Probably the best way to check this would be
sudo systemctl status minecraft
. That should tell you some more about what is happening. You could also do asudo systemctl enable minecraft
to enable it at boot if you didn’t select “Y” during the installation script.Often I don’t hear back when telling people to check this because the
sudo systemctl status minecraft
message will usually be good enough that you can figure out what is going wrong from there and it’s usually pretty easy to fix. It’s mostly just knowing to check it. If it is a stranger looking one though feel free to post it here and I’d definitely be willing to help decipher what is going on with it.Hopefully that helps!
Hey James, thank you for your reply.
Here comes the log-output.
[21:08:41] [ServerMain/INFO]: Building unoptimized datafixer
[21:08:47] [ServerMain/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[21:09:00] [ServerMain/INFO]: Loaded 7 recipes
[21:09:07] [Server thread/INFO]: Starting minecraft server version 1.19
[21:09:07] [Server thread/INFO]: Loading properties
[21:09:07] [Server thread/INFO]: This server is running Paper version git-Paper-0 (MC: 1.19) (Implementing API version 1.19-R0.1-SNAPSHOT) (Git: 9ad94dc)
[21:09:08] [Server thread/INFO]: Server Ping Player Sample Count: 12
[21:09:08] [Server thread/INFO]: Using 4 threads for Netty based IO
[21:09:09] [Server thread/INFO]: Default game type: SURVIVAL
[21:09:09] [Server thread/INFO]: Generating keypair
[21:09:10] [Server thread/INFO]: Starting Minecraft server on *:25565
[21:09:10] [Server thread/INFO]: Using default channel type
[21:09:10] [Server thread/INFO]: Paper: Using libdeflate (Linux aarch64) compression from Velocity.
[21:09:10] [Server thread/INFO]: Paper: Using OpenSSL (Linux aarch64) cipher from Velocity.
[21:09:13] [Server thread/INFO]: [dynmap] Loading dynmap v3.4-SNAPSHOT-790
[21:09:13] [Server thread/INFO]: [dynmap] version=git-Paper-0 (MC: 1.19)
[21:09:13] [Server thread/INFO]: [dynmap] Mod Support API available
[21:09:13] [Server thread/INFO]: [floodgate] Loading floodgate v2.1.0-SNAPSHOT
[21:09:15] [Server thread/INFO]: [floodgate] Floodgate wurde in 2.170 ms gestartet
[21:09:15] [Server thread/INFO]: [Multiverse-Core] Loading Multiverse-Core v4.3.1-b861
[21:09:15] [Server thread/INFO]: [Geyser-Spigot] Loading Geyser-Spigot v2.0.4-SNAPSHOT
[21:09:15] [Server thread/INFO]: [Multiverse-Portals] Loading Multiverse-Portals v4.2.1-b834
[21:09:15] [Server thread/INFO]: [Multiverse-Inventories] Loading Multiverse-Inventories v4.2.3-b523
[21:09:15] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[21:09:15] [Server thread/INFO]: Preparing level "Lorenas_Welt"
[21:10:11] [Server thread/INFO]: [dynmap] Enabling dynmap v3.4-SNAPSHOT-790
[21:10:12] [Server thread/INFO]: [dynmap] Added 20 custom biome mappings
[21:10:12] [Server thread/INFO]: [dynmap] Using Bukkit Permissions (superperms) for access control
[21:10:12] [Server thread/INFO]: [dynmap] Web interface permissions only available for online users
[21:10:13] [Server thread/INFO]: [dynmap] Mod Support processing completed
[21:10:21] [Server thread/INFO]: [dynmap] Loaded 27 shaders.
[21:10:21] [Server thread/INFO]: [dynmap] Loaded 83 perspectives.
[21:10:21] [Server thread/INFO]: [dynmap] Loaded 22 lightings.
[21:10:21] [Server thread/INFO]: [dynmap] Starting enter/exit processing
[21:10:22] [Dynmap Render Thread/INFO]: [dynmap] Finish marker initialization
[21:10:22] [Server thread/INFO]: [dynmap] Web server started on address 0.0.0.0:8123
[21:10:22] [Server thread/INFO]: [dynmap] version 3.4-SNAPSHOT-790 is enabled - core version 3.4-SNAPSHOT-790
[21:10:22] [Server thread/INFO]: [dynmap] For support, visit our Discord at https://discord.gg/s3rd5qn
[21:10:22] [Server thread/INFO]: [dynmap] For news, visit https://reddit.com/r/Dynmap or follow https://twitter.com/Dynmap
[21:10:22] [Server thread/INFO]: [dynmap] To report or track bugs, visit https://github.com/webbukkit/dynmap/issues
[21:10:22] [Server thread/INFO]: [dynmap] If you'd like to donate, please visit https://www.patreon.com/dynmap or https://ko-fi.com/michaelprimm
[21:10:23] [Server thread/INFO]: [dynmap] Loaded 3 maps of world 'Lorenas_Welt'.
[21:10:23] [Server thread/INFO]: [dynmap] Loaded 8 pending tile renders for world 'Lorenas_Welt'
[21:10:23] [Server thread/INFO]: [dynmap] Full render for world 'Lorenas_Welt' restored
[21:10:23] [Server thread/INFO]: [dynmap] Loaded 2 maps of world 'Lorenas_Welt_nether'.
[21:10:23] [Server thread/INFO]: [dynmap] Loaded 2 maps of world 'Lorenas_Welt_the_end'.
[21:10:23] [Server thread/INFO]: [dynmap] Enabled
[21:10:23] [Server thread/INFO]: [floodgate] Enabling floodgate v2.1.0-SNAPSHOT
[21:10:25] [Dynmap Render Thread/INFO]: [dynmap] Loading default resource pack
[21:10:25] [Server thread/INFO]: [Multiverse-Core] Enabling Multiverse-Core v4.3.1-b861
[21:10:25] [Server thread/WARN]: [Multiverse-Core] "Multiverse-Core v4.3.1-b861" has registered a listener for org.bukkit.event.entity.EntityCreatePortalEvent on method "public void com.onarandombox.MultiverseCore.listeners.MVPortalListener.entityPortalCreate(org.bukkit.event.entity.EntityCreatePortalEvent)", but the event is Deprecated. "Server performance will be affected"; please notify the authors [dumptruckman, Rigby, fernferret, lithium3141, main--].
[21:10:25] [Server thread/INFO]: [Multiverse-Core] §aWe are aware of the warning about the deprecated event. There is no alternative that allows us to do what we need to do and performance impact is negligible. It is safe to ignore.
[21:10:27] [Server thread/INFO]: [dynmap] Loaded 3 maps of world 'Lobby'.
[21:10:37] [Dynmap Render Thread/INFO]: [dynmap] Full render of map 'surface' of 'Lorenas_Welt' in progress - 33300 tiles rendered (1025,41 msec/tile, 1619,85 msec per render)
[21:11:15] [Server thread/INFO]: [dynmap] Loaded 3 maps of world 'Feel_Free'.
[21:11:15] [Server thread/INFO]: [Multiverse-Core] 5 - World(s) loaded.
[21:11:15] [Server thread/WARN]: [Multiverse-Core] Buscript failed to load! The script command will be disabled! If you would like not to see this message, use
/mv conf enablebuscript false to disable Buscript from loading.
[21:11:15] [Server thread/INFO]: [Multiverse-Core] Version 4.3.1-b861 (API v24) Enabled - By dumptruckman, Rigby, fernferret, lithium3141 and main--
[21:11:15] [Server thread/INFO]: [Geyser-Spigot] Enabling Geyser-Spigot v2.0.4-SNAPSHOT
[21:11:17] [Server thread/INFO]: [Geyser-Spigot] ******************************************
[21:11:17] [Server thread/INFO]: [Geyser-Spigot]
[21:11:17] [Server thread/INFO]: [Geyser-Spigot] Geyser Version 2.0.4-SNAPSHOT (git-master-691d674) wird geladen
[21:11:17] [Server thread/INFO]: [Geyser-Spigot]
[21:11:17] [Server thread/INFO]: [Geyser-Spigot] ******************************************
[21:11:30] [Network Listener - #1/INFO]: [Geyser-Spigot] Geyser wurde unter 0.0.0.0:19132 gestartet
[21:11:30] [Server thread/INFO]: [Geyser-Spigot] Fertig (12,954s)! Verwende /geyser help für Hilfe!
[21:11:30] [Server thread/INFO]: [Multiverse-Portals] Enabling Multiverse-Portals v4.2.1-b834
[21:11:30] [Server thread/INFO]: [Multiverse-Portals] 4 - Portals(s) loaded
[21:11:31] [Server thread/INFO]: [Multiverse-Portals 4.2.1-b834] Enabled - By Rigby and fernferret
[21:11:31] [Server thread/INFO]: [Multiverse-Inventories] Enabling Multiverse-Inventories v4.2.3-b523
[21:11:31] [Server thread/INFO]: [Multiverse-Inventories 4.2.3-b523] enabled.
[21:11:32] [Server thread/INFO]: Starting GS4 status listener
[21:11:32] [Server thread/INFO]: Thread Query Listener started
[21:11:32] [Server thread/INFO]: Starting remote control listener
[21:11:32] [Query Listener #1/INFO]: Query running on 0.0.0.0:25565
[21:11:32] [Server thread/INFO]: Thread RCON Listener started
[21:11:32] [Server thread/INFO]: RCON running on 0.0.0.0:25575
[21:11:32] [Server thread/INFO]: Running delayed init tasks
[21:11:32] [Server thread/INFO]: [Multiverse-Inventories] First run!
[21:11:32] [Server thread/INFO]: Done (144.666s)! For help, type "help"
[21:11:32] [Server thread/INFO]: Timings Reset
Hope it would help!
Hello James, very nice script, the server is running great, but it doesn’t make any backups. The folder just stays empty. Is it wanted like that?
Hey Robert,
Welcome! It definitely shouldn’t stay empty like that. The backups are performed by start.sh every time the server is rebooted actually.
Would you be willing to start / reboot your server and post the log here? It should tell us if something is going wrong during the backup process!
Hey James,
I have found the cause. I looked at the start.sh and adjusted the following part. Because I edited the worldname on my server…
# Back up server
if [ -d "world" ]; then
if [ -n "$(which pigz)" ]; then
Now the backups also run! I didn’t know that the trigger the worldname is
Sry for my Bad english
Hey Robert,
Don’t sweat the English at all, I’m just happy enough you know my language well enough for us to communicate! I’m glad you got this working. Was it special characters that did this or something in the name?
Take care and enjoy!
Hi James, no, not a specific one, just a general different world name. I use multicore, so I changed the world names, the world “world” no longer exists on my server. I think since he couldn’t find the folder, the trigger didn’t fire. Could you use an other trigger in your Script for future?
Hey Robert,
That certainly sounds like part of it. The server supports multiple servers and they would all use that same “world” folder. I cannot think of any reason to change the world folder. Are you reusing the same server folder or something for multiple servers? It’s already designed for multiple servers but it works differently than this if that makes sense. You just run SetupMinecraft.sh multiple times and you’d end up with multiple separate folders for the servers that all use that same “world” folder.
That’s far enough off from the intended script usage that you probably shouldn’t use them and spin it off into something custom as it’s basically not designed to work this way. They probably need some modifications for a custom setup like that. It’s pretty common to do this but it’s tough without some familiarity with scripting etc.
I don’t think changing the world folder would crash it. It would probably just stop the automatic backups from working properly. We need to look at your logs and sudo systemctl status yourserver to be sure!
Hey James, it was only a question, I think any other people do it like me and change the worldname…
After editing the trigger to my worldname in the start.sh script it works fine, I’ve gotten a backup by every server start now! I’ll test the backup today on my testserver and will report to you. I didn’t use multiple servers, only multiple worlds on my server, so you can jump to other worlds by portals, the name change is only for a better visibility, it was just a good idea in my mind… 😉
Thank you for your time, but I hope we don’t have to do such a great length
Greetings Robert
Hey Robert,
Oh I see what you are doing! This is typically called a “multiverse” server and it usually uses plugins. I had no idea you could even do this on Java without using plugins (I know you can do it on Bedrock). I thought everyone used Waterfall/Bungeecord and those types of systems for this.
So theoretically this should still work but you would want to change start.sh to backup more than just the “world” folder. I can definitely see the upsides of doing it this way. I’ve just never encountered it and everyone I’ve seen try to do multiverse setups used one of those systems. Thanks for sharing what you are doing, today I learned!
Excuse my bad English, but I said it’s not good enough. I use multivers core for it. As far as I know, it doesn’t work without it either. But after I edited the start.sh the server does its backups and saves me all my worlds. I hope the backup works. Unfortunately I couldn’t test it today.
Hey Robert,
Don’t sweat it at all, that actually lines up with how I thought things worked although I’m always open to the idea that I haven’t seen / don’t know everything because that is definitely true!
I checked the backups line and it looks like this:
tar --exclude='./backups' --exclude='./cache' --exclude='./logs' --exclude='./jre' --exclude='./paperclip.jar' -pzvcf backups/$(date +%Y.%m.%d.%H.%M.%S).tar.gz ./*
It looks like in this version I do *not* only back up the world folders (I’m pretty positive in the Bedrock version though it only gets the world folder). That means your backups should be working. You can see which folders are excluded there and it’s backups, cache, logs, and jre basically.
In other words I think this should work without any further changes! Definitely let me know once you confirm it but I think I am following you 100% here now and after double checking the scripts I think this will work for you!
Hello James,
Success, it works! After adding the backup files, I tried to start the server. But it fails, I think it was due to missing permissions because it said no permissions when opening some files. I then ran the update.sh once.
Lo and behold, the server starts without errors.
Woohooo, thanks for your time! Grate work man!
Hey Robert,
No problem at all, I’m very happy you got it working. Enjoy and take care!
James – A couple of days ago, I downloaded and ran the setup script again hoping it would install version 1.19. Since then, my server have been shutting down at 4am but not restarting. I need to cycle power to get it back up. Any thoughts?
Hey Cardinal,
I would run it one more time (SetupMinecraft.sh)! I made some changes yesterday when it dropped so that it would work properly. That should take care of it!
Seems to be up and running again. Thx! Enjoying my new Mangrove Swamp and playing with frogs!
Hey Cardinal,
Excellent! I saw some of the frogs in mine as well. They have a bunch of neat mechanics. I guess there were fireflies that got cut because the frogs would eat them all (or something, is that bad?) but they still eat Magma cubes!
Glad to hear it’s working again, have fun!
James – the server did not restart again last night. Any ideas?
Hey Cardinal,
So it almost always ends up being a broken OS. If you search this thread for comments of it not restarting you will see it’s my longest threads and there are a *lot* of them. Here’s one.
I suggest following all the commands I’m entering on there. This has never turned out to be the script out of dozens of times this has happened for what it’s worth. It’s always just a matter of convincing the person that their OS is broken.
Some commands are sudo systemctl status yourserver and the log files and the other ones I posted in there. Sometimes the server just needs to be restarted but I imagine when you start looking through the logs you’re going to find very strange and difficult to explain problems. Let’s see what you are seeing in your logs/status but I’d imagine this is a corrupted OS and there are going to be service issues just like Greg’s!
So something odd is happening…and likely will require a rebuilt of the OS. The system shuts down at 4am and reboots but appears to crash during a backup that triggered after the startup. Interestingly, I just manually issued the “restart.sh” script and it is back up with no issues.
/var/log/syslog extracts from last night:
Shutting down
Jun 15 03:21:12 paynecraft rngd[538]: stats: FIPS tests speed: (min=23.091; avg=42.035; max=78.170)Mibits/s
Jun 15 03:21:12 paynecraft rngd[538]: stats: Lowest ready-buffers level: 2
Jun 15 03:21:12 paynecraft rngd[538]: stats: Entropy starvations: 0
Jun 15 03:21:12 paynecraft rngd[538]: stats: Time spent starving for entropy: (min=0; avg=0.000; max=0)us
Jun 15 04:00:01 paynecraft CRON[2612]: (mcadmin) CMD (/home/mcadmin/minecraft/restart.sh 2>&1)
Jun 15 04:00:34 paynecraft bash[2697]: Server is not currently running!
Jun 15 04:00:34 paynecraft systemd[1]: minecraft.service: Control process exited, code=exited, status=1/FAILURE
Jun 15 04:00:34 paynecraft systemd[1]: minecraft.service: Failed with result 'exit-code'.
Jun 15 04:00:34 paynecraft systemd[1]: minecraft.service: Consumed 12h 28min 19.201s CPU time.
Jun 15 04:00:34 paynecraft systemd[1]: Stopping Session 1 of user mcadmin.
Jun 15 04:00:34 paynecraft systemd[1]: Removed slice system-modprobe.slice.
Jun 15 04:00:34 paynecraft systemd[1]: Stopped target Bluetooth.
Restarting
Jun 15 04:00:34 paynecraft bluetoothd[663]: Stopping SDP server
Jun 15 04:00:34 paynecraft systemd[1]: Stopping LSB: rng-tools (Debian variant)...
Jun 15 04:00:34 paynecraft bluetoothd[663]: Exit
Jun 15 04:00:34 paynecraft systemd[1]: Condition check resulted in Turns off Raspberry Pi display backlight on shutdown/reboot being skipped.
Jun 15 04:00:38 paynecraft fake-hwclock[142]: Wed 15 Jun 08:00:35 UTC 2022
Jun 15 04:00:38 paynecraft systemd-fsck[148]: e2fsck 1.46.2 (28-Feb-2021)
Jun 15 04:00:38 paynecraft systemd-fsck[148]: rootfs: clean, 159567/7707392 files, 5363459/31192150 blocks
Jun 15 04:00:38 paynecraft systemd[1]: Finished Remount Root and Kernel File Systems.
Backup starts:
Jun 15 04:00:50 paynecraft bthelper[787]: Changing power off succeeded
Jun 15 04:00:50 paynecraft bthelper[685]: Changing power on succeeded
Jun 15 04:00:56 paynecraft dhcpcd[760]: eth0: no IPv6 Routers available
Jun 15 04:00:57 paynecraft bash[795]: sort: write failed: 'standard output': Broken pipe
Jun 15 04:00:57 paynecraft bash[795]: sort: write error
Jun 15 04:00:57 paynecraft bash[761]: Backing up server (all cores) to cd minecraft/backups folder
Jun 15 04:00:57 paynecraft bash[802]: ./banned-ips.json
Jun 15 04:00:57 paynecraft bash[802]: ./banned-players.json
Jun 15 04:00:57 paynecraft bash[802]: ./bukkit.yml
Jun 15 04:00:57 paynecraft bash[802]: ./commands.yml
Jun 15 04:00:57 paynecraft bash[802]: ./config/
CRASH
Jun 15 04:00:59 paynecraft bash[802]: ./libraries/net/kyori/adventure-key/4.9.3/adventure-key-4.9.3.jar
Jun 15 04:00:59 paynecraft bash[802]: ./libraries/net/kyori/adventure-key/4.10.1/
Jun 15 04:00:59 paynecraft bash[802]: ./libraries/net/kyori/adventure-key/4.10.1/adventure-key-4.10.1.jar
Jun 15 04:00:59 paynecraft bash[802]: ./libraries/net/kyori/adventure-text-serializer-gson/
Jun 15 04:00:59 paynecraft bash[802]: ./libraries/net/kyori/adventure-text-serializer-gson/4.9.3/
Jun 15 04:00:59 paynecraft bash[802]: ./libraries/net/kyori/adventure-text-serializer-gson/4.9.3/adventure-text-serializer-gson-4.9.3.jar
Jun 15 08:01:03 paynecraft systemd-timesyncd[758]: Initial synchronization to time server 64.142.54.12:123 (0.debian.pool.ntp.org).
Jun 15 08:01:03 paynecraft bash[802]: ./libraries/net/kyori/adventure-text-serializer-gson/4.10.1/
Jun 15 08:01:03 paynecraft bash[802]: ./libraries/net/kyori/adventure-text-serializer-gson/4.10.1/adventure-text-serializer-gson-4.10.1.jar
Jun 15 08:01:03 paynecraft bash[802]: ./libraries/net/kyori/examination-api/
Jun 15 08:01:03 paynecraft bash[802]: ./libraries/net/kyori/examination-api/1.3.0/
Jun 15 08:01:03 paynecraft bash[802]: ./libraries/net/kyori/examination-api/1.3.0/examination-api-1.3.0.jar
Jun 15 08:01:03 paynecraft bash[802]: ./libraries/net/kyori/adventure-text-serializer-legacy/
Hey CardinalFang,
Yikes, I definitely concur. The systemd service failing to restart like this is kind of a canary in the coal mine for OS-level disk corruption and weirdness. You can actually see it fsck’ing the disk in your “Restarting” section:
Jun 15 04:00:38 paynecraft systemd-fsck[148]: e2fsck 1.46.2 (28-Feb-2021)
Jun 15 04:00:38 paynecraft systemd-fsck[148]: rootfs: clean, 159567/7707392 files, 5363459/31192150 blocks
This usually means the drive was flagged for repair or some disk problem was detected. The fsck repair seemed to have completed successfully but there’s almost certainly some damage / overlapping sectors and we can see that in some of the other output. You can tell by the absolutely crazy errors we’re getting. Very weird stuff is starting to happen. Broken pipe errors, crazy crashes that make no sense, etc.
This is especially common on the Raspberry Pi (for a lot of reasons, it tends to lose power more often than other types of servers, the storage tends to be lower grade although good storage can be used, etc.) and usually means it’s time for a reimage/rebuild. Make sure you have several copies of your backups saved (I know you’ve been around long enough to know the drill on the backups so this is mostly for others reading this) and after a reimage everything should fire right up provided none of the backups themselves had any of this corruption stored in them.
I think a reimage will get everything back up to par although they’re never fun to do. In this case I think it’s worth it / necessary as well!
James – What should I be monitoring to know when the script will upgrade to version 1.19? The “Paper” site?
Hey CardinalFang,
Welcome back! That is the one! I have it open on mine as well. If you beat me to it you can do the override and it will work once it’s on Paper’s servers!