A modern Vue.js web client for BliKVM - an open-source KVM (Keyboard, Video, Mouse) over IP solution.
The BliKVM Matrix Client provides a comprehensive web interface for remote server management, featuring real-time video streaming, keyboard/mouse control, virtual media mounting, and system monitoring capabilities.
- Real-time Video Streaming - WebRTC-based video capture and streaming
- Keyboard & Mouse Control - Full HID emulation with multiple keyboard layouts
- Virtual Media - Mount and manage ISO images, USB drives remotely
- Serial Terminal - Built-in terminal access via xterm.js
- ATX Power Control - Remote power management (power on/off, reset)
- System Monitoring - Real-time health metrics and diagnostics
- Network Configuration - Network settings and connectivity management
- Security Controls - Authentication, authorization, and access control
- Multi-language Support - Internationalization with Vue i18n
- HDMI Switch Control - Manage connected HDMI switches
- Wake-on-LAN - Remote system wake capabilities
- VPN Integration - Built-in VPN management
- File Upload/Download - TUS-based resumable file transfers
- OCR Text Extraction - Screen text recognition using Tesseract.js
- Audio Streaming - Opus-based audio capture and playback
- Dual Input Sources - Simultaneous touch and mouse input handling with accurate cursor tracking
- Code of Conduct - Configurable Code of Conduct display
- Vue 3 - Progressive JavaScript framework with Composition API
- Vuetify 3 - Material Design component library
- Pinia - State management store
- Vue Router 4 - Client-side routing
- Vite - Fast build tool and development server
- Sass - CSS preprocessor with modern API
- ESLint - Code linting and formatting
- Unplugin Auto Import - Automatic imports for Vue APIs
- WebRTC Adapter - Cross-browser WebRTC compatibility
- Janus Gateway - WebRTC server integration
- Axios - HTTP client for API communication
- WebSocket - Real-time bidirectional communication
- Chart.js - Data visualization and metrics charts
- Simple Keyboard - Virtual on-screen keyboard
- Material Design Icons - Comprehensive icon set
- Clipboard.js - Clipboard operations
- @xterm/xterm - Terminal emulator in the browser
- Tesseract.js - OCR text recognition
- @uppy/tus - Resumable file uploads
- @casl/ability - Access control and permissions
src/
├── components/ # Vue components
│ ├── App*.vue # Main application components
│ ├── Settings*.vue # Configuration components
│ ├── Speeddial*.vue # Quick action buttons
│ ├── dialog/ # Modal dialogs
│ ├── shared/ # Reusable UI components
│ └── experimental/ # Beta features
├── composables/ # Vue composition functions
│ ├── useKVM*.js # KVM-related logic
│ ├── useVideo*.js # Video streaming logic
│ ├── useAuth*.js # Authentication logic
│ └── use*.js # Various utilities
├── pages/ # Route pages
├── layouts/ # Layout templates
├── stores/ # Pinia state stores
├── utils/ # Utility functions
│ ├── http.js # HTTP client configuration
│ ├── websocket.js # WebSocket utilities
│ └── locales/ # Internationalization
└── styles/ # Global styles and themes
- Node.js 18+
- SSL certificates (cert.pem, key.pem) for HTTPS development
- Prettier: esbenp.prettier-vscode - Code formatting
# Clone the repository
git clone https://github.com/blikvm/dev_blikvm.git
cd dev_blikvm
# Install dependencies
npm install
# Start development server
npm run dev- URL: https://localhost:10005
- Network: https://192.168.1.217:10005
- HTTPS: Required for WebRTC and modern browser features
# Production build
npm run build
# Preview production build
npm run preview
# Code linting
npm run lint- Port: 10005 (HTTPS)
- Proxy: TUS server proxy for file uploads
- SSL: Self-signed certificates for development
- Sass: Modern API configuration
The client connects to the BliKVM server via:
- REST API: HTTP endpoints for configuration and control
- WebSocket: Real-time communication
- WebRTC: Video/audio streaming via Janus Gateway
- TUS Protocol: Resumable file uploads
AppKVM.vue- Main KVM interface with video and controlsAppToolbar.vue- Top navigation and quick actionsSettings.vue- Comprehensive settings managementSerialTerminal.vue- Built-in terminal emulator
SettingsKVM.vue- KVM-specific configurationSettingsVideo.vue- Video streaming settingsSettingsATX.vue- Power management controlsSettingsMouse.vue- Mouse/HID input configurationSettingsNetwork.vue- Network configurationSettingsSecurity.vue- Authentication and access controlSettingsText.vue- Text input and clipboard settingsSettingsTextExtract.vue- OCR text extractionSettingsTextPaste.vue- Text paste functionality
VirtualMedia.vue- ISO/USB mounting interfaceSwitch.vue- HDMI switch managementShortcuts.vue- Keyboard shortcut configurationHealthCheck.vue- System health monitoring
useAuthentication.js- Login/logout functionalityuseSecurity.js- Security settings and access controluseACL.js- Role-based permissions using CASL
useAppKVMVideo.js- Video streaming managementuseKeyboard-new.js- Keyboard input handlinguseMouse.js- Mouse input processinguseClipboard.js- Clipboard synchronization
useSystemInfo.js- Hardware and system informationuseSystemOperations.js- System control operationsuseTemperature.js- Temperature monitoringusePrometheus.js- Metrics collection
useVirtualMedia.js- Virtual media managementuseVideo.js- Video configuration and controluseSerialTerminal.js- Terminal communication
Supports multiple languages via Vue i18n:
- English (en.json)
- Chinese (zh.json)
- Extensible for additional languages
- Chrome 90+ - Full feature support
- Firefox 88+ - Full feature support
- Safari 14+ - Limited WebRTC support
- Edge 90+ - Full feature support
- Startup Time: Consider migrating to Bun for faster development builds
- Memory Usage: Optimized for embedded systems and resource-constrained environments
- Network: Designed for LAN deployment with low latency requirements
- HTTPS Required: All communication encrypted
- Authentication: JWT-based with optional 2FA
- Authorization: Role-based access control (RBAC)
- Input Validation: Server-side validation for all inputs
- CORS: Configured for specific origins only
Copyright (C) 2018-present by blicube [email protected]
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
-
SSL Certificate Errors
- Ensure cert.pem and key.pem are present
- Accept self-signed certificate in browser
-
WebRTC Connection Failures
- Check Janus Gateway server status
- Verify network connectivity and firewall rules
-
API Connection Errors
- Confirm BliKVM server is running
- Check server IP address configuration
-
Performance Issues
- Monitor browser developer console for errors
- Check network latency and bandwidth
- Verify hardware acceleration is enabled
- Fork the repository
- Create a feature branch (
git checkout -b feature-name) - Commit changes (
git commit -m 'Add feature') - Push to branch (
git push origin feature-name) - Create Pull Request
The recommended format is as follows:
<type>: <subject>
type is the change category, with the following options:
featureorfeat: new functionfix: fix bugdocs: Documentation changesstyle: format (changes that do not affect code operation)refactor: Refactoring (that is, code changes that are not new features or bug fixes)test: add testmerge: code mergerevert: roll back to a certain commitbuild: used to update build configurations, development tools, etc.chore: Miscellaneous, other non-functional changes
subject is a short description of the commit, which is recommended to be no more than 50 characters.
- Documentation: BliKVM Official Docs
- Issues: Report bugs via GitHub Issues
- Community: Join the BliKVM community discussions
Note: This client requires a compatible BliKVM server for full functionality. Ensure both client and server versions are compatible.