You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Adding a PC whose own Ovis is bound to a non-loopback HOST fails with a raw ECONNRESET #1960
Adding a PC (Settings → Remote PCs, POST /api/machines/setup) fails with a raw fetch error when that PC already runs its own Ovis bound to a non-loopback address (for example HOST=<its Tailscale address>, as docs suggest for a preview):
failed Connection failed error=ECONNRESET: The socket connection was closed unexpectedly. For more information, pass `verbose: true` in the second argument to fetch()
The server log only has {"event":"machine.remote.failed","operation":"bridge","code":"connection_lost",...}.
Why
The setup finds the remote Ovis's bridge descriptor (~/.config/ovis/bridges/*.json, port 18472 here) and verifies it through ssh -L 127.0.0.1:<free>:127.0.0.1:<descriptor port> (server/ssh.tsforward, called from verify in server/machines.ts). A server bound to another address does not listen on the remote's 127.0.0.1, so the tunnel's connection is reset and fetch(.../api/bridge) throws.
PC B: fresh curl -fsSL https://ovis.sh/install.sh | sh, plugin env HOST=<non-loopback address>, PORT=18472, herdr server running.
PC A (0.4.17): add PC B over SSH (tester@127.0.0.1, port 2272 in my test; trust the fingerprint).
The job ends failed with the ECONNRESET text above.
Set B's HOST=127.0.0.1, restart B's Ovis, add again: connected at once.
Seen in the upgrade-check-0417 QA (two Ubuntu 24.04 containers on one host, SSH between them). Not a regression check of this release; found while setting up a second PC.
Expected
Either reach the descriptor's own address, or fail with a message that says the PC's Ovis listens on another address than 127.0.0.1 and what to change.
Activity
fix(machines): tunnel only to an address of the PC itself (#1960)
fix(machines): reach a PC's Ovis on the address it listens on (#1960)
fix(machines): give a timeout and a gone loopback bridge their own me…
fix(machines): tunnel only to an address of the PC itself (#1960)
fix(machines): relay a non-loopback Ovis on 127.0.0.1 instead of tunn…
fix(bridge): make the loopback relay pass a slow reader's backpressur…
fix(bridge): reach a server on another loopback address, and let go o…
fix(machines): reach a PC's Ovis on the address it listens on (#1960)
fix(machines): give a timeout and a gone loopback bridge their own me…
fix(machines): tunnel only to an address of the PC itself (#1960)
fix(machines): relay a non-loopback Ovis on 127.0.0.1 instead of tunn…
fix(bridge): make the loopback relay pass a slow reader's backpressur…
fix(bridge): reach a server on another loopback address, and let go o…
fix(bridge): relay only to an IP address, never a host name (#1960)
fix(machines): reach a PC's Ovis on the address it listens on (#1960)
fix(machines): give a timeout and a gone loopback bridge their own me…
fix(machines): tunnel only to an address of the PC itself (#1960)
fix(machines): relay a non-loopback Ovis on 127.0.0.1 instead of tunn…
fix(bridge): make the loopback relay pass a slow reader's backpressur…
fix(bridge): reach a server on another loopback address, and let go o…
fix(bridge): relay only to an IP address, never a host name (#1960)
fix(machines): call a bridge that stops halfway through its answer ti…
fix(machines): reach a PC's Ovis on the address it listens on (devswh…
fix(machines): tell a PC's own Ovis port and https link to the bridge…