From 13a6cbfe1036db242583a6af5471b5a21fb223b9 Mon Sep 17 00:00:00 2001 From: bndw Date: Fri, 13 Feb 2026 21:19:00 -0800 Subject: feat: add --public-url flag for reverse proxy deployments Add flag to specify public-facing domain when relay is behind a reverse proxy that terminates TLS. Usage: ./bin/relay --public-url nostr-grpc.x.bdw.to When set, the index page displays: - gRPC: nostr-grpc.x.bdw.to:50051 - Connect: https://nostr-grpc.x.bdw.to - WebSocket: wss://nostr-grpc.x.bdw.to When not set, falls back to local addresses (:50051, :8080) for development environments. --- cmd/relay/main.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'cmd/relay') diff --git a/cmd/relay/main.go b/cmd/relay/main.go index 56668fc..a7daa50 100644 --- a/cmd/relay/main.go +++ b/cmd/relay/main.go @@ -27,9 +27,10 @@ import ( func main() { var ( - grpcAddr = flag.String("grpc-addr", ":50051", "gRPC server address") - wsAddr = flag.String("ws-addr", ":8080", "WebSocket server address") - dbPath = flag.String("db", "relay.db", "SQLite database path") + grpcAddr = flag.String("grpc-addr", ":50051", "gRPC server address") + wsAddr = flag.String("ws-addr", ":8080", "WebSocket server address") + dbPath = flag.String("db", "relay.db", "SQLite database path") + publicURL = flag.String("public-url", "", "Public URL for relay (e.g., nostr-grpc.x.bdw.to)") ) flag.Parse() @@ -51,7 +52,21 @@ func main() { mux.Handle(path, handler) wsHandler := wshandler.NewHandler(store, subManager) - wsHandler.SetIndexData(*grpcAddr, *wsAddr, *wsAddr) + + // Set public URLs for index page + var grpcDisplay, httpDisplay, wsDisplay string + if *publicURL != "" { + // Use public URLs when behind reverse proxy + grpcDisplay = *publicURL + ":50051" // gRPC typically on different port + httpDisplay = "https://" + *publicURL + wsDisplay = "wss://" + *publicURL + } else { + // Use local addresses for development + grpcDisplay = *grpcAddr + httpDisplay = *wsAddr + wsDisplay = *wsAddr + } + wsHandler.SetIndexData(grpcDisplay, httpDisplay, wsDisplay) mux.Handle("/", wsHandler) grpcLis, err := net.Listen("tcp", *grpcAddr) -- cgit v1.2.3