adaptation from haveachin/bedprox
- TODO
- Implement API
- Implement L7 protection
-config-path
specifies the path to all your server configs [default: "./configs/"
]
./gamma -config-path="."
debug: false
genericJoinResponse: There is no proxy associated with this domain. Please check your configuration.
receiveProxyProtocol: false
prometheus:
enabled: false
bind: :9060
api:
enabled: false
bind: :5000
ping:
edition: MCPE
versionname: 1.19.50
versionProtocol: 560
description: Gamma proxy
playerCount: 0
maxPlayerCount: 10
gamemode: SURVIVAL
gamemodeNumeric: 1
Values can be left out if they don't deviate from the default, a config.json with just {}
is still required for startup.
- TODO
min.example.com
{
"domainNames": ["mc.example.com", "example.com"],
"proxyTo": ":8080"
}
full.example.com
{
"domains": ["mc.example.com", "example.com"],
"listenTo": ":19132",
"proxyTo": ":8080",
"proxyProtocol": false,
"dialTimeout": 1000,
"dialTimeoutMessage": "Server is currently offline",
"sendProxyProtocol": false
}
The built-in prometheus exporter can be used to view metrics about gamma' operation.
This can be used through "prometheusEnabled": true
and "prometheusBind": ":9070"
in config.yml
It is recommended to firewall the prometheus exporter with an application like ufw or iptables to make it only accessible by your own Prometheus instance.
Example prometheus.yml configuration:
scrape_configs:
- job_name: gamma
static_configs:
- targets: ['gamma-exporter-hostname:port']
- gamma_connected: show the amount of connected players per instance and proxy:
- Example response:
gamma_connected{host="proxy.example.com",instance="vps1.example.com:9070",job="gamma"} 10
- host: listenTo domain as specified in the gamma configuration.
- instance: what gamma instance the amount of players are connected to.
- job: what job was specified in the prometheus configuration.
- Example response:
- gamma_handshakes: counter of the number of handshake packets received per instance, type and target:
- Example response:
gamma_handshakes{instance="vps1.example.com:9070",type="status",host="proxy.example.com",country="DE"} 5
- instance: what gamma instance handshakes were received on.
- type: the type of handshake received; "status" or "login".
- host: the target host specified by the client (login only).
- Example response:
GET /proxies
will return
[
"config",
"config2"
]
GET /proxies/{name}
will return
{
"domainNames": ["play.example.org"],
"proxyTo": "backend.example.org:25566"
}
POST /proxies/{name}
with body
{
"domainNames": ["play.example.org"],
"proxyTo": "backend.example.org:25566"
}
will return
{"success": true, "message": "the proxy has been succesfully added"}
DELETE /proxies/{name}
will return 200(OK)
GET /
will return 200(OK)