Documentation menu

Prerequisites

Before you install Citadel Bot, get these four things in place.

1. Node.js 18+

The bot runs on Node.js 18 or newer (tested on Node 24). Check with:

node --version

If you'll deploy with Docker or Coolify instead of running it directly, you don't need Node locally — see Installation.

2. A Discord application + bot

  1. Go to the Discord Developer Portal and New Application.
  2. Open Bot → copy the Bot Token (this is DISCORD_BOT_TOKEN).
  3. On the application's General Information page, copy the Application ID (this is CLIENT_ID).
  4. Under Bot → Privileged Gateway Intents, enable Message Content Intent.

[!WARNING] feed; if it's off, Discord rejects the login with a "disallowed intents" error and the bot won't start.

3. A CFTools application + server grant

Citadel Bot authenticates against the CFTools Data API with an Application ID and a Secret.

  1. In the CFTools developer portal, open (or create) your application.
  2. Copy the Application ID — a short hex string like 6a1e58a181e3aa85f4a5e6b7 (not the base64 secret).
  3. Copy the Secret — a base64 value ending in =.
  4. Grant the application access to each server you'll manage. Without the grant, data calls fail with a "grant required" error.

[!NOTE] application and the same CFTOOLS_API_APPLICATION_ID / CFTOOLS_API_SECRET are reused for every customer bot. Each customer just grants Citadel's application access to their server and provides their Server API ID — they never create their own CFTools app.

4. Your Server API ID (and IP/port)

Each DayZ server has a Server API ID in CFTools:

CFTools app → your server → Manage → Settings → API Key → Server ID

You'll also want the server's public IPv4 and game port (e.g. 2302). Most commands use the Server API ID, but /server-info queries by IP/port — see Server Configuration.

[!TIP] storefront relay) may require a CFTools premium plan on the server.

Checklist

  • Node.js 18+ (or Docker/Coolify)
  • DISCORD_BOT_TOKEN + CLIENT_ID, Message Content Intent enabled
  • CFTOOLS_API_APPLICATION_ID + CFTOOLS_API_SECRET
  • CFTools application granted on each server
  • CFTOOLS_SERVER_API_ID (+ IP/port) per server

Next: Installation.