website/content/docs/services-config.md

3.4 KiB

Running & config

echo services reads a single config.toml. Only [uplink] and [server] are required; every other section is optional and off when omitted. A few keys reload on OperServ REHASH (noted); the rest need a service restart.

echo config.toml
Key Description
host / port Uplink ircd address and S2S port
password S2S link password
tls Use TLS for the link; true pins the SPKI below
spki_fingerprint Base64 SHA-256 of the uplink's SubjectPublicKeyInfo (when tls=true)

[server] — this node's identity (required)

Key Description
name / sid Services server name and 3-char SID (unique)
description Server description
protocol InspIRCd link protocol (1206 = insp4, 1205 = insp3)
scram_iterations PBKDF2 cost for new SCRAM verifiers (≥ 1000)
guest_nick Nick prefix after LOGOUT
service_host Host the pseudo-clients wear (empty = server name)
service_modes User modes the service clients set (e.g. iHkoB)
service_oper_type WHOIS "is a …" string
services_channel Channel every pseudo-client joins
standard_replies Use IRCv3 FAIL/WARN/NOTE instead of notices

[modules] — which services to start

services is a list of module names to bring up; omit the section for the full standard suite: nickserv, chanserv, botserv, hostserv, memoserv, operserv, statserv, groupserv, infoserv, reportserv, helpserv, chanfix, diceserv, gameserv, debugserv.

oper — services operators (repeatable)

Key Description
account Account granted operator access
type Tier shortcut: operator < administrator < root
privs Fine-grained privilege list (auspex, oper, suspend, admin, root)

Policy & lifecycle

Section Keys
[register] confusable_check, vouch (REHASH-reloadable)
[extban] enabled — which InspIRCd matching-extbans AKICK may use
[auth] external — hand identity to an outside authority
[expire] accounts_days, channels_days, warn_days (0 = never)
[session] default_limit — per-IP connection limit
[language] default, dir, available (ships en, fr, de, es, es-ar, pt, pt-br)
[log] channel, notify_exclude

Email & web integration

Section Keys
[email] from, command (mailer piped on stdin), brand, accent, logo, confirm_url
[health] bind/health + Prometheus /metrics (loopback, unauthenticated)
[panel] bind, brand — self-contained web admin site (put behind a TLS proxy)
[grpc] bind, token, [grpc.tls] — account/channel directory + Accounts API for a website
[jsonrpc] bind, token, origins, [jsonrpc.tls] — HTTP JSON-RPC for the staff panel / stats
[keycard] url, api_key — passwordless web login tokens
[dictserv] server — DICT server for DictServ (opt-in)

Federation

[gossip] + [[peer]] provide node-to-node replication: gossip.bind, gossip.secret, [gossip.tls] (mTLS), [gossip.signing] (Ed25519 per-origin signing + trusted-signer map), and one [[peer]] per federated node.

See Security & anti-abuse for the [security.*] engine.