Sign inSign up

marcpope/cortendesk

By marcpope

Updated 8 days ago

An open source web-console for the open-source version of Rust Desk Server / Client.

Image
Networking
Developer tools
Monitoring & observability
0

5.7K

marcpope/cortendesk repository overview

A professional, self-hosted web console for RustDesk servers — with a fully native in-browser remote desktop client.

CortenDesk gives the free, open-source RustDesk server (hbbs/hbbr) the management console it deserves: device fleet management, users and scoped access, address books, audit logs, and a web client that can view, control, and transfer files to your devices straight from the browser — no installer, no Electron, no paid tier.

Built on Laravel + Livewire with precompiled assets: there is no frontend build step. Clone, configure, migrate, serve.

Features Console

Devices — live fleet with presence, platform icons, aliases, device groups ("folders"), pre-registration, and a recycle bin. One-click connect via rustdesk:// deep links or the built-in web client. Users & access scoping — admins see everything; regular users see only their own devices plus device groups granted to them or their user groups. The RustDesk client API is scoped with the same rules. Address books — full support for the modern multi-address-book API and the legacy API: shared books, share rules (everyone / user / group), tags with colors. Audit logs — connections, file transfers, console logins, and security alarms (brute-force/blocked-access events); filterable, exportable to CSV, with configurable retention and automatic nightly pruning. Dashboard — live stat tiles, active sessions, 14-day connection charts, platform and version breakdowns. Importer — one artisan command migrates everything (users with passwords intact, devices, address books, audit history) from a lejianwen/rustdesk-api database. Mobile-first — every screen works on a phone; wide tables degrade to card lists. Dark and light themes. Client API

Implements the RustDesk client HTTP API: login/tokens, heartbeat and sysinfo presence, address books, group tab, audit ingestion. Point stock RustDesk clients at CortenDesk as their API Server — no client patches needed. Native web client

A from-scratch TypeScript implementation of the RustDesk wire protocol (rendezvous → relay → NaCl handshake → login), running entirely in the browser over WebSocket relays. Not a WASM port — readable, auditable source. Hardware-accelerated video via WebCodecs (VP8/VP9/H.264/H.265/AV1 as supported), audio, clipboard both ways, multi-monitor switching, Ctrl+Alt+Del, session stats. File transfer — an in-session dual-pane manager: browse the remote filesystem, send/receive files and folders with progress, resume-aware digests, conflict prompts, and drag-and-drop. Uses the File System Access API on Chromium; falls back to picker/Downloads elsewhere. Saved passwords (hashed, never plaintext) with auto-login per device. Best experienced in Chrome/Edge; the desktop stream requires WebCodecs. Requirements PHP 8.4+ with Composer MySQL/MariaDB (SQLite works for evaluation) nginx + php-fpm (or any Laravel-capable web server) A running open-source RustDesk server (hbbs/hbbr), reachable from your devices For the web client: a TLS-terminating proxy that bridges wss:// to hbbs/hbbr WebSocket ports (21118/21119) — sample config below Quick start with Docker The repo ships a self-contained image (php-fpm + nginx, web client included, WebSocket bridge to your RustDesk server built in). Releases are published to GHCR — or build it yourself:

docker pull ghcr.io/marcpope/cortendesk:0.8.0-beta.2 # or build locally: docker build -t cortendesk . docker run -d -p 8080:8080 -v cortendesk-data:/data
-e CORTENDESK_ID_SERVER=hbbs.example.com:21116
-e CORTENDESK_RELAY_SERVER=hbbs.example.com:21117
-e CORTENDESK_PUBLIC_KEY=""
cortendesk First boot creates admin / changeme (override with CORTENDESK_ADMIN_USER / CORTENDESK_ADMIN_PASSWORD) and uses SQLite in the /data volume — see docker-compose.yml for a MySQL setup. The container bridges /ws/id and /ws/relay to your hbbs/hbbr (host taken from CORTENDESK_ID_SERVER, or set RUSTDESK_WS_HOST). Put a TLS reverse proxy in front and set CORTENDESK_WS_ID_URL / CORTENDESK_WS_RELAY_URL to the resulting wss://your-host/ws/* URLs — browsers require wss for the web client.

Tag summary

Content type

Image

Digest

sha256:43bd814fc

Size

84.5 MB

Last updated

8 days ago

docker pull marcpope/cortendesk