Skip to content

lhridder/gamma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gamma - a Minecraft bedrock Proxy

adaptation from haveachin/bedprox

Added/changed Features

  • TODO

TODO

  • Implement API
  • Implement L7 protection

Command-Line Flags

-config-path specifies the path to all your server configs [default: "./configs/"]

Example Usage

./gamma -config-path="."

Global config.yml

Example/Default

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.

Fields

  • TODO

Proxy Config

Examples

Minimal Config

min.example.com
{
  "domainNames": ["mc.example.com", "example.com"],
  "proxyTo": ":8080"
}

Full Config

full.example.com
{
  "domains": ["mc.example.com", "example.com"],
  "listenTo": ":19132",
  "proxyTo": ":8080",
  "proxyProtocol": false,
  "dialTimeout": 1000,
  "dialTimeoutMessage": "Server is currently offline",
  "sendProxyProtocol": false
}

Prometheus exporter

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.

Prometheus configuration:

Example prometheus.yml configuration:

scrape_configs:
  - job_name: gamma
    static_configs:
    - targets: ['gamma-exporter-hostname:port']

Metrics:

  • 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.
  • 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).

API

Route examples

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)

Used sources

About

Minecraft bedrock Proxy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages