Following up on jamulussoftware/jamulus#2819 (comment) so it doesn't get lost.
https://jamulus.io/wiki/Custom-Directories (to be renamed, IIRC) should have an additional note added under "Points to note about Directories":
- When using a client on the same LAN as a directory, the directory itself needs to be run with the correct
--serverpublicip value, so that any (non-LAN) servers registering with the directory that require the "hole punch" can be accessed by the LAN client(s). This is because otherwise the directory would provide the LAN address of the client to the server and the "hole punch" would fail.
Does that sound right?