Registro inconsistente o faltante y última IP

Creo que el proxy inverso externo es la clave; no creo que esto sea solucionable en absoluto, o al menos no fácilmente, solo desde dentro del contenedor Docker.

Lo he resuelto ahora configurando que el contenedor Docker de Discourse escuche en un socket Unix y lo frontee con Caddy en la misma máquina (fuera de Docker). La configuración de Caddy es trivial, incluye Let’s Encrypt, y ahora funciona como se espera también para IPv6.

forum.example.com {
  proxy / unix:/var/discourse/shared/web-only/nginx.http.sock {
    transparent
    websocket
  }
}