Terminology

## Computer Basics

What you need to know is:

1. Your server's performance will mainly rely on these computer parts: The **CPU, RAM, and long-term storage (either HDD or SSD)**.
2. The speed of all of these must be about equally good in order for your server to perform optimally. If you have 32 GB of RAM but your other parts aren't very good then your server won't run smoothly.
3. **Core Processing Unit (CPU)**
	* Is the brain of the computer.
	* CPUs are made up of cores. Essentially more cores allow doing more tasks or running more programs at once smoothly. Unfortunately, Minecraft servers will typically only use one core of a CPU. Thus, when you're looking at what computer specs different hosts offer keep in mind that whichever CPU has the best performance *per core* is the fastest for running a server.
	* A more in-depth explanation of cores: Each core contains a thread, which is what processes all the data. CPUs that offer hyper-threading capabilities can split this physical thread into two virtual ones, thus making it even faster! When viewing CPU details on the link provided above, you may see something like "(4c/4t)". This means that particular CPU has 4 cores, each with 1 physical thread and does not support hyper-threading. Alternatively, "(4c/8t)" would point out that the CPU does support hyper threading because there are more threads than there are cores which is only possible with hyper-threading.
4. **Random Access Memory (RAM)**
	* This is the short-term memory of your computer.
	* Minecraft hosts frequently will emphasis how much RAM they offer for each plan but don't state their other specs. **This is a major red flag**. If they aren't willing to show off their specs, they probably aren't using something very good. Although bear in mind they may just have their specs on another page, such as the "About Us" page.
5. **Hard Disk Drive (HDD)** and **Solid State Drive (SSD)**
	* These are two long-term storage devices. In short, NvMe SSD is the fastest storage you can get. SSD storage is very fast and is most common to run servers on. HDD is slower and generally not recommended, however it is good for storing server backups because HDD drives allow more storage space for a cheaper price. Using faster storage methods means faster world generating and better performance.
6. **The Operating System (OS)**
	* This is what all of your computer's software runs on. There are three popular Operating Systems: Windows, Mac, and Linux.
	* Note that Linux has different "flavors", or types. The three most commonly used for hosting Minecraft servers are: Ubuntu, Debian, and CentOS. Each has their pros and cons, but Ubuntu is known as the most beginner-friendly. Although the vast majority of new server owners will be using shared hosting providers and thus not have to worry about the Linux part of management.

## Plugins vs Mods

Many servers like to add additional features to Minecraft's gameplay using either plugins or mods.

### What are they? What is the difference?

Dez Ewing, from CubedHost, puts it quite nicely:

> ***Plugins**, which can be run off of CraftBukkit/Spigot/Paper, are used to change and/or enhance existing Minecraft server content. They are used server-side only, meaning that players aren't required to take any extra steps in order to connect to a server running plugins. Some of the most popular plugins you've likely heard of are "Essentials", "GriefPrevention", and "WorldEdit".*
>
>

> ***Mods**, which are typically run off of Forge, are used to add new items/features to the Minecraft and/or enhance the existing gameplay. Mods are often required client and server-side (such as "Biomes O' Plenty"), though some mods are built as client-side only (such as "Optifine" or "Damage Indicators"). Mods can also be grouped together to create what is known as a modpack (such as "All The Mods 3" or "Sky Factory").*
>
>

> ***Unfortunately**, mods and plugins tend to not want to play well together, so it's unlikely you'll be able to run a server with both successfully.*
>
>

* Source: here

To finish up their explanation, SpongeForge is an add-on mod of Forge that allows using Sponge plugins on modded servers! It has its limits, but is still is an extremely powerful tool that should not be overlooked.

## Popular Server Software

There are several types of software for running servers and they each have their own purposes. It is crucial to know which type of server software you want to use *before* you start making your server.

### Popular Server Types

1. **Vanilla**
	* Vanilla is an unmodified version of Minecraft
	* Does not support using plugins or mods
	* Does not provide the optimization features other server types do
2. **CraftBukkit / Bukkit**
	* Allows using plugins on servers
	* Is less popular today, but is the foundation that Spigot and Paper were built upon
3. **Spigot**
	* It allows using plugins on servers
	* It's a fork of CraftBukkit, which means it provides all of CraftBukkit's features and more
	* You gain access to a wider variety of plugins to use
	* Spigot has a massive community on its forums that can help answer your questions and point you in the right direction
	* Spigot used to be very popular, but Paper is probably used more nowadays. That said, Spigot's website is still the best place to find Minecraft plugins. Almost all plugins on the SpigotMC website will be compatible with Paper and Purpur.
4. **Paper**
	* It allows using plugins on servers
	* It's a fork of Spigot meaning it provides all of Spigot's features and more
	* It aims to provide the best performance (least lag) out of CraftBukkit, Spigot, and Paper
	* To receive support for paper use the Paper Discord server or forums found here.
	* According to developers I've met all *well developed* Spigot plugins will work on Paper servers. Any plugin that does not is probably using bad practices and you shouldn't be using them anyways.
5. **Purpur**
	* It allows using plugins on servers
	* While CraftBukkit, Spigot, and Paper all focus on performance improvements- Purpur focuses on having those features *and* changes to gameplay (such as being able to ride mobs). While more features can be neat it may also increase the risk of things not behaving in a "vanilla-like" way and thus may confuse players.
	* For optimal performance on a plugin-based server it is generally recommended to use Paper because it provides the most stable experience. In the event you want to use Purpur's gameplay features then, of course, use Purpur.
	* To receive support for Purpur use their Discord server found here.
6. **BungeeCord**
	* If you have more than one server and you'd like to connect them all using a Hub server then use Bungeecord for the Hub. Alternatively, you may use Waterfall which is explained below.
7. **Waterfall**
	* According to ItzSomebody on the SpigotMC Wiki,
	* " ***WaterFall** is another cool creation made by the Paper~~Spigot~~ guys. It is a high performance fork of BungeeCord with over 40 patches [patches are fixes or improvements to software] that are supposed make BungeeCord even better. Because WaterFall is a modified BungeeCord however, it is known to have some incompatibilities with existing BungeeCord plugins.*"
8. **Forge**
	* Allows using mods and modpacks on singleplayer, as well as, on servers
	* It has less optimization features than Spigot and Paper, however, there are *many* mods that aim to optimize your server (such as "FoamFix") and Minecraft client (such as "Optifine")
	* If combined with SpongeForge (a Forge mod / add-on), then you can use mods and sponge plugins together
	* In general, mods will require more computer resources to run than a normal plugin-based server of the same size
	* Lastly, you may occasionally hear from the plugin community that mods are "bad", "crash the server", or "cause major lag".
		+ The "bad" statement is downright false. Plugins are fairly limited in what they can do. For those looking to add new content to Minecraft, mods are definitely the way to go.
		+ However, there is *some* truth to the two other statements. Poorly developed mods run the risk of crashing your server. This is true for plugins as well, but especially for mods because mods often implement custom blocks in-game that use more computer resources. Furthermore, when mods are used irresponsibly on a server they can also crash the server.
		+ Lastly, "lag" is a universal experience. Regardless of which server software you use there is a good chance you'll experience it depending on your computer's hardware and internet speeds. That said, modded Minecraft typically requires more computer resources to play. While playing normal Minecraft works on 1-2 GB of RAM allocated to Minecraft's client, modded Minecraft often requires 4-6 GB of RAM. This remains true on the server-side as well. Furthermore, some mods require a decent Graphics Processing Unit (GPU) to show detailed item textures and such in-game. As a result, anyone using Minecraft on a low-end or middle-end computer is much more likely to experience lag than on a normal plugin-based server.
	* Finally, bear in mind that there are some mods that are more server-friendly (cause less lag on servers) than others that were designed with singleplayer-use in mind. That said, all heavy-duty mods will lag at some point if you overuse them enough.
9. **Fabric**
	* Fabric is a fork of Forge
	* It acts to provide additional patches but only mods specifically designed for Fabric will work

Those are the popular and most commonly used types of server software. If you'd like to learn about even more server software you can read this SpigotMC Wiki page!

### Personal Recommendations

Please bare in mind these are solely *my* opinions. Your views on it may vary.

* *If you* are completely new to making servers and *want to use plugins*, I recommend **Paper**.
	+ While they don't have the **massive** community Spigot has, I've been told their support is good.
	+ Furthermore, they allow downloading the Paper server jar file directly from their website! Spigot, on the other hand, requires you to go through a series of steps which may be very difficult for a complete beginner. While there are some alternative methods to install Spigot, they are not recommended.
	+ Paper also has great server optimization features to minimize lag and it even fixes some duplication bugs by default!
* *If you* are completely new to making servers and *want to use mods*, I recommend **Forge**.
	+ Note that if you choose to go this route you will probably want to either use a pre-made modpack or make your own. Each have their pros and cons and tutorials will be provided for both methods.
	+ **Bear in mind:** Creating your *own modpack* can be as small or as large as you want. However, the larger it is (and/or more configuration changes made) the more time consuming it will be! Stable/popular modpacks made by experienced teams can even take months to make!
	+ However, if you have dedication and enjoy being able to create a server with everything exactly how you want then it may be the path for you!

## Domains, Sub-Domains, IPs, and Ports

### IPs and Ports

When you first purchase a Minecraft server plan from a Minecraft host your server will have an **IP** and a **Port**. **If players want to join your server they will need to enter your IP and Port** into their Minecraft client like so: `**64.233.187.99:25597**`. The format is: **IP:Port**

### Dedicated IPs

Requiring players to input: "`**64.233.187.99:25597"**` to join your server does not look professional. Plus it is hard to type in. Who really wants to go through that effort? (Shh, some people don't know about copy and paste). So, you can get a **dedicated IP** from your host. These will typically cost a few dollars extra per month and all it does is change your port number to `**25565**`. Now, `25565` is an exception to the rule of being required to input the port to join a server. If your Minecraft server uses a dedicated IP, AKA the `25565` port, then **your players won't need to type in your port to join your server!** Hooray! Now they can just type in: `64.233.187.99`.

### Domains

But, let's be honest. Players are lazy. No one wants to type in a long IP number. Plus it doesn't look professional and it isn't easy for your players to remember if they want to tell their friends about your server. This is where a **domain** comes in. **A domain is essentially an alias for your IP, made up of letters and/or numbers**. For example, you may decide to get a domain called: `**6B6T.net**`. Now, **with your dedicated IP and domain**, players **don't** **need** to type in your `IP:Port`. They can type in: `6b6t.net` to join! Hooray! It is actually memorable and easy to type now.

### Sub-Domains

Now, let's say later on you decide to open up some new servers and create a Network containing several different gamemodes. Each domain costs money and who wants to pay for a new domain? So we can take advantage of sub-domains. Each sub-domain will allow players to join a different server / gamemode you own. For example, if your normal domain is: `MyCoolServer.net` you could have the following sub-domains:

* `survival.MyCoolServer.net`
* `creative.MyCoolServer.net`
* `skyblock.MyCoolServer.net`
* `hub.MyCoolServer.net`

## Security Basics

### Denial of Service (DoS) Attack

According to Wikipedia, "In computing, a **denial-of-service attack** (**DoS attack**) is a cyber-attack in which the perpetrator seeks to make a machine or network resource unavailable to its intended users by temporarily or indefinitely disrupting services of a host connected to the Internet."

### Distributed Denial of Service (DDoS) Attacks

Wikipedia also explains a DDoS attack: "In a **distributed denial-of-service attack** (**DDoS attack**), the incoming traffic flooding the victim originates from many different sources. This effectively makes it impossible to stop the attack simply by blocking a single source."

**In other words,** DoS and DDoS attacks are cyber-attacks used to either slow or bring your server or network down for a period of time. In order to prevent against these attacks, it is important to use DDOS protection. Most Minecraft hosts offer this by default, however, double check before paying for a plan! If you end up using a VPS or Dedicated Server (more on this later), you may need to manually setup the DDOS protection yourself.

## Server Management Terms

1. **Configuration files** allow you to edit settings on your server.
	* Most plugins and mods have their own config file.
	* In addition, the server software you use will have its own configuration file(s) too.
		+ For example, Craftbukkit uses bukkit.yml, Spigot uses spigot.yml, and Paper uses both paper-global.yml and paper-world-defaults.yml in more recent versions of Paper.
		+ Server software that is a fork of another type of server software will contain the original software's configuration file *and* their own configuration file. As a result, Paper servers will have "bukkit.yml", "spigot.yml", and its own configuration files.
	* Each configuration file must follow a set of rules for how it is formatted. This is called **Syntax**.
	* There are several types of syntax: YAML, JSON, .conf, and more. Any plugin-based servers will most likely be using YAML syntax and any mod-based servers will use JSON or .conf syntax. It is important to know how to edit files with the syntax applicable for your server otherwise it could cause a lot of problems down the road. Tutorials on this will be provided in the Server Management section of this wiki.
	* Click the image to the right for an example configuration file using the YAML syntax.
2. The **Console** is what shows all of the server messages, errors, and in-game chat to the server owner.
	* You typically connect to it via a website provided by your Minecraft hosting provider. If you are running the server on your own computer, however, the console will be a command prompt.
	* To enter commands into the console to run on your server type the command without the slash ('/').
3. **File Transfer Protocol (FTP)**: According to Wikipedia, "*The File Transfer Protocol (**FTP**) is a standard network protocol used for the transfer of computer files between a client and server on a computer network.*"
	* In other words, FTP is used to transfer files from your hosting provider to your computer and vise versa.
4. **SSH File Transfer Protocol (SFTP)**: SFTP is the same as FTP except it uses SSH which is a secure method to transfer the files.
	* FTP and SFTP. These both mean File Transfer Protocol the only difference is SFTP uses SSH and thus is more secure. These both do exactly what they sound like: they allow you to transfer files between your computer and hosting service using software that support FTP and SFTP. This is a very useful tool you will use frequently.