MineOS: what's happening inside

an short walk-through on the architecture behind MineOS

Introduction

MineOS, as an ISO is a complete, working server structure. Literally, burned to a disc or booted directly from within a virtual machine, you can start a server, change its properties and --BAM-- a working server. In this guide, I will explain to you all the potential setups and uses MineOS can have, and help you determine which is most suitable for your tastes/needs.

The information in this page is a helpful read if you're interested in trying out a setup that takes advantage of MineOS' customization features, such as RAMDISKs.

Goals:

  1. teach fundamental issues on how MineOS works
  2. help you determine what parts can be changed to fit your server requirements

What's on this ISO, anyway?

The mineos.iso contains all the files necessary to set up a Minecraft server out there. It's a Linux distro, like one you may be using or are thinking about using. The scripts on here are usable on other Minecraft server set-ups and the scripts on forums are usable on here. My aim is to save you the effort of finding other scripts by giving you the most functional ones to start.

The filesystem is alike every Linux system you may have ever run across, but the files that I have specifically created for Minecraft use (i.e., not http/ssh/scp server binaries) are:

/var/www/httpsdocs - this directory contains all the web interface files

/usr/games/minecraft - this directory contains admin.py, the brains of the operation and uservars, where all the paths used in the scripts are found.

/etc - this contains configuration files for Linux, passwords, etc.

/home/tc - this contains the install scripts that gets MineOS from 'standard tinycore distro' to 'MineOS'

/opt - bootlocal.sh contains startup scripts; .filetool.lst contains the list of all files that should persist through reboot.

Specific files of interest:

/var/www/httpdocs/index.html - this is the page that loads the server/world tabs. When I completely playtest new scripts I make, I'll introduce their functionality directly to the web interface by adding new buttons on here. Buttons for features such as bukkit mod plugin functionality--directly interfacing them, instead of using the Minecraft Server Console (which is accessible on every MC server, even ones not using MineOS).

/var/www/httpdocs/cgi-bin/server.cgi - this is the gateway between a web interface and the server itself. When you click a button to take an action or submit a change, server.cgi is called, filters out some bad input, and send the command to admin.py, which runs commands on the Minecraft Server Console

/usr/games/minecraft/admin.py - this is where all the magic happens. In fact, so much goes on here I have given it its own page. But the basic idea of what this script does is like what many scripts you may find online do--provide a cleaner, safe way to change Linux files and server properties without knowing how to use Linux. This script will get updated as I add features, and aside from the web-interface html files are really the only differences between the first ISO release and subsequent releases.

/usr/games/minecraft/uservars - All the variables containing path information to the live worlds and the backup worlds are here. This file is what makes RAMDISKs a cinch.

/etc/httpd.conf - httpd.conf holds the username and password for the web interface.