-c, --config <PATH> | none | /etc/rchat/server.toml | Config file. A missing or unreadable file is a startup error. |
-b, --bind <ADDR> | RCHAT_BIND_ADDR | from bind_addr | Listen address, overriding the config file, e.g. 0.0.0.0:443 or 127.0.0.1:8443. |
-l, --log-level <LEVEL> | RCHAT_LOG_LEVEL | info | Log verbosity: error, warn, info, debug or trace. Also accepts tracing filter directives such as rchat_server=debug. |
--init-relay-identity | none | | Create the relay identity key at relay_identity_path, print its pin, then exit. Refuses to overwrite an existing key. Run once, as the service user. |
--print-relay-pin | none | | Print the relay’s pin (rk:1:…) and version, then exit. |
--print-invite | none | | Print the relay invite (an rchat://relay link with the relay’s URL and pin) and draw it as a QR code, then exit. The host comes from [server.decoy] host, else the first [server.acme] domain; with neither it refuses. Run as the service user. The invite holds the secret WebSocket path: it is printed only here, never logged. See Inviting people to your relay. |
--public-port <PORT> | none | from [server] public_port; unset: 443 when proxy_protocol = true, else the port of bind_addr | With --print-invite: the port clients dial (NAT, rdr, a jail), 1–65535. 443 is left out of the invite. |
--rotate-relay-identity | none | | Create a new identity key at version + 1, write a handover signed by the old key, delete the old key, print the new pin, then exit. Stop the relay first and start it afterwards. The built-in decoy page changes with the key. |
--render-decoy <DIR> | none | | Write this relay’s static decoy website into DIR (empty, missing, or rendered this way before), then exit. Needs --config and must run as the service user: the site is seeded from the relay’s secret identity key and its host name (--host, else [server.decoy] host, else the first [server.acme] domain, else none), so it is the site the relay serves itself, and it refuses without the key. Rotating the identity changes it. Point [server.decoy] root at DIR. The decoy answers Range like nginx 1.24: several ranges get a 206 multipart/byteranges, bytes=abc and bytes=5-3 get a 416, and a 206 sends no Accept-Ranges. See Configuration guide. |
--host <HOSTNAME> | none | from [server.decoy] host, else the first [server.acme] domain, else none | With --render-decoy: the relay’s public host name. |
--no-tls | none | off | Development only. Serve plaintext WebSocket with no TLS, ignoring [server.tls] and [server.acme]. Requires [server] dev_origin. Refuses to start on a non-loopback address. |
--insecure-public-plaintext | none | off | With --no-tls, allow a non-loopback address. Anyone on the network can then read and tamper with all traffic. Requires --no-tls. |
-h, --help | none | | Print help. |