Web Console - UNITRONIX/BetterDesk GitHub Wiki
Web Console
The BetterDesk Web Console is a Node.js (Express.js) management panel accessible at http://your-server:5000.
Dashboard
The dashboard provides an overview of your BetterDesk deployment:
- Total Devices — Count of all registered devices
- Online Devices — Currently connected, with real-time WebSocket updates
- Server Uptime — Go server uptime
- System Info — Hostname, OS, Node.js/Go versions
Desktop Widget Dashboard
The dashboard supports an OS-style desktop mode with:
- 20+ draggable, resizable widgets
- Windows 11-style snap layouts (6 predefined zone layouts)
- Aero Shake, edge-snap, maximize hover picker
- Dark/light/auto themes with glassmorphism
- Widget groups (tabbed containers)
- 4 built-in presets (Monitoring, Helpdesk, Minimal, Developer)
- Full-screen login screen with TOTP 2FA support
See Desktop Dashboard for the complete widget reference.
Devices Page
Device List
The devices page shows all registered RustDesk clients in a responsive table:
| Column | Description |
|---|---|
| ID | RustDesk client ID (numeric) |
| Hostname | Device hostname (from sysinfo) |
| Type | Device type (desktop, server, agent, etc.) |
| Platform | OS (Windows, Linux, macOS, Android, iOS) |
| Last Online | Last heartbeat timestamp |
| Status | Online/Degraded/Critical/Offline with colored dot |
| Actions | Kebab menu (⋮) with device operations |
Filters
- Search — Filter by ID, hostname, platform, or tags
- Status filter — Segmented pills: All / Online / Offline
- Folder filter — Horizontal scrollable folder chips
Device Actions (Kebab Menu)
| Action | Description |
|---|---|
| Edit | Change device notes, tags, user assignment |
| Connect | Launch RustDesk connection (URI handler) |
| Rename | Change the device ID |
| Delete | Soft-delete the device |
| Revoke | Delete + block ID + disconnect active sessions |
| Ban | Block the device from reconnecting |
| Wake on LAN | Send WOL magic packet (offline devices) |
Folders
Organize devices into folders:
- Create/rename/delete folders
- Drag-and-drop devices between folders
- Folder counts update automatically
Real-time Status Updates
Device status updates in real-time via WebSocket push from the Go server event bus. No page reload needed — green/red dots update in-place.
Device Detail
Click a device row to open the detail panel:
Info Tab
- Device ID, hostname, platform, version
- IP address, last online timestamp
- Tags, notes, user assignment
- Connect button (RustDesk URI handler)
Hardware Tab
- CPU model, cores, architecture
- Total RAM, total disk
- OS version, kernel
Metrics Tab
- Live CPU, memory, disk gauges (animated bars)
- Historical charts (last 100 data points)
- Data from
POST /api/heartbeatwith metrics
Users Page
Manage console users with four roles. See User Management for details.
Settings Page
Server Configuration
- View server address and public key
- Generate QR codes for client setup
- Copy configuration strings
Console Settings
- Language selection (EN, PL, ZH)
- Console version info
- Session timeout configuration
Password Change
- Current password verification
- New password with confirmation
- TOTP 2FA enrollment/removal
OS-Style Login Screen
When desktop mode is active, the login page transforms into a Windows 11-style experience:
- Wallpaper background with frosted glass card
- Clock and date overlay (click to dismiss)
- Multi-user selector (bottom-left avatars)
- TOTP 2FA with individual digit input boxes
- Session expiry detection with auto-redirect
UI Features
Theme Support
- Dark (default) — Dark backgrounds, light text
- Light — White backgrounds, dark text
- Auto — Follows system
prefers-color-scheme
Toast Notifications
- Success/error/warning/info pop-ups
- Auto-dismiss with progress bar
- Hover to pause
- Max 5 simultaneous toasts
Skeleton Loading
- Animated shimmer placeholders during data load
- Applied to tables, cards, avatars
Page Transitions
- Fade + translateY animation on page content
- Staggered list item animations (30ms per row)
Responsive Design
- 4 breakpoints: 1024px, 768px, 600px, 400px
- Card-style layout on mobile (< 600px)
- Bottom sheet kebab menu on phones
- Collapsible sidebar navigation
Internationalization (i18n)
The console supports multiple languages:
| Language | Code | Status |
|---|---|---|
| English | en |
✅ Complete |
| Polish | pl |
✅ Complete |
| Chinese | zh |
✅ Complete |
Adding a Language
- Copy
web-nodejs/lang/en.jsontoweb-nodejs/lang/{code}.json - Translate all values (keep keys as-is)
- Update the
metasection with language info - The language auto-appears in the selector (auto-discovery from
lang/directory)
See the Contributing Translations guide for details.