Files
UNITRONIX 100f697260 fix(runtime): pin console to Node 22 during Node 24 regression
Pin production console images and new bare-metal installs to the latest Node 22 LTS patch while the Node 24 cleanup-hook backport is released and validated. Keep better-sqlite3 13.x and avoid a risky statement-lifecycle refactor.

Refs #377

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-19 10:51:00 +02:00

4.2 KiB

BetterDesk — Project Structure

Current layout of the BetterDesk monorepo (Go server + Node.js console). Legacy Flask / hbbs-patch trees were removed in the 2.x → 3.x era.

Top-level layout

BetterDesk/
├── betterdesk-server/          # Go signal + relay + HTTP API (single binary)
├── web-nodejs/                 # Express admin console (EJS + vanilla JS)
├── rdclient-desktop/           # Tauri v2 operator desktop shell (RdClient)
├── sdks/
│   ├── nodejs/                 # CDAP Node.js SDK (betterdesk-cdap)
│   └── python/                 # CDAP Python SDK
├── bridges/                    # Reference CDAP bridges (modbus, snmp, rest-webhook)
├── docker/                     # Entrypoints, supervisord, helpers
├── docs/                       # Architecture, setup, security, wiki
├── scripts/                    # Version bump, toolchain, wiki sync
├── contrib/                    # Community contrib (e.g. FreeBSD rc.d)
├── .github/                    # CI, Dependabot, CodeQL
├── Dockerfile                  # All-in-one image (Go server + Node console)
├── Dockerfile.server           # Go server image
├── Dockerfile.console          # Node console image
├── betterdesk.sh / .ps1        # Native install / update
├── betterdesk-docker.sh        # Docker-oriented installer
├── CHANGELOG.md
└── VERSION

Active end-user client: betterdesk-support-agent/ (Go/Fyne Support Agent) + shared engine betterdesk-agent/. Built via Console Generator (web-nodejs agentBuildWorker).

Lower priority / not the current product focus: betterdesk-agent-client/ (Tauri Agent Client alpha).

Core components

betterdesk-server/

Clean-room Go implementation replacing RustDesk hbbs+hbbr: UDP/TCP/WS signal, relay, REST API, JWT/RBAC, SQLite/PostgreSQL, CDAP gateway, MeshCentral compat. Pure Go (no CGO). Module: go.mod (toolchain pinned).

web-nodejs/

Node.js management panel: devices, users, policies, updates, remote viewer, i18n (26 locales). Talks to the Go API. Runtime: Node.js 22+ (Docker/CI/installers target 24 LTS).

betterdesk-support-agent/

Inbound-only end-user Support Agent (Go + Fyne). Branded installers produced by the panel Generator (Windows .exe/.msi, Linux portable/AppImage/.deb/.rpm). Connects via CDAP for Web Remote sessions; per-device enrollment; supervised/unattended access.

betterdesk-agent/

Shared CDAP OS-agent engine (desktop, files, terminal, clipboard, audio) embedded by Support Agent.

rdclient-desktop/

Tauri 2 operator desktop shell that hosts the panel remote UI. Vendored wry patch + documented glib/RUSTSEC ignore until GTK stack migration.

sdks/ + bridges/

CDAP client libraries and sample industrial/IoT bridges. SNMP bridge uses official pysnmp 7.x (not the legacy pysnmplib fork).

Docker / install

  • Console images: pinned node:22.23.2-alpine3.24 temporarily for Node.js 24 cleanup-hook stability; CI/client tooling may still use Node 24. Go build image: golang:1.26-alpine; server runtime: alpine:3.22+
  • Compose files at repo root (docker-compose*.yml)
  • Updates: panel Settings → Updates (updateService.js) or betterdesk.sh / betterdesk.ps1

Documentation hub (docs/)

Area Path
Branching / versioning docs/important/branching-and-versioning.md
Update flow docs/important/betterdesk-update-flow.md
Docker docs/docker/
Security audits docs/security/
Wiki mirror docs/wiki/
Dependency upgrade backlog docs/development/DEPENDENCY_UPGRADE_BACKLOG.md

Historical note

Older docs and installers may still mention Flask consoles, hbbs-patch/, or a deprecated/ban_enforcer.py tree. Those components are not in this repository anymore. Use Go server + web-nodejs only.

For contributors

  1. Work on dev by default (see branching docs).
  2. Run web-nodejsnpm test; betterdesk-servergo test ./... (+ govulncheck).
  3. Keep locale keys in sync across all web-nodejs/lang/*.json files.

Last updated: 2026-07-31 (runtime EOL + dependency audit)