MineOS is a server front-end to ease managing Minecraft administrative tasks.
This iteration using Node.js aims to enhance previous MineOS scripts (Python-based),
by leveraging the event-triggering, asyncronous model of Node.JS and websockets.
This allows the front-end to provide system health, disk and memory usage, and logging in real-time.
This has been tested on Debian, Ubuntu, ArchLinux, and FreeBSD and should work on all variants, Linux or BSD.
MineOS is distributed through github and downloads its dependencies with npm.
MineOS requires root-privileges, as the authentication relies on the underlying system's /etc/shadow.
Do not install this atop an existing MineOS system, since the installation location is the same /usr/games/minecraft. Using an apt-get based Linux distribution:
apt-get update apt-get install -y nodejs nodejs-legacy npm git rdiff-backup screen openjdk-7-jre-headless mkdir -p /usr/games cd /usr/games git clone https://github.com/hexparrot/mineos-node.git minecraft cd minecraft chmod +x generate-sslcert.sh ./generate-sslcert.sh npm install
For hosts using 'upstart':
cp /usr/games/minecraft/init/upstart_conf /etc/init/mineos.conf start mineos
For hosts using 'supervisor':
cp /usr/games/minecraft/init/supervisor_conf /etc/supervisor/conf.d/mineos.conf supervisorctl reread supervisorctl update supervisorctl start mineos
For hosts using 'systemd':
cp /usr/games/minecraft/init/systemd_conf /etc/systemd/system/mineos.service systemctl enable mineos systemctl start mineos
To use the webui as a background daemon:
node service.js [start|stop|restart|status]
To start the webui in the foreground:
Clone the repository on the host OS, then run:
docker run -itdP --name=mineos-node hexparrot/mineos-node
Specify the ports manually if you do not want them to change when restarting the container.
docker run -itd -p 8443:8443 -p 25565:25565 -p 25566:25566 -p 25567:25567 -p 25568:25568 -p 25569:25569 --name=mineos-node hexparrot/mineos-node
Things to watch out for
On FreeBSD, you will need to mount a Linux-compatible /proc filesystem, i.e., linprocfs,
at /usr/compat/linux/proc in order for the web-ui to work. In addition, where CLANG is
default for your system, you'll need to build the NPM modules differently:
echo "CXX=c++ npm install" | sh
Mineos-node requires rsync 3.1.x or later, 3.0.x does not have the ability to chown
on copy, which is essential for profiles. Depending on your distribution, you may need
to build it from source.
Developing and Contributing
I'd love to get contributions from you! Whether you are most comfortable writing
some of my design goals and we'll see where your efforts can best be used.
See LICENSE.md file.
Create an issue in github or start a post on the MineOS support forums.
The Angular.JS-based web user interface capable of:
- creating and deleting servers,
- starting, restarting, killing and stopping servers
- backup, archive, wait-for-stop-and-backup
- reading ingame console in real-time and submitting commands
- create cronjobs for the most common tasks
- adding and modifying server.properties
- delete previous archives and restore poitns to free up space
- restore server from previous restore point
- see filesystem usage of live server files, archives, and restore points
- authentication via shadow passwords (/etc/shadow) of underlying Linux system
- logs all user actions to file
- cronjobs saved to portable format cron.config
- server can be daemonized to background
- upstart/supervisord restart process on unhandled exceptions
- easy selection of server packs from FTB or Mojang official jars
- PHAR support for Pocketmine servers
- Support for BungeeCord servers
- command-line interface for scripting
- macro often-repeated tasks from web-ui
- more fully document functions
- implement previous_versions: functionality to roll back or view particular files' previous state
- identify java versions in web-ui, allow choice of utilized jvm