Skip to main content

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.