docs(selfhost): recommend pull vs. push relay mode, add pull-mode smoke scenario - #3228
Conversation
…ke scenario Completes the remaining #1825 deliverables that PR #3193's audit left open: a written stable-ingress-vs-pull-mode recommendation, a reproducible pull-mode smoke-test scenario alongside the existing push-mode one, and troubleshooting guidance for a failed relay registration in each mode. - GitHub App and Orb doc: new "Choosing a relay mode" section makes the existing implicit lean (pull mode for NAT/tailnet, no public ingress needed; push mode requires a real, SSRF-validated public origin) explicit, and expands the Brokered Orb env block to show ORB_RELAY_MODE. - Beta release checklist: the brokered-mode scenario now runs BOTH relay modes, since they exercise genuinely different code paths. - Troubleshooting: new guidance for selfhost_orb_relay_register_failed, covering what it means and what to check per relay mode.
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | 5f28d82 | Commit Preview URL Branch Preview URL |
Jul 04 2026, 08:56 PM |
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-04 20:55:51 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 5 non-blocking
Concerns raised — review before merging
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Summary
Completes #1825's remaining deliverables that PR #3193's code-level audit explicitly left open (its own "What's not done" section): a written stable-ingress-vs-pull-mode recommendation, a reproducible pull-mode smoke-test scenario, and troubleshooting guidance for a failed relay registration in each mode.
Grounded entirely in the current code (
src/orb/broker-client.ts,src/orb/relay.ts,src/server.ts,src/selfhost/monitored-work.ts) and the existing docs, not invented — see file:line detail below.What changed
docs.self-hosting-github-app.tsx: new "Choosing a relay mode: pull vs. push" section. Makes explicit what the code already implies but never stated for operators: pull mode (ORB_RELAY_MODE=pull) needs no inbound endpoint at all and is the right fit for NAT/tailnet deployments with no stable public ingress; push mode (the default) requiresPUBLIC_API_ORIGINto be a real, internet-reachable, TLS-terminated URL that the broker SSRF-validates at registration time. Also expands the "Brokered Orb env" code block to showORB_RELAY_MODE.docs.self-hosting-release-checklist.tsx: the existing "2. Brokered mode" smoke scenario only exercised push mode. Added a pull-mode variant alongside it (noPUBLIC_API_ORIGINneeded) since the two modes exercise genuinely different code paths, not just different env vars.docs.self-hosting-troubleshooting.tsx: expanded "Orb export or relay problems" with specific guidance forselfhost_orb_relay_register_failed— what it means and what to check, broken out by relay mode (release-blocking + checkPUBLIC_API_ORIGINfor push; non-fatal + checkORB_ENROLLMENT_SECRETfor pull).Why
Issue #1825 asked for exactly this ("Clear recommendation for stable ingress versus pull-mode default for NAT/tailnet deployments" + "Reproducible smoke checklist for both pull-mode and push-mode relay"), but PR #3193 (the code audit) only covered push mode in the smoke checklist and left the ingress recommendation as an implicit code default rather than written operator guidance. #1825 itself is already closed (auto-closed on #3193's merge), so this references it for traceability without attempting to close it again.
Validation
npm run ui:typechecknpm run ui:lint(0 errors; pre-existingreact-refresh/only-export-componentswarnings unrelated to this change)npm run ui:test(64/64 passing)npm run ui:buildnpm run ui:version-auditnpm run docs:drift-checksrc/**changes — Codecov's patch-coverage gate does not applyScope
site/,CNAME, or**/lovable/**Safety