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)
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.24temporarily 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) orbetterdesk.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
- Work on
devby default (see branching docs). - Run
web-nodejs→npm test;betterdesk-server→go test ./...(+govulncheck). - Keep locale keys in sync across all
web-nodejs/lang/*.jsonfiles.
Last updated: 2026-07-31 (runtime EOL + dependency audit)