Custom instance URL ignored - tunnel always connects to holos.social #111

Closed
opened 2026-05-02 02:16:52 +00:00 by box464 · 0 comments
box464 commented 2026-05-02 02:16:52 +00:00 (Migrated from codeberg.org)

Description

Hi! I tried setting up my own relay server and ran into an issue when attempting to connect from inside the app.

When you enter a custom relay instance on the welcome screen, OAuth login works correctly against that instance. But the WebSocket tunnel connection always goes to wss://tunnel.holos.social/ws regardless of what you entered. Self-hosted relay instances can't establish a tunnel.

Steps to Reproduce

  1. Set up a self-hosted Holos Relay server (e.g. holos.smoltalk.fyi)
  2. On the welcome screen, change the instance from holos.social to your custom instance
  3. Complete OAuth login (this works fine)
  4. Wait for the tunnel connection to establish

Expected Behavior

The app should connect the WebSocket tunnel to the custom relay's tunnel endpoint, not holos.social.

Actual Behavior

The tunnel connection fails. The app always tries to connect to wss://tunnel.holos.social/ws regardless of which instance you entered.

Screenshots / Logs

No screenshots, but I traced through the code and found the root cause.

In src/AppWithAuth.tsx:442, startOAuthServer is called with undefined for the tunnel URL parameter:

const { tunnelUrl, publicKey } = await nodeBridge.startOAuthServer(accessToken, undefined, handle, relayDomain);                                                                                  

In src/services/NodeBridge.ts:470, that undefined falls through to the hardcoded default:

tunnelServerUrl: tunnelServerUrl || 'wss://tunnel.holos.social/ws',

The same undefined pattern exists in the other two call sites:

  • src/screens/TunnelSetupScreen.tsx:115
  • src/components/ConnectionStatus.tsx:79

Worth noting - OAuthService already has hasTunnelSupport() and getRelayTunnelUrl() (lines 336-348) that read the correct tunnel URL from the relay's NodeInfo. They're just never called by any of these callers.

Environment

  • App version: 1.5.1
  • Self-hosted relay on ProxMox/Docker
## Description Hi! I tried setting up my own relay server and ran into an issue when attempting to connect from inside the app. When you enter a custom relay instance on the welcome screen, OAuth login works correctly against that instance. But the WebSocket tunnel connection always goes to `wss://tunnel.holos.social/ws` regardless of what you entered. Self-hosted relay instances can't establish a tunnel. ## Steps to Reproduce 1. Set up a self-hosted Holos Relay server (e.g. holos.smoltalk.fyi) 2. On the welcome screen, change the instance from holos.social to your custom instance 3. Complete OAuth login (this works fine) 4. Wait for the tunnel connection to establish ## Expected Behavior The app should connect the WebSocket tunnel to the custom relay's tunnel endpoint, not holos.social. ## Actual Behavior The tunnel connection fails. The app always tries to connect to wss://tunnel.holos.social/ws regardless of which instance you entered. ## Screenshots / Logs No screenshots, but I traced through the code and found the root cause. In `src/AppWithAuth.tsx:442`, startOAuthServer is called with undefined for the tunnel URL parameter: ``` const { tunnelUrl, publicKey } = await nodeBridge.startOAuthServer(accessToken, undefined, handle, relayDomain); ``` In `src/services/NodeBridge.ts:470`, that undefined falls through to the hardcoded default: `tunnelServerUrl: tunnelServerUrl || 'wss://tunnel.holos.social/ws',` The same undefined pattern exists in the other two call sites: - `src/screens/TunnelSetupScreen.tsx:115` - `src/components/ConnectionStatus.tsx:79` Worth noting - OAuthService already has `hasTunnelSupport()` and `getRelayTunnelUrl()` (lines 336-348) that read the correct tunnel URL from the relay's NodeInfo. They're just never called by any of these callers. ## Environment - App version: 1.5.1 - Self-hosted relay on ProxMox/Docker
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
tom79/Holos-App#111
No description provided.