22
33SunRay2Server is an experimental Go server for Sun Ray 2 terminals. It accepts
44the Sun Ray authentication/display protocol and routes each terminal to a
5- local test page or a remote SSH, VNC, or RDP session.
5+ local test page, a full-screen web dashboard, or a remote SSH, VNC, or RDP
6+ session.
67
78The current card reader integration reliably distinguishes ` no-card ` and
89` card-present ` . Some firmware reports ` card_id=0 ` , so exact card routing is
@@ -12,13 +13,14 @@ available only when the terminal provides a real ID.
1213
1314- Sun Ray authentication, display, keyboard, pointer, and wheel input.
1415- ` card-test ` and interactive ` geometry-test ` sessions.
16+ - Full-screen Chromium web sessions with live page updates and input.
1517- SSH with a PTY and framebuffer terminal.
1618- VNC with per-session credentials, scaling, and CopyRect updates.
1719- RDP through FreeRDP + Xvfb + x11vnc.
1820- Optional passive smart-card/ATR observation on TCP 4120.
1921- No audio forwarding yet. Sun Ray and VNC transports are not encrypted;
2022 use them only on a trusted network or through a secure tunnel.
21- - A physical monitor is not required. RDP uses an in-container Xvfb display .
23+ - A physical monitor is not required. Web and RDP sessions use Xvfb .
2224
2325## Build and test
2426
@@ -57,7 +59,7 @@ sections:
5759
5860- ` server ` : TCP listener, fallback/canvas resolution, packet pacing, logging,
5961 and optional smart-card probing.
60- - ` sessions ` : named ` card-test ` , ` geometry-test ` , ` vnc ` , ` ssh ` , or ` rdp `
62+ - ` sessions ` : named ` card-test ` , ` geometry-test ` , ` web ` , ` vnc ` , ` ssh ` , or ` rdp `
6163 sessions.
6264- ` routing ` : maps ` no_card ` , ` card_present ` , exact card IDs, or terminal serials
6365 to session names. Terminal-specific routes take precedence over defaults.
@@ -77,6 +79,10 @@ server:
7779sessions :
7880 card-test :
7981 type : card-test
82+ dashboard :
83+ type : web
84+ url : https://example.com/
85+ resolution_mode : current
8086 office-vnc :
8187 type : vnc
8288 address : 192.168.30.10:5900
@@ -124,14 +130,40 @@ all four colored edges fit without panning, then copy the displayed value to
124130` server.display_width` and `server.display_height`. A tested Sun Ray 2 with a
1251311920x1080 monitor used `1400x1050`; measure each installation.
126132
127- VNC and RDP resolution modes :
133+ VNC, RDP, and web resolution modes :
128134
129135- `current` : the configured/current Sun Ray canvas (default).
130136- `terminal` : the original `startRes` reported by the terminal.
131137- `manual` : session-level `display_width` and `display_height`.
132138- VNC also supports `vnc`, which keeps the remote framebuffer at native size;
133139 a larger desktop may pan on the Sun Ray.
134140
141+ # ## Web dashboards
142+
143+ A `web` session opens its `url` as a full-screen Chromium application inside a
144+ private Xvfb display. The page remains loaded : JavaScript timers, WebSocket,
145+ SSE, and page-managed updates continue normally, with no periodic reload.
146+ Framebuffer changes are forwarded through the local VNC bridge.
147+
148+ ` ` ` yaml
149+ sessions:
150+ dashboard:
151+ type: web
152+ url: https://example.com/
153+ resolution_mode: current
154+ browser_no_sandbox: true # commonly required by Docker/LXC
155+ ` ` `
156+
157+ Mouse, wheel, and keyboard input are forwarded to Chromium. `Ctrl+R` or `F5`
158+ reloads, `Alt+Left` goes back, and `Alt+Right` goes forward. Web sessions support
159+ the same `current`, `terminal`, and `manual` resolution modes as RDP.
160+
161+ Chromium's sandbox is enabled by default in the application. Docker and nested
162+ LXC environments commonly block the required namespaces, so the supplied YAML
163+ template explicitly sets `browser_no_sandbox : true`. This weakens browser
164+ isolation : use trusted URLs and set it back to `false` when the host supports
165+ Chromium's sandbox.
166+
135167# ## SSH
136168
137169SSH requires exactly one host-key policy : ` known_hosts_file` ,
@@ -146,8 +178,9 @@ RDP sessions require `hostname`, `username`, and a password/password file. The
146178LAN test with a self-signed server. Supported policies are `deny`, `ignore`,
147179` tofu` , `name:<certificate-name>`, and `fingerprint:<hash>`.
148180
149- The supplied Docker image includes `xfreerdp`, `Xvfb`, and `x11vnc`. A native
150- installation must provide those programs in `PATH`.
181+ The supplied Docker image includes Chromium, Japanese/emoji fonts, `xfreerdp`,
182+ ` Xvfb` , and `x11vnc`. A native installation must provide the relevant programs
183+ in `PATH`.
151184
152185# # Docker Compose
153186
@@ -231,9 +264,9 @@ On compact keyboards, `Pause/Break` may require `Fn`.
231264- **The display is slow or resends repeat:** keep `log_input_events: false`,
232265 reduce the logical resolution, and try a larger `packet_delay` such as
233266 ` 300us` or `1ms`.
234- - **RDP stops before showing a desktop:** verify that `xfreerdp`, `Xvfb`, and
235- ` x11vnc` are present; in a customized container also verify `/tmp/.X11-unix`
236- permissions.
267+ - **Web or RDP stops before showing a desktop:** verify that Chromium or
268+ ` xfreerdp ` , plus `Xvfb` and ` x11vnc`, are present; in a customized container
269+ also verify `/tmp/.X11-unix` permissions.
237270- **The interactive Compose menu warns about terminfo:** set
238271 ` COMPOSE_MENU=false` ; this is a Compose CLI warning, not a Sun Ray error.
239272
0 commit comments