Cannot start mobile pairing, because no pairing relay is deployed
rian-dolphin
HOBBYOP

15 days ago

I deployed a relay with the official Railway template, as described in "Run your own Buzz relay". The relay works for Buzz Desktop.

Mobile pairing does not start. In Buzz Desktop I select "Connect the Buzz mobile app to this relay by scanning a QR code". Desktop then shows this error, and no QR code appears:

WebSocket connection failed: HTTP error: 404 Not Found

The phone is not involved. The failure occurs in Desktop, before the QR code.

What I found

Disclaimer: Claude assisted diagnosis

Digging into https://github.com/block/buzz/issues/3779 and the associated PR helped diagnose.

Desktop reads the relay's NIP-11 document. The document says that the relay supports NIP-43. It does not give a pairing relay URL. Desktop then uses the older method and tries the path wss://<host>/pair. Nothing answers on that path, so Desktop gets a 404 error.

Three checks on my template deployment:

  1. The NIP-11 document has no pairing_relay_url field.
  2. The NIP-11 document lists NIP 43 in supported_nips. It also sets auth_required: true and restricted_writes: true.
  3. A WebSocket upgrade request to /pair gives HTTP 404.

The cause looks clear. Pairing needs a second binary, buzz-pair-relay. The Dockerfile builds it and installs it at /usr/local/bin/buzz-pair-relay. But the entrypoint is buzz-relay, and the template deploys one service. So the pairing relay never starts.

My questions

  1. Is this the expected behaviour of the template? Or is it a bug?

  2. Must every self-host operator add the pairing service by hand?

  3. If yes, can the template add it as an option? A checkbox such as

    "Enable mobile pairing" would make the choice visible. It would also let operators who do not want a public unauthenticated endpoint refuse it.

A note for other Railway users

As far as I can see, railway cannot send one path to a different service. So /pair alone is not sufficient on Railway. You must deploy a second service that runsbuzz-pair-relay, give it its own public domain, and then setBUZZ_PAIRING_RELAY_URL=wss://<pair-host> on the main relay.

Awaiting Template Creator Response

0 Replies

Welcome!

Sign in to your Railway account to join the conversation.

Loading...