Go to file
sfan5 84a40e406b Remove "guest" user penalty
Much overdue as the mobile apps that justified this are long gone
closes #50, closes #17
2021-09-05 21:06:57 +02:00
static Recalculate stats with protocol filter applied 2021-09-05 20:47:37 +02:00
.gitignore Add node_modules subdir to gitignore 2015-02-17 16:20:41 +01:00
LICENSE.txt Add license 2014-09-17 14:45:44 -04:00
README.md Improve table column sizing, template, CSS 2021-02-21 14:08:00 +01:00
config-example.py Make hostname blacklist case insensitive 2017-12-24 20:42:47 +01:00
requirements.txt Detect geo of server. 2019-07-17 12:33:48 +02:00
server.py Remove "guest" user penalty 2021-09-05 21:06:57 +02:00

README.md

Minetest server list

Setting up the webpage

You will have to install node.js, doT.js and their dependencies to compile the server list webpage template.

First install node.js, e.g.:

# apt-get install nodejs
# # OR:
# pacman -S nodejs

Then install doT.js and its dependencies:

$ npm install dot commander mkdirp

And finally compile the template:

$ cd static
$ ../node_modules/dot/bin/dot-packer -s .

You can now serve the webpage by copying the files in static/ to your web root, or by starting the server list.

Embedding the server list in a page

<head>
	...
	<script>
		var master = {
			root: 'http://servers.minetest.net/',
			limit: 10,
			clients_min: 1,
			no_flags: 1,
			no_ping: 1,
			no_uptime: 1
		};
	</script>
	...
</head>
<body>
	...
	<div id="server_list"></div>
	...
</body>
<script src="list.js"></script>

Setting up the server

  1. Install Python 3 and pip:
pacman -S python python-pip
# OR:
apt-get install python3 python3-pip
  1. Install required Python packages:
# You might have to use pip3 if your system defaults to Python 2
pip install -r requirements.txt
  1. If using in production, install uwsgi and it's python plugin:
pacman -S uwsgi uwsgi-plugin-python
# OR:
apt-get install uwsgi uwsgi-plugin-python
# OR:
pip install uwsgi
  1. Configure the server by adding options to config.py. See config-example.py for defaults.

  2. Start the server:

$ ./server.py
$ # Or for production:
$ uwsgi -s /tmp/minetest-master.sock --plugin python -w server:app --enable-threads
$ # Then configure according to http://flask.pocoo.org/docs/deploying/uwsgi/
  1. (optional) Configure the proxy server, if any. You should make the server load static files directly from the static directory. Also, /list should be served from list.json. Example for nginx:
root /path/to/server/static;
rewrite ^/list$ /list.json;
try_files $uri @uwsgi;
location @uwsgi {
	uwsgi_pass ...;
}

Setting up the server (Apache version)

If you wish to use Apache to host the server list, do steps 1-2, 4, above. Additionally install/enable mod_wsgi and an Apache site config like the following:

	# This config assumes you have the server list at DocumentRoot.
	# Visitors to the server list in this config would visit http://local.server/ and
	# apache would serve up the output from server.py. Static resources would be served
	# from http://local.server/static.

	# Where are the minetest-server files located?
	DocumentRoot /var/games/minetest/serverlist

	# Serve up server.py at the root of the URL.
	WSGIScriptAlias / /var/games/minetest/serverlist/server.py

	# The name of the function that we call when we invoke server.py
	WSGICallableObject app

	# These options are necessary to enable Daemon mode. Without this, you'll have strange behavior
	# with servers dropping off your list! You can tweak threads as needed. See mod_wsgi documentation.
	WSGIProcessGroup minetest-serverlist
	WSGIDaemonProcess minetest-serverlist threads=2


	<Directory /var/games/minetest/serverlist>
		Require all granted
	</Directory>

</VirtualHost>

License

The Minetest server list code is licensed under the GNU Lesser General Public License version 2.1 or later (LGPLv2.1+). A LICENSE.txt file should have been supplied with your copy of this software containing a copy of the license.