Files
dotfiles/hosts/mainframe/sunshine/sunshine.conf
T
connor c6edf78545 sunshine: allow the LAN origins past CSRF
Reaching the web UI from another machine sends an Origin header naming
this host rather than localhost, and Sunshine's CSRF check rejects it:

  Web UI: [10.0.0.8] -- CSRF protection blocked request from origin:
  https://10.0.0.2:47990

csrf_allowed_origins takes a comma-separated list of bare origins, NOT a
JSON array — brackets and quotes are rejected entry by entry, which is how
the first attempt failed. Both the IP and hostname spellings are listed
because the browser sends whichever was typed.

origin_web_ui_allowed=lan set explicitly alongside it, so the two settings
that gate remote access to the UI are stated in one place.
2026-09-14 15:55:38 -04:00

28 lines
1.1 KiB
Plaintext

# RTX 3060 (01:00.0). The Intel iGPU is renderD128 and owns the only physically
# connected output; this machine deliberately captures a virtual output on the
# NVIDIA card instead, so capture and NVENC happen without a cross-GPU copy.
adapter_name = /dev/dri/renderD129
# The single output created by hosts/mainframe/sway/headless.conf.
output_name = HEADLESS-1
# wlroots screencopy rather than a KMS grab. This is why the sunshine binary
# needs no cap_sys_admin here.
capture = wlr
encoder = nvenc
nvenc_preset = 1
nvenc_twopass = quarter_res
min_log_level = warning
# The web UI is reached from other machines on the LAN, so their Origin header
# names this host rather than localhost and Sunshine's CSRF check rejects it.
# Both spellings are listed because the browser sends whichever you typed.
# Comma-separated bare origins — not a JSON array; brackets and quotes are
# rejected entry by entry.
csrf_allowed_origins = https://10.0.0.2:47990,https://mainframe:47990,https://localhost:47990
# Web UI reachable from the LAN, not just this machine.
origin_web_ui_allowed = lan