q3rcon-proxy/README.md
2026-02-18 14:28:31 +00:00

81 lines
2.1 KiB
Markdown

# Q3 Rcon Proxy
A modification of [lilproxy][lilproxy_url] that forwards only Q3 rcon/query packets. Useful for separating the rcon port from the game server port.
### Why
Unfortunately the Q3Rcon engine ties the rcon port to the game servers public port used for client connections. This proxy will allow you to run rcon through a separate whitelisted port.
---
### Use
#### Flags
```bash
#!/usr/bin/env bash
/usr/local/bin/q3rcon-proxy \
--proxy-host=0.0.0.0 \
--target-host=localhost \
--port-map=20000:28960 --port-map=20001:28961 --port-map=20002:28962 \
--session-timeout=20 \
--loglevel=debug
```
#### Environment Variables
Each of the flags has a corresponding environment variable:
- `Q3RCON_PROXY_HOST`: The host the proxy server sits on.
- `Q3RCON_TARGET_HOST`: The host the game servers sit on.
- `Q3RCON_PORT_MAP`: A mapping as a string with `source:target` pairs delimited by `,`.
- `Q3RCON_SESSION_TIMEOUT`: Timeout in seconds for each udp session.
- `Q3RCON_LOGLEVEL`: The application's logging level (see [Logging][logging]).
example .envrc:
```bash
#!/usr/bin/env bash
export Q3RCON_PROXY_HOST="0.0.0.0"
export Q3RCON_TARGET_HOST="localhost"
export Q3RCON_PORT_MAP="20000:28960,20001:28961,20002:28962"
export Q3RCON_SESSION_TIMEOUT=20
```
This would configure q3rcon-proxy to run 3 proxy servers listening on ports 20000, 20001 and 20002 that redirect rcon requests to game servers on ports 28960, 28961 and 28962 respectively.
---
### Logging
Set the log level with environment variable `Q3RCON_LOGLEVEL`.
Acceptable values are:
- `trace`
- `debug`
- `info`
- `warn`
- `error`
- `fatal`
- `panic`
If not set it will default to `info`.
---
### Special Thanks
[Dylan][user_link] For writing [lilproxy][lilproxy_url].
[lilproxy_url]: https://github.com/dgparker/lilproxy
[user_link]: https://github.com/dgparker
### Further Notes
For a compatible rcon client also written in Go consider checking out the [Q3 Rcon][q3rcon] package.
[q3rcon]: https://github.com/onyx-and-iris/q3rcon
[logging]: https://github.com/onyx-and-iris/q3rcon-proxy/tree/dev?tab=readme-ov-file#logging