The server refers both to a set of hardware and software which is set up to accept incoming TCP/IP connections on a socket, and respond to these connections with the information requested. In simpler terms, the server is the machine and programs that allow you to connect to this website, log on to the minecraft server, etc. The term server can be difficult to understand due to the fact that it can refer to both the software programs which run these connections, and the hardware which does the processing required by said software.
The term "server" when referring to hardware almost always refers to the physical machine which runs the software that the platform uses to maintain a connection. In simpler terms, it refers to the actual computer box which the software server runs on. (See, it's kinda confusing.)
Current Server Specifications
- CPU - Intel Core i7 5820K, 12 logical cores clocked at 3.3 GHz
- RAM - Crucial Ballistics 16 GB DDR4 at 2133 MHz
- Motherboard - AsRock Sabertooth X99
- System Disk - 1 TB Intel NVMe SSD
- Backups - Full world backups four times daily to a 4 TB NAS
- Graphics - Some puny little 1 GB Nvidia card.
- PSU - 680 watt Apevia PSU
- Network (internal) - pfSense Custom built
- Network (internet) - 500 Mbps Rx, 55 Mbps Tx
- Operating System - Ubuntu 19.04 64-bit
When using the term "server" to refer to software, it is generally speaking a much more broad term. If someone asked how the server (software) was running, the next question would be, "which one?" Because at present, there are six different pieces of software which can be classified as a "server" which run on the hardware server:
- Spigot - Spigot is a Minecraft server based off of the Bukkit API. Spigot is the server which manages access to the world and the plugins which people use on a daily basis. The spigot server runs on two ports: TCP/UDP port 25565 for client connection, and TCP/UDP port 25575 for RCON.
- Apache 2 - Apache 2 is an HTTP server which allows connections on TCP/UDP port 80. This server is also known as the web server, and it is the program which is serving you this page as you read it.
- MySQL - MySQL is a database server which runs off of the SQL database language. This server cannot be accessed directly externally. Instead, it works with the other servers to provide a place to store information. For example, the text of this page is stored in a MySQL database.
- Dynmap - Dynmap is technically a plugin which is managed by Spigot, however it also runs it's own web server. Dynmap is the plugin which allows us to have dynamic maps of the world. It does this by gathering information from the world files and Spigot, and rendering a map of the world which is served
through an HTTP server running on TCP/UDP port 8123.within a special folder of the web server simply named "dynmap".
- FTP (Proftpd with SSL) FTP (File Transfer Protocol) is a type of server which accepts connections on TCP/UDP port 21, and allows files to be transferred in and out of the server. You can think of FTP kinda like a flash drive that you can access from anywhere with an internet connection. FTP is not normally used by anyone who does not play a key role in the server's maintenance. Indeed, you must have an administrator created account in order to even access it. Additionally, the FTP server now requires explicit TLS. This is a security measure which basically means you must use an FTP client which is capable of SSL connections. (Windows Explorer for example, cannot do this. You therefore must use an FTP client like Filezilla.)
- NAS - The NAS is a little bit different. Instead of running as piece of software on the main server, it runs as an entire operating system on a completely different computer. The operating system is called FreeNAS. The ONLY thing that this server does is accept local connections and allow file transfer and storage through the use of SMB. This provides a large space to back the server up, and a quick way to transfer files between computers without having to go through the windows/linux barrier, but it only works locally. (Meaning you have to be in my house to use it)
Other Utilized Software
- Mediawiki - Mediawiki is a wiki engine which is allowing this page to run. It is most famously used by Wikipedia. (C'mon do I have to provide a link? Who doesn't know what Wikipedia is?!?)
- PHP - PHP is a programming language which is required for mediawiki, but also plays a part in serving the minecraft server's status page, as well as some of the little applications I've programmed for the server.
- Python - Python is a programming language which is used mainly for scripting. However, it also plays a key role in the GPS Plugin. In addition, Python can be found working behind the scenes in tairabot, the robot I built to emulate me. It can also be found doing minor processing for my ocarina tabs.
- Django - Django is a web framework which essentially allows Python code to be executed on web pages, but that is the most paltry explanation of Django ever. Django can do a whole heck of a lot, but I mainly use it in the implementation of tairabot. It is also used to serve the pages where you can find my ocarina tabs.