Ho configurato Discourse dietro un reverse proxy con Caddy, ed è risultato che la soluzione era aggiungere
header_up X-Real-IP {remote_host}
alla sezione reverse_proxy nel mio Caddyfile, cosa che in precedenza non mi serviva.
Ho capito che X-Real-IP era necessario grazie al messaggio di errore simile presente in questo post.
Spero che questo possa aiutare qualcuno con un problema simile.