From b4922e7fd32ad188ebc077694915a8da31ef9d75 Mon Sep 17 00:00:00 2001 From: Claude Agent Date: Tue, 16 Jun 2026 01:53:12 +0000 Subject: [PATCH] gaiad: traefik split-WS router -> /websocket (CometBFT WS endpoint) dshackle's WS head subscription hit the RPC root (got HTTP 200, not a WS upgrade). Set client_ws_path=/websocket -> rpc-client.yml emits the avalanche-style priority-100 WS router (Header Upgrade:websocket -> replacepath /websocket) so WS reaches CometBFT's /websocket. RPC router unchanged (stripprefix -> root). Co-Authored-By: Claude Opus 4.8 (1M context) --- cosmos/gaiad/cosmos-mainnet-gaiad-pruned.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cosmos/gaiad/cosmos-mainnet-gaiad-pruned.yml b/cosmos/gaiad/cosmos-mainnet-gaiad-pruned.yml index 276d69af..4f4dd734 100644 --- a/cosmos/gaiad/cosmos-mainnet-gaiad-pruned.yml +++ b/cosmos/gaiad/cosmos-mainnet-gaiad-pruned.yml @@ -87,6 +87,17 @@ services: - ${NO_SSL:-traefik.http.routers.cosmos-mainnet-gaiad-pruned.rule=Host(`$DOMAIN`) && (Path(`/cosmos-mainnet-pruned`) || Path(`/cosmos-mainnet-pruned/`))} - ${NO_SSL:+traefik.http.routers.cosmos-mainnet-gaiad-pruned.rule=Path(`/cosmos-mainnet-pruned`) || Path(`/cosmos-mainnet-pruned/`)} - traefik.http.routers.cosmos-mainnet-gaiad-pruned.middlewares=cosmos-mainnet-gaiad-pruned-stripprefix, ipallowlist + - traefik.http.routers.cosmos-mainnet-gaiad-pruned.priority=50 # gets any request that is not GET with UPGRADE header + - traefik.http.routers.cosmos-mainnet-gaiad-pruned-ws.priority=100 # answers GET requests first + - traefik.http.middlewares.cosmos-mainnet-gaiad-pruned-set-ws-path.replacepath.path=/websocket + - traefik.http.services.cosmos-mainnet-gaiad-pruned-ws.loadbalancer.server.port=26657 + - traefik.http.routers.cosmos-mainnet-gaiad-pruned-ws.service=cosmos-mainnet-gaiad-pruned-ws + - traefik.http.routers.cosmos-mainnet-gaiad-pruned.service=cosmos-mainnet-gaiad-pruned + - ${NO_SSL:-traefik.http.routers.cosmos-mainnet-gaiad-pruned-ws.entrypoints=websecure} + - ${NO_SSL:-traefik.http.routers.cosmos-mainnet-gaiad-pruned-ws.tls.certresolver=myresolver} + - ${NO_SSL:-traefik.http.routers.cosmos-mainnet-gaiad-pruned-ws.rule=Host(`$DOMAIN`) && (Path(`/cosmos-mainnet-pruned`) || Path(`/cosmos-mainnet-pruned/`)) && Headers(`Upgrade`, `websocket`)} + - ${NO_SSL:+traefik.http.routers.cosmos-mainnet-gaiad-pruned-ws.rule=(Path(`/cosmos-mainnet-pruned`) || Path(`/cosmos-mainnet-pruned/`)) && Headers(`Upgrade`, `websocket`)} + - traefik.http.routers.cosmos-mainnet-gaiad-pruned-ws.middlewares=cosmos-mainnet-gaiad-pruned-stripprefix, cosmos-mainnet-gaiad-pruned-set-ws-path, ipallowlist volumes: cosmos-mainnet-gaiad-pruned: