Consolidate Minecraft server operations
# Install a specific Minecraft server type and version into the local directory mcsm install server.yamlInstallation includes server binaries, plugins, and mods, leaving a ready-to-go server setup. While convenient for general use in home and private servers, this is particularly useful for setting up runtime ready, dependency vendored, environment packaged Minecraft server images for use on platforms like K8s, Docker Swarm, or even hosted VM platforms.
# Run the local server with all necessary flags and graceful shutdown handling mcsm runUsing mcsm to handle running your server removes the hassle of having to separately handle kill signals or setting up various JVM flags at launch in a script. mcsm run wraps all the usual and necessary flags for various server types into one command based off your server definition and explicitly handles OS signals for graceful server termination. This is handy not just for hand-managed setups, but also simplifies running within containerized environments or OS service definitions like systemd.
# hardcore-server-sample.yaml# Contains install and runtime specifications in one place --- install: kind: paper # various install types such as vanilla, bedrock, and paperversion: 1.16.4plugins: # pull copies of plugins from remote sources at install time - "https://dev.bukkit.org/projects/clearlagg/files/latest"# source local plugins as well - "/plugins/world-edit.jar"run: # configure memory consumption for Java-based serversinitialmemory: 8Gmaxmemory: 8Gconfig: # override common server settings in one place -- have them ready at run timeeula: accepted: truevanilla: gamemode: survivalpvp: truehardcore: truemotd: Hardcore Vanilla Minecraftspawn-protection: 4Aside from reducing the mental overhead of remembering how to configure a server across multiple files, being able to define whole server configuration in a single file makes for easy collaboration and tracking in SVC repos. Straight-forward for small server groups and easily templated for general configuration management solutions.
CI builds and publishes any new release binaries automatically. To download the latest version (or even a previous version), visit our releases page and download the mcsm package that corresponds to your target system.
To download a specific release from your terminal:
# download the binary package for the v0.0.1 amd64 release wget https://github.com/loksonarius/mcsm/releases/download/v0.0.1/mcsm-linux-amd64.tgz # unpackage downloaded binary tar -xzf mcsm-linux-amd64.tgz # move binary to somewhere on my PATH mv mcsm /usr/local/binIf it's important to have a one-liner to the latest release of a specific version, consider using the gitreleases.dev service instead of linking through GitHub releases:
# always pull latest release B) wget https://gitreleases.dev/gh/loksonarius/mcsm/latest/mcsm-linux-mips.tgz # install as usual tar -xzf mcsm-linux-mips.tgz && mv mcsm /usr/local/binFor local system use, run the following from the root of the repo:
# install CLI built for local system -- requires $GOPATH/bin in $PATH go installTo build binaries for supported Linux systems, use the just build task (ref: contribution docs) to run the needed compile steps:
# compile various Linux binaries just build # install a specific one for system-wide use cp build/mcsm-linux-amd64 /usr/local/bin/mcsmWiki pages with common guides comming soon
Soon to be defined and documented in wiki pages
If you're interested in submitting feature requests, addressing bugs, or generally understanding how this project works, please visit our contribution doc for info on getting started and helping out. 😁
