Hello, I'm lDucks and this is my guide on how to run a Linux MineCraft server. I ran a server about 8 months. I've been creating plugins since 13 months. A server I managed for over a decade was my experience. Although this guide is not perfect, it may contain errors. I have to reread it several times and have it reread by other people. I hope this helps those who don't have the knowledge to run servers. All the information in this guide has been compiled from my personal experiences and learned through my passion for CS. Enjoy. This guide is to teach you how to set up and run a physical server. This guide does not contain anything with regards to running a community or running a website. This guide focuses on how to set up your server and keep it running smoothly. You can either run a server on your own computer or rent a Minecraft host to host your friends. You will need to do more work if you want to host one on a larger scale. I will explain this in this guide. Prerequisites. Linux Server. This is a guide to a Linux Server. The commands are for CentOS. What you should download: The latest craftbukkit builds This guide will help you set up your server in the correct order. It starts at step 1 and ends with additional information after setup to ensure that your server is running correctly. Picking a Server First of all, if you are opening up a Minecraft server you should expect to put some money into it. It is not a good idea for a server to be run from your own computer or on your network. A proper server setup and an internet service provider are essential for running a server. I highly recommend that if you want to run a Minecraft server you start it up with a Minecraft host. What is a Minecraft host? Well, Minecraft has become big enough where there are hundreds of hosting companies out there dedicated to Minecraft hosting. I won't get into how to manage a server from them, as they don’t have much functionality. Most use MCMyAdmin. If you are not requiring constant maintenance (paintball and hunger games), then you can run a server. You don't really need to read any further. You can get a host for ~$30 a month that will do everything you need and more. If you need to create CRON jobs and edit core files, install software or have a faster processing speed, you will need a dedicated server host. you will eventually need to get a dedicated server host. Usually once you get past ~10GB of RAM from an MC host, the prices are more expensive than just renting a dedicated server. Once you've reached 30 players and can pull in more than $100 per month in donations you will need to expand. For those of you looking for good Minecraft hosts, I have had some good experiences with https://allgamer.net/ - I have supplied a list of Minecraft hosts at the end of this guide. This is where you start looking for dedicated servers. A dedicated server isn't made for Minecraft. It is a physical server that you can rent from the datacenter and use as you please. I will not be covering how to run a Linux-operated Linux server in this guide. Anyone looking to host a Minecraft server would benefit greatly from a dedicated Linux host. This is personal preference. There are no disadvantages to using a Windows server, and no reason to choose Linux. This guide will only be applicable to those who have a Linux machine. You can skip this section if you don’t have a Linuxbox. Now, when picking a server many people are always concerned about their RAM. I have read that you need 1GB RAM for every 10-20 servers slots. This is a great estimate, but it is important to remember that RAM is just one aspect of what you need. You must ensure that your HDD is large enough, that your processor is fast enough, and that your internet speeds are sufficient. I had an i7 3770 4 Core @ 3.45 Ghz, 32GB RAM, 64GB SSD, 32GB HDD, 32GB RAM, 32GB RAM, and 64GB SSD when I was running a server. This is more than enough to manage a server that can hold 200+ people. When renting a box, take this into account. Choopa is a good host. I would recommend that you research other hosts before you decide on one to use. I have supplied a list of hosts at the end of this guide. I recommend getting a box with 16GB of RAM, 16 - 32GB HDD, and 16GB SSD. There are many processors available, so any one you receive will likely do the job. These numbers are too high and you don’t necessarily need that much. You can do less if your budget is tight. I would only recommend these numbers so you have some working space. You may be wondering how you can set up your server now that you have it. You don’t have the ability open Windows Explorer to run the run.bat file that you downloaded from Bukkit’s wiki. Sadly, it is a bit more complicated than that. Upload your craftbukkit file first to your server. I normally used the directory /home/SERVERNAME. Next, create a file called "start.sh". This code should be put on that page: DONT COPY THIS CODE EXACTLY. Java -server.Xms10G.Xmx16G.jar. Every box is different, so you're going to need to change the amount of allocated RAM that you will provide to your server. We have given the server 10GB of extended RAM and 16GB for maximum heap size. DO NOT ALLOCATE ALL YOUR RAM. If you have an 8GB storage device, you should give it the following: -Xms4G or -Xmx6G. If you have a 16GB storage device, you should give it the following: -Xms8G or -Xmx12G. Play around with numbers. Make sure you have at minimum 2GB available. Keep Xmx larger than Xms. Other things are going to be running on your box besides the Minecraft server, so leave some extra space. There are many other options you can choose from depending on how you want the server to be handled by your processor. It is not necessary, but you can do some research in case you need something changed. Upload the start.sh file into the /home/SERVERNAME. This can be done using Filezilla. I'm going to assume that you already know how to use Filezilla or any other FTP client if you're setting it up a server. How do I run the script? Well, let me explain. I'm going teach you how use PuTTy. This method is easier than showing you how to connect to a terminal. PuTTY is perfect for anything you'll want to do on your server box. Download PuTTy here: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Open PuTTy. Enter the hostname. The IP address of your Minecraft server will be required. If you don’t know what it means, you can get it by logging in to your account on the serverhost’s website or by contacting the serverhost. You can also enter a URL to connect to your Minecraft server. Next, you need to enter in the port. If you haven’t changed the port, it should be port 22. Then you want to click the option "SSH" .. Note, this is NOT the port of your Minecraft server. It is the SSH port. After that, you want to open the connection. Click "Open" Once you do that, you'll be prompted for login. If you were not told otherwise, your login name should be root. If you don't know the name of your host, you can contact them. After typing root, press enter. Then enter the password which you should also have gotten from your host. Then click the enter key. The password will not appear as soon as you enter it. You will now need to ensure that certain things are installed on your computer. You will need to have a lot of things such as Java, MySQL, htop and iptraf. I will demonstrate how to do this in this guide. Installing Programs: This is the command line to install all programs you need. You need to remember that not all Linux boxes use the same format. These commands work on a CentOS box. I realize that most people use Ubuntu (and now I do) but at the time I wrote this I was running CentOS. The commands to install are not too different. For CentOS, you can use this command line. what about You can use the "apt–get" command to install Ubuntu. I suggest that you research your distribution to find the right commands. First enter the following command to make sure you can use the rpm extension: Code: yum install rpm If you're running 32bit you'll need to find the RPMs on your own. The iptraffa and htop links I provide are for 64bit boxes. iptraf: Code: yum install http://scriptmantra.info/sources/iptraf-3.0.0-5.el5.x86_64.rpm htop: Code: yum install http://205.196.123.160/j785fw1gc80g/al1aaacqodltr1i/Htopbuild0056.yashua.rf.x86_64.rpm These guides can be found on Google for Java and MySQL installation. I won't waste time rewriting them. JAVA: http://www.wikihow.com/Install-Java-on-Linux MYSQL: http://www.thegeekstuff.com/2008/07/howto-install-mysql-on-linux/ Start MySQL Turning the server on Now, I assume that you are ready to turn this machine on and begin installing plugins. You will need to open an instance (screen) to do this. However, screen does not come preinstalled and you will need to install it. Type: Code: yum install screen If the above command doesn't work, follow the next step. If you got it installed, move on to opening a screen. Go to this link and find the version for your distribution. Then, enter the following two lines into your terminal: Code: yum-y install ncurses -devel pam-devel textinfo libtool URL_TO_RPM Screen is now installed. To open a new screen, type the following into your command line Code: screen-S SERVERNAME You will need to replace servername with the server name. You will want your screen to have the same name when you run it. This is so you can easily find out which server is running for each instance. Once you have done this, a page should appear like this. My screen will be called "WARCHICKEN" at this point. Now, you are on the screen. You are now ready to run your start-script. First, you need to open the file. You type: Code: cd /home/SERVERNAME Since that is the path we decided to use earlier in this guide. Now type: Code This will start your server. This will start your server. It means you did not chmod your start.sh file to 770. Please use the following command to do this: Code: chmod 770 /home/SERVERNAME/start.sh This screen will allow you to enter commands as the servers after the server is turned on. You can detach by pressing CTRL+A+D. You can use Code: screen –r WARCHICKEN to reconnect -r stands for "to connect" -rd stands for "to kick and connect anyone else who is attached off." Only one person can see a screen at once You can also use Code: screen-list To list all the screens that are open, click here To kill a screen, type Code: kill The PID is the number left of the screenname. This number will be different every time you reopen a screen. If your server crashes you will need to close the screen and then open it again.