docs: document public reverse-proxy exposure (reviewer.hemoglobina.store) #12
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "docs/public-reverse-proxy-exposure"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Documents the now-live optional public-exposure setup (mirrors
git.hemoglobina.store): DO Caddy auto-TLS + WireGuard → NAS viewport, OAuth-gated.docker-compose.override.ymlwg dual-bind (survivesinstall-on-nas.shsince it only overwritesdocker-compose.yml),STATUS_PUBLIC_URLS+TRUST_PROXY, OAuth callback-URI registration, recreate, and the non-interactive verification curls.STATUS_PUBLIC_URL/STATUS_PUBLIC_URLS/TRUST_PROXYin the Auth section.Docs-only; follows the multi-origin auth feature (#11).
hib-pr-reviewer review — PR #12 (hib/hib-pr-reviewer)
Round 1 — head
440d2baad095, basemain, triggeropenedTL;DR: CONDITIONAL_APPROVE — 1 agreed finding kept (TRUSTED_PROXY_HOPS missing from table), 1 unique-to-B verified and kept (TRUST_PROXY description omits primary SSE per-IP-cap motivation), 1 unique-to-A verified and kept (deployment.md ini omits TRUSTED_PROXY_HOPS); all minor/info, no blocking issues.
Summary
Arbitration summary
All three actionable concerns across A and B are verified against HEAD source and kept.
Agreed finding (A + B): Both independently flag
TRUSTED_PROXY_HOPSabsent from the newconfiguration.mdtable. Confirmed:bin/svelte-viewport.ts:363-364always parses the two constants together;docs/features.md:93explicitly pairs them; the table row at line 158 has noTRUSTED_PROXY_HOPSsibling. Kept at minor.Unique-to-B (verified):
TRUST_PROXYdescription says "client-IP for the login rate-limit" but omits the SSE per-IP cap. Confirmed bybin/svelte-viewport.ts:356-362(comment names the SSE cap as the primary motivation, login rate-limit is the secondary use at line 855) anddocs/features.md:93. Omitting this means an operator reading only the table will not understand that withoutTRUST_PROXY=1the per-IP cap degenerates to one global cap for all clients. Kept at minor.Unique-to-A (verified):
docs/deployment.mdstep-4 ini block at lines 149-151 omitsTRUSTED_PROXY_HOPS=1. Confirmed by Read. A correctly notes the omission is operationally safe for the single-hop case but reduces discoverability. Kept at info.No findings dropped.
Blast Radius
The diff is documentation-only, touching two markdown files in docs/. No source code, configuration schemas, or runtime behaviour is modified. The blast radius is limited to operators reading these docs and potentially misconfiguring their deployments.
BLAST_SCORE: 1/10
CI status (head
440d2baad095)Overall: ✓ success
3 checks: 3 pending
Findings (3)
[MINOR] TRUST_PROXY description omits the SSE per-IP cap — the primary motivation
docs/configuration.md:158
The new row says
X-Forwarded-Foris honoured "(client-IP for the login rate-limit)". This is factually incomplete: the SSE per-IP cap is the primary use case.bin/svelte-viewport.ts:356-362(source comment):bin/svelte-viewport.ts:855applies the same policy to the login route only as a secondary use.docs/features.md:93also scopes it to the SSE cap first.An operator reading only this table row to decide whether to set
TRUST_PROXY=1will not know that without it the per-IP cap collapses to one global cap (all traffic keyed on the proxy IP), which is a significant operational consequence.Suggested fix:
[MINOR] TRUSTED_PROXY_HOPS companion variable missing from the new table
docs/configuration.md:158
configuration.mdis the canonical env-var reference. The newTRUST_PROXYrow has no siblingTRUSTED_PROXY_HOPSrow, yetbin/svelte-viewport.ts:363-364always parses them together:docs/features.md:93explicitly pairs them: "TRUST_PROXY(+TRUSTED_PROXY_HOPS) gates client-IP derivation for the SSE per-IP cap"..env.exampledocuments them adjacent. An operator who consults only this table to deploy behind a two-hop stack (CDN → Caddy → WireGuard → NAS) would silently derive the wrong client IP from XFF with no hint the knob exists.Suggested addition after the
TRUST_PROXYrow:[INFO] Step 4 ini snippet omits TRUSTED_PROXY_HOPS=1
docs/deployment.md:150
The env block in step 4 (lines 149-151):
does not include
TRUSTED_PROXY_HOPS=1. The omission is safe for this single-hop Caddy topology (the default1is exactly right), butdocs/features.md:93and.env.examplealready pair these vars, and an operator copy-pasting this snippet gains no hint the companion knob exists. If they later add a CDN in front of Caddy they would need to set it.Suggested change:
Verdict
CONDITIONAL_APPROVE
hib-pr-reviewer • round 1 • 3 findings (2m/1i) • 2026-06-03T15:55:12.679Z → 2026-06-03T16:00:45.374Z • posted-as: pr-reviewer-bot • model: auto
Review cancelled by operator at 2026-06-03T16:04:24.911Z.