This project is a custom implementation of a Quake 2 master server written in Go.
Backward compatible master functionality; this should work with all Quake 2 servers. Player and general server info is fetched peridocially for display in the web interface.
An integrated website for viewing servers/players on any device. The website is not meant to be directly externally exposed, instead it should be proxied by something like nginx that can handle TLS.
All configuration options for this server are handled through the command line flags:
| Flag | Default Value | Explanation |
|---|---|---|
port |
27900 | The listen port for Quake 2 servers. |
addr |
"0.0.0.0" | The IP address to listen on for Quake 2 servers. Leave this alone unless you need to listen on a specific IP. |
fg |
false | Run in the foreground. All output will go to the console instead of the log file. |
logfile |
"master.log" | The file to log all output to. |
webport |
3333 | The port to listen on for website requests. |
webaddr |
"0.0.0.0" | The IP address to listen on for website requests. The default will listen on all addresses. |
geoipfile |
"" | Specify a custom geoip database file. An official geoip database is embedded into the release, this flag isn't needed in more cases. |
All required assets (website templates, flag images, GeoIP database) are embedded into the compiled binary. This allows for a single file release that is completely portable. The downside of this setup is binaries need to be recompiled when any of these embedded assets change.
$ go run . -fg# Target architecture is the same:
$ go build .
# Building a windows (64bit) binary on linux:
$ GOOS=windows GOARCH=amd64 go build -o q2master.exe .