The clone menu built its SSH URL from ssh_addr, which is the address the
listener binds. On an instance listening on 0.0.0.0:2222 that offered
ssh://git@0.0.0.0:2222/<repo>.git — an address nobody can connect to — even
with public_url naming the instance.
What changed
sshURLis now a method onWeband takes the host frompublic_url, the configured name, keeping the port fromssh_addr, because that is the port the SSH server actually answers on. Without apublic_urlthere is no configured name, so the listener address is still what it shows.- The instance repository panel read the same helper, so both places agree.
netJoinnow brackets an IPv6 host and usesnet.JoinHostPort, so[::1]:2222round-trips instead of becoming::1:2222.docs/configuration.mdsays where the SSH clone host comes from, next to the existing explanation ofpublic_urlfor the HTTPS link.
Result
With ssh_addr = "0.0.0.0:2222" and public_url = "https://rodent.software", the
clone menu shows git clone ssh://git@rodent.software:2222/vole.git.
Verification
TestSSHURLUsesTheConfiguredHostcovers a wildcard bind with a configured name, the default port being omitted, nopublic_url, and an IPv6 listener../vole workflow run verifypasses.
Closes #235.