تخطَّ إلى المحتوى

config.toml reference

هذا المحتوى غير متوفر بلغتك بعد.

{/* Generated by website/scripts/gen-config-reference.mjs. Do not edit by hand. */}

Copy backend/config.toml.example to config.toml next to the server binary (or mount it into the container). Keys not listed there use built-in defaults. Restart the server after editing the file unless the admin panel says the key applies live.

Default: "localhost"

The public domain name of this node. Used for inter-node federation.

Default: 4000

HTTP API and WebSocket port.

Default: 9090

Raw UDP port for voice routing (Wails desktop client only).

Default: "http://localhost:5173"

The origin(s) allowed to access the API via CORS. Comma-separated. Use “*” to allow all origins (not recommended for production). Note: Wails desktop app origins are allowed by default.

Default: 100

Maximum allowed file upload size in MB.

Default: 50

Maximum allowed video message size in MB.

Default: 60

Maximum video message duration in seconds.

Default: "ffmpeg"

Path to ffmpeg binary (for video transcoding).

Default: false

Enable development mode (extra logging, Swagger UI at /api/docs/).

Default: ""

Master password for encrypting the database DEK via Argon2id (KEK derivation). If left empty, the server will generate a secure 32-char random string on first launch, print it to the terminal, and write it here automatically. IMPORTANT: Back this up. Losing it makes the database unrecoverable.

Default: 24

Number of hours before the authentication token and session expire.

Default: "./data/db"

Path where BadgerDB stores its data files.

Default: 100

Global rate limit: max requests per second per IP address.

Default: 5

Strict rate limit for auth endpoints (/api/login, /api/register).

Default: "webrtc"

Group audio/video calling + screen share engine. “webrtc” - production, internet-capable: a self-hosted SFU (see internal/rtc) with encrypted media (DTLS-SRTP) and NAT traversal via ICE/STUN/TURN. Supports video + screen share. “raw_udp” - the original unencrypted, audio-only UDP packet router (internal/voice), for isolated/LAN deployments where every client can already reach the server directly and the DTLS/ICE overhead isn’t wanted. No video/screen-share.

Default: 10

Maximum participants in a single call (resource cap; enforced at join).

Default: 50000

WebRTC media (ICE/DTLS/SRTP) ephemeral UDP port range. Firewall this range on the host; each active track negotiation uses one port.

Default: 50100

Default: "auto"

Required whenever this process is behind NAT/a cloud load balancer/a Docker port mapping — the IP clients should use to reach it. “webrtc” mode is the internet-capable engine, so it’s fine (and the default) for this to assume internet access is available. Deployments with NO internet egress at all should use mode = “raw_udp” above instead of “webrtc” with this left empty. “auto” - (default) auto-detect via a one-time STUN query at startup. Falls back to “” behavior if unreachable. “” - direct/LAN-only “webrtc” deployments; never calls out. “1.2.3.4” - explicit manual value.

Default: ["stun:stun.l.google.com:19302"] (commented out in the example; optional)

Only used when public_ip = “auto”; overrides the default STUN servers.

Default: true

Runs our own STUN+TURN relay in-process (github.com/pion/turn) so NAT traversal works without any external TURN provider. Requires public_ip to be set to be useful. Disable for LAN-only deployments that don’t need NAT traversal at all.

Default: 3478

Default: "cove"

Default: ""

Drives short-lived, per-call HMAC-derived TURN credentials (TURN REST API convention) — never a static shared secret handed to clients directly. Generated automatically on first run and persisted here, like master_password above.

Default: "open"

"open" anyone can sign up
"invite_only" a valid invitation code is required
"closed" nobody can sign up

Default: "" (commented out in the example; optional)

Recovery for a lost owner login: set this to an existing username and restart to make that account the owner (the previous owner becomes an admin).

Default: false (commented out in the example; optional)

Default: 200 # total accounts allowed; 0 = no cap (commented out in the example; optional)

Default: 3 # new accounts per client IP per rolling 24h; 0 = no cap (commented out in the example; optional)

Default: false (commented out in the example; optional)

Default: "medium" # low \| medium \| high (about 12k, 50k and 200k hashes on average) (commented out in the example; optional)