Ws-scrcpy
ws-scrcpy is a web-based client for Genymobile/scrcpy, allowing you to mirror and control Android (and experimental iOS) devices directly through a web browser using WebSockets. Core Features
Browser-Based Control: Eliminates the need for a desktop application by using a browser to stream video and send input events (mouse, keyboard, touch).
Multiple Players: Supports several decoding methods including Mse Player (HTML5 Media Source Extensions), Broadway.js (software decoding via WebAssembly), and WebCodecs.
Cross-Device Support: Primarily built for Android (5.0+), but also includes components like ws-qvh for experimental iOS screen streaming and control.
Server Architecture: Operates as a Node.js server that interacts with the adb executable on the host machine. Technical Requirements
To run a self-hosted instance, your environment typically needs:
Server Side: Node.js (v10+), node-gyp, and the adb executable added to your system's PATH. ws-scrcpy
Client Side: A modern web browser supporting WebSockets, WebWorkers, and WebAssembly.
Device Side: Android 5.0+ with USB Debugging enabled in Developer Options. Deployment & Community Status
While the original project by NetrisTV has seen reduced activity, the community has maintained various forks and deployment options: Updated ws-scrcpy with docker, and few updated for 2025
This is a comprehensive, deep-dive guide into ws-scrcpy.
While the original scrcpy is the industry standard for high-performance mirroring, it is a command-line tool. ws-scrcpy (Websocket scrcpy) takes that core technology and wraps it in a web interface, allowing you to control your Android device from a browser.
This guide covers architecture, installation (Docker vs. Native), advanced configuration, security hardening, and troubleshooting. ws-scrcpy is a web-based client for Genymobile/scrcpy ,
6. Keyboard Mapping
Full keyboard pass-through (including media keys, Ctrl, Alt, and special characters) works seamlessly.
1. Remote Device Lab for QA Teams
Set up a Raspberry Pi with a USB hub and 4 Android phones. Run ws-scrcpy on the Pi, expose it via Nginx reverse proxy with basic authentication. Your QA team can access the lab from any browser.
4. Kiosk Management
Manage a fleet of Android-based kiosks or digital signage devices from a central web dashboard.
Option B: Tailscale / ZeroTier
Run ws-scrcpy on a VPN network. Only devices on your private VPN can access it.
Method B: Native (Node.js)
Use this method if you want to modify the source code or if Docker isn't an option.
-
Clone the Repository:
git clone https://github.com/NetrisTV/ws-scrcpy.git cd ws-scrcpy -
Install Dependencies: This project relies heavily on build tools for video decoding.
npm install -
Configuration (First Run): The server configuration defaults are usually fine, but you can specify environment variables (see Section 6).
-
Build the Frontend:
npm run build -
Run the Server:
npm startBy default, this listens on port 8000.
Option 1: Run with Docker (Recommended)
docker run -it --rm \
-p 8000:8000 \
-v /dev/bus/usb:/dev/bus/usb \
--privileged \
ghcr.io/netristv/ws-scrcpy:latest
Then open http://localhost:8000 in your browser.