Skip to content

[Bug] /vnc-proxy WebSocket proxy broken in latest nginx image — CK-X hangs on Linux (PopOS/Ubuntu) despite noVNC working #28

Description

@GeoBradDev

I installed CK-X Simulator on PopOS 22.04 (kernel 6.x), following the official install script:

curl -fsSL https://raw.githubusercontent.com/nishanb/ck-x/master/scripts/install.sh | bash

Installation completed successfully:

✅ All services started
✅ nginx healthcheck / returned 200 OK
✅ / serves HTML correctly in curl and browser

Problem:

When loading http://localhost:30080 in browser → the page hangs at "Loading...".

Confirmed that this is due to /vnc-proxy WebSocket failing:

  • curl -v http://localhost:30080/vnc-proxy hangs

  • curl -i -v -H "Upgrade: websocket" -H "Connection: Upgrade" http://localhost:30080/vnc-proxy hangs / fails

  • Inside remote-desktop container:
    curl -v http://localhost:6901 → returns 200 OK and correct noVNC HTML page → noVNC server is up and working

Diagnosis:

  • This is a broken nginx → /vnc-proxy WebSocket proxy → not forwarding Upgrade and Connection headers correctly

  • This problem does not appear in older CK-X versions (e.g. v1.4.0 nginx config worked)

  • However, nishanb/ck-x-simulator-nginx:v1.4.0 image is not published → no way to pin a working image

  • The :latest image used by install.sh has this bug and no documented workaround

Expected behavior:

  • Either /vnc-proxy WebSocket proxy should be fixed in latest nginx image

  • OR installation instructions should document that Linux users must patch nginx config with a correct WebSocket proxy block (proxy_http_version 1.1, Upgrade/Connection headers, etc.)

Environment:

  • PopOS 22.04 (Ubuntu-based)
  • Kernel 6.x
  • Docker 24.x
  • X11 session (not Wayland)
  • CK-X installed via install.sh → using :latest images

Impact:

  • On modern Linux hosts, CK-X UI is completely broken out of the box → /vnc-proxy hang blocks the app

Suggestion:

  • Fix nginx default.conf in latest image
    OR

  • Document known workaround → mount patched default.conf via docker-compose.override.yml

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions