Installation
We publish no binary and no image: the proxy is built from the fork's fixes branch. The original project's binaries and images carry none of our fixes.
With Go
You need Go 1.25 or newer.
git clone -b fixes https://github.com/FCAgreatgoals/nirn-proxy
cd nirn-proxy
go build -o nirn-proxy .
./nirn-proxy
The proxy listens on port 8080, and its metrics on port 9000. A .env file next to it is loaded on startup if present.
With Docker
The repository's Dockerfile produces a minimal image, with no OS, holding only the binary and the certificates:
git clone -b fixes https://github.com/FCAgreatgoals/nirn-proxy
cd nirn-proxy
docker build -t nirn-proxy .
docker run -d -p 8080:8080 -p 9000:9000 -e LOG_LEVEL=info nirn-proxy
Pointing your bot at it
Instead of https://discord.com, your bot sends its requests to the proxy's address: discord.com/api/v10/gateway becomes http://10.0.0.1:8080/api/v10/gateway. Most libraries let you change the API URL. With discord.js:
import { Client } from 'discord.js'
const client = new Client({
intents: [],
rest: { api: 'http://10.0.0.1:8080/api' },
})
Otherwise, a redirect at the OS or DNS level works too. The proxy does not handle SSL: keep it on a private network, and restrict where it listens with BIND_IP if needed.
Resources
It depends on the traffic and how many distinct routes you hit. At Dyno, at 150 requests per second, the proxy used about 0.3 CPU and 550 MB of memory: a small VPS or an ARM machine is enough.