About

mt-multiserver-proxy is a reverse proxy for the Minetest game engine designed for linking multiple Minetest servers together.

This is Minetest's equivalent to projects like BungeeCord or Waterfall for Minecraft. The proxy can be customized using plugins.

Use cases

mt-multiserver-proxy can be used to build server networks. This makes it possible to host multiple worlds on the same port or to implement load balancing using future plugin API features.

Minetest doesn't take full advantage of multi-core CPUs which is one of the reasons you may be interested in building networks of servers.

This proxy can also aid in implementing dimensions, but this requires server-to-server communication of some form (provided by the proxy or end-to-end).

Builtin alternatives

While Minetest doesn't currently implement server hopping in the engine there now are ambitions to add this functionality to the upstream project.

Relevant PRs:

The latter would provide server-to-server messaging (for state synchronization like inventories) without the need for HTTP-based APIs between servers or similar workarounds.

Merging these PRs would make this project obsolete for future Minetest versions. This official solution is likely going to be more stable and simple.

Getting started

The README is a good place to start with to get into installation and configuration of the proxy. Documentation on more specific topics is available in the doc/ directory.

Minetest version support

Generally the latest proxy version supports the latest stable Minetest version regardless of the patch number. See the README for details including the commit hashes for support for old Minetest versions.

Development versions aren't supported and are highly likely to break without the version mismatch being detected.

Authentication

All authentication happens on the proxy. You can use Minetest databases in the sqlite3 or postgres formats directly or convert them to the native files backend. The latter has the advantage of being able to connect players to the server they were previously playing on. Postgres has the advantage of being able to share the database with other services.

See the README and documentation for details.

Docker

Running the proxy in Docker is supported, see the documentation for details.

Minetest server configuration

You should enable strict version checking to ensure that version mismatches get detected and result in a kick. This likely won't work with Minetest development builds.

The servers need to allow empty passwords. DO NOT expose them to the public internet! If you do, anyone can connect to them directly with any username, bypassing authentication.

Plugins

The proxy supports standard Go plugins. It is able to build them against the correct version of itself automatically, though this is optional. Consult the documentation for further details.

The most notable plugin provides a few useful chat commands and is the primary control interface for the proxy. You may write your own if you want to do so.

Server groups

Servers may be declared to be part of a larger group. Some places like the DefaultSrv config option accept groups in addition to regular servers. This makes load balancing possible by choosing a random server that's in the group.

Groups cannot be used as fallback servers.

Commands

Chat commands are the main interface to the proxy and provided by an official plugin. You may replace it if desired.

Chat commands don't use the / prefix character by default to prevent overlaps with Minetest (mod) commands. The default prefix is >, but this can be configured and multi-character prefixes are supported. Replace the leading > in the summary accordingly.

Permissions

All chat commands provided by the official plugin require individual permissions to make fine-grained access control possible. The permission for a command is cmd_ followed by the command itself. See the documentation for details on how permissions work.

Quick summary

See the plugin README for detailed documentation.

Return to Index Page