274 lines
6.9 KiB
Markdown
274 lines
6.9 KiB
Markdown
# multiserver
|
|
Minetest reverse proxy supporting multiple servers and media multiplexing
|
|
|
|
## Obsolete
|
|
This version has many bugs, is __NOT__ updated to work with Minetest 5.4.1
|
|
and is unlikely to receive any future updates.
|
|
It's untested and the code isn't very clean. __You should use [mt-multiserver-proxy](https://github.com/HimbeerserverDE/mt-multiserver-proxy) instead.__
|
|
|
|
## Credits
|
|
This project was made possible by [anon55555's Minetest RUDP package](https://github.com/anon55555/mt/tree/master/rudp).
|
|
|
|
## Modchannel RPC API
|
|
There is a modchannel-based RPC API for minetest servers: [click here](https://github.com/HimbeerserverDE/multiserver_api).
|
|
|
|
## Installation
|
|
Go 1.16 or higher is required
|
|
|
|
`go get github.com/HimbeerserverDE/multiserver`
|
|
|
|
### Updating
|
|
`go get -u github.com/HimbeerserverDE/multiserver`
|
|
|
|
## How to use
|
|
**Note: The authentication databases of the minetest servers need to be deleted before multiserver can connect to them. You can convert minetest auth databases to the multiserver auth database schema with [multiserver_converter](https://github.com/HimbeerserverDE/multiserver_converter).**
|
|
|
|
### Running
|
|
The `go get` command will create an executable file in `~/go/bin/multiserver`.
|
|
This file should always be run from the same working directory. If you don't do this, the program will be unable to read the old data and will create
|
|
the default files in the new working directory.
|
|
|
|
### Configuration
|
|
The configuration file is located in `WORKING_DIR/config/multiserver.yml`
|
|
|
|
- Default config file
|
|
```yml
|
|
servers:
|
|
lobby:
|
|
address: "127.0.0.1:30000"
|
|
default_server: lobby
|
|
force_default_server: true
|
|
```
|
|
|
|
> `host`
|
|
```
|
|
Type: String
|
|
Description: The IP address and port the proxy will be running on,
|
|
default is 0.0.0.0:33000
|
|
```
|
|
> `player_limit`
|
|
```
|
|
Type: Integer
|
|
Description: Maximum number of concurrent connections, unlimited if not set
|
|
```
|
|
> `servers`
|
|
```
|
|
Type: Dictionary
|
|
Description: List of all servers
|
|
```
|
|
> `servers.*`
|
|
```
|
|
Type: Dictionary
|
|
Description: Contains server details
|
|
```
|
|
> `servers.*.address`
|
|
```
|
|
Type: String
|
|
Description: The IP address and port this server is running on
|
|
```
|
|
> `servers.*.priv`
|
|
```
|
|
Type: String
|
|
Description: If this is set, players need this privilege (on the proxy) to connect to this server.
|
|
Leave this empty to require no special privilege. Note that this only affects the #server command. This means that
|
|
players can still be connected to this server if it is the default server, a minetest server requests it
|
|
or if a different command is used.
|
|
```
|
|
> `groups`
|
|
```
|
|
Type: Dictionary
|
|
Description: List of all server groups
|
|
```
|
|
> `groups.*`
|
|
```
|
|
Type: List
|
|
Description: Contains server group members
|
|
```
|
|
> `group_privs`
|
|
```
|
|
Type: Dictionary
|
|
Description: List of all server groups and the required privilege (on the proxy), can be omitted
|
|
```
|
|
> `default_server`
|
|
```
|
|
Type: String
|
|
Description: Name of the minetest server new players are sent to
|
|
```
|
|
> `force_default_server`
|
|
```
|
|
Type: Boolean
|
|
Description: If this is false known players are sent to the last server they were connected to, not to the default server
|
|
```
|
|
> `admin`
|
|
```
|
|
Type: String
|
|
Description: The "privs" privilege is granted to the player with this name on startup
|
|
```
|
|
> `csm_restriction_flags`
|
|
```
|
|
Type: Integer
|
|
Description: The CSM restriction flags, default is none
|
|
* 0: No restrictions
|
|
* 1: No CSM loading
|
|
* 2: No chat message sending
|
|
* 4: No itemdef reading
|
|
* 8: No nodedef reading
|
|
* 16: Limit node lookup
|
|
* 32: No player info lookup
|
|
* 63: All restrictions
|
|
To set multiple flags at the same time add the corresponding numbers
|
|
```
|
|
> `csm_restriction_noderange`
|
|
```
|
|
Type: Integer
|
|
Description: The CSM node range, default is 8
|
|
```
|
|
> `server_reintergration_interval`
|
|
```
|
|
Type: Integer
|
|
Description: Number of seconds between server reintegrations, default is 600.
|
|
A server reintegration is reconnecting the RPC user and refetching the media
|
|
from one or more minetest servers.
|
|
```
|
|
> `disable_builtin`
|
|
```
|
|
Type: Boolean
|
|
Description: If this is true the builtin chatcommands and the redirect error message are deactivated, default is false
|
|
```
|
|
> `command_prefix`
|
|
```
|
|
Type: String
|
|
Description: The prefix of proxy chat commands, default is #
|
|
```
|
|
> `console_prompt`
|
|
```
|
|
Type: String
|
|
Description: The text preceeding the console input, default is ${command_prefix}>
|
|
```
|
|
> `do_fallback`
|
|
```
|
|
Type: Boolean
|
|
Description: If this is true players are automatically redirected to
|
|
the default server if the server they are on shuts down or crashes,
|
|
default is true
|
|
```
|
|
> `disallow_empty_passwords`
|
|
```
|
|
Type: Boolean
|
|
Description: Whether to deny access if the password is empty,
|
|
default is false
|
|
```
|
|
> `modchannels`
|
|
```
|
|
Type: Boolean
|
|
Description: Whether to allow clients to use modchannels,
|
|
default is true
|
|
```
|
|
> `force_latest_proto`
|
|
```
|
|
Type: Boolean
|
|
Description: Whether to force clients to use the latest protocol version,
|
|
default is false
|
|
```
|
|
> `remote_media_server`
|
|
```
|
|
Type: String
|
|
Description: The address of a remote media server, no OOB sending
|
|
of media if unset
|
|
```
|
|
> `psql_db`
|
|
```
|
|
Type: String
|
|
Description: The name of the authentication database, SQLite3 is used if unset
|
|
```
|
|
> `psql_host`
|
|
```
|
|
Type: String
|
|
Description: The address the PostgreSQL server is running on, default is localhost
|
|
```
|
|
> `psql_port`
|
|
```
|
|
Type: Integer
|
|
Description: The port the PostgreSQL server is listening on, default is 5432
|
|
```
|
|
> `psql_user`
|
|
```
|
|
Type: String
|
|
Description: The username to use when connecting to the PostgreSQL database
|
|
```
|
|
> `psql_password`
|
|
```
|
|
Type: String
|
|
Description: The password to use when authenticating to the PostgreSQL database
|
|
```
|
|
> `serverlist_url`
|
|
```
|
|
Type: String
|
|
Description: The URL of the list server to announce to,
|
|
announcements are disabled if this is unset
|
|
```
|
|
> `serverlist_address`
|
|
```
|
|
Type: String
|
|
Description: The server address to be displayed on the server list,
|
|
can be omitted
|
|
```
|
|
> `serverlist_name`
|
|
```
|
|
Type: String
|
|
Description: The name to be displayed on the server list, can be omitted
|
|
```
|
|
> `serverlist_desc`
|
|
```
|
|
Type: String
|
|
Description: The description to be displayed on the server list,
|
|
can be omitted
|
|
```
|
|
> `serverlist_display_url`
|
|
```
|
|
Type: String
|
|
Description: The URL of the website of the server, can be omitted
|
|
```
|
|
> `serverlist_creative`
|
|
```
|
|
Type: Boolean
|
|
Description: Whether one of the minetest servers has creative enabled,
|
|
default is false
|
|
```
|
|
> `serverlist_damage`
|
|
```
|
|
Type: Boolean
|
|
Description: Whether one of the minetest servers has damage enabled,
|
|
default is false
|
|
```
|
|
> `serverlist_pvp`
|
|
```
|
|
Type: Boolean
|
|
Description: Whether one of the minetest servers has PvP enabled,
|
|
default is false
|
|
```
|
|
> `serverlist_game`
|
|
```
|
|
Type: String
|
|
Description: The subgame that is used on the minetest servers,
|
|
can be omitted
|
|
```
|
|
> `serverlist_can_see_far_names`
|
|
```
|
|
Type: Boolean
|
|
Description: Whether unlimited player view range is enabled,
|
|
default is false
|
|
```
|
|
> `serverlist_mods`
|
|
```
|
|
Type: List
|
|
Description: All mods that have been installed on any of the
|
|
minetest servers, can be omitted
|
|
```
|
|
> `serverlist_announce_interval`
|
|
```
|
|
Type: Integer
|
|
Description: Number of seconds between serverlist announcement updates,
|
|
default is 300
|
|
```
|