Skip to content

deploy: sidecar de pairing NIP-AB (arregla el QR del móvil) - #6

Merged
A-PachecoT merged 1 commit into
railway-deployfrom
deploy/pair-relay
Aug 26, 2026
Merged

deploy: sidecar de pairing NIP-AB (arregla el QR del móvil)#6
A-PachecoT merged 1 commit into
railway-deployfrom
deploy/pair-relay

Conversation

@A-PachecoT

Copy link
Copy Markdown

Escanear el QR en Buzz Mobile falla con WebSocket connection failed: HTTP error: 404 Not Found.

Causa raíz

Sin BUZZ_PAIRING_RELAY_URL, el relay omite pairing_relay_url de su NIP-11 y los
clientes caen al fallback legacy de mismo-host /pair — ruta que el relay nunca sirvió.
Upstream nombra la falla en crates/buzz-relay/src/nip11.rs:

open relays misroutes pairing peers to a non-existent /pair sidecar

Confirmado contra el relay vivo:

NIP-11 pairing_relay_url:  AUSENTE
/pair -> 404   /pairing -> 404   /api/pair -> 404

Qué agrega

Un servicio Railway para buzz-pair-relay, el sidecar NIP-AB. Stateless — sin volumen,
sin DB, estado de pairing solo en memoria mientras dura el handshake.

El binario ya viene en la imagen base, así que esto no requiere el upgrade de upstream
(PR #5) — es independiente a propósito, para que el QR no quede rehén de 447 commits.

BUZZ_IMAGE queda byte-idéntico al del relay principal: un drift entre los dos sería una
version skew que nadie pensaría en revisar.

Por qué un entrypoint y no un ENV

El default del binario es 127.0.0.1:5000, mal por partida doble en Railway: loopback no
es alcanzable por el edge (502 con el contenedor viéndose sano), y el puerto llega en
$PORT en runtime, así que no puede hornearse en build time.

Verificación — build y run reales, no revisión de código

En la caja Arch, con Docker:

buzz-pair-relay: binding 0.0.0.0:5055
buzz-pair-relay listening on 0.0.0.0:5055

handshake WebSocket -> HTTP 101

101 = upgrade aceptado. Es exactamente la petición que hoy devuelve 404 en el celular.

Falta después del merge

  1. Crear el servicio en el proyecto Railway buzz apuntando a este Dockerfile
  2. Generar dominio público → wss://<host>
  3. BUZZ_PAIRING_RELAY_URL=wss://<host> en el relay principal + redeploy
  4. Reescanear el QR

Nota de exposición

El endpoint es público y no autenticado por diseño de NIP-AB — upstream corre
wss://pairing.buzz.xyz igual. La seguridad está en el handshake, no en la alcanzabilidad.

https://claude.ai/code/session_012sqAd3AqBD5ZEGzt8Ewhn9

Escanear el QR en Buzz Mobile falla con 'WebSocket connection failed:
HTTP error: 404 Not Found'. Causa: sin BUZZ_PAIRING_RELAY_URL, el relay
omite pairing_relay_url del NIP-11 y los clientes caen al fallback legacy
de mismo-host /pair — una ruta que el relay nunca sirvió. Upstream nombra
la falla en crates/buzz-relay/src/nip11.rs.

buzz-pair-relay ya viene en la imagen base; esto solo lo arranca. Stateless,
sin volumen, sin DB. El entrypoint existe porque el default del binario
(127.0.0.1:5000) es incorrecto en Railway por partida doble: loopback no es
alcanzable por el edge, y el puerto llega en $PORT en runtime.

Verificado con build + run reales en la caja Arch:
  buzz-pair-relay listening on 0.0.0.0:5055
  handshake WebSocket -> HTTP 101 (upgrade aceptado)

Claude-Session: https://claude.ai/code/session_012sqAd3AqBD5ZEGzt8Ewhn9
@A-PachecoT
A-PachecoT merged commit c2393cd into railway-deploy Aug 26, 2026
21 checks passed
@A-PachecoT
A-PachecoT deleted the deploy/pair-relay branch August 26, 2026 04:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant