Next-gen WebRTC ultra-low-latency Android CloudPhone & screen mirroring All-in-One image.
10K+
ScrcpyOverWebRTC (buutuu/scrcpy-over-webrtc) is an out-of-the-box All-in-One (AIO) Docker image designed for managing Android devices and cloud phones via WebRTC directly in your web browser with ultra-low latency (30ms~50ms).
webrtc-signaling): Ultra-high concurrency WebSocket signaling negotiation and device registry.assets): Modern Vue 3 + WebCodecs hardware-accelerated management portal.xterm.js without installing ADB locally.linux/amd64 and linux/arm64.Best performance with zero NAT overhead. Ideal for Linux hosts with direct IP access:
docker run -d \
--pull=always \
--restart=always \
--name cp-aio \
--net=host \
-v ./data:/app/data \
-e PUBLIC_IP=<YOUR_HOST_OR_PUBLIC_IP> \
buutuu/scrcpy-over-webrtc:latest
Open your browser and navigate to: https://<YOUR_HOST_OR_PUBLIC_IP>:8443
(Default login: admin / admin123)
For environments where --net=host is not supported. Limits UDP ports to prevent docker-proxy memory exhaust:
docker run -d \
--pull=always \
--restart=always \
--name cp-aio \
-p 8443:8443 \
-p 3478:3478/tcp \
-p 3478:3478/udp \
-p 55000-55100:55000-55100/udp \
-v ./data:/app/data \
-e PUBLIC_IP=<YOUR_HOST_OR_PUBLIC_IP> \
-e COTURN_MIN_PORT=55000 \
-e COTURN_MAX_PORT=55100 \
buutuu/scrcpy-over-webrtc:latest
Create a docker-compose.yml:
version: "3.8"
services:
cloudphone:
image: buutuu/scrcpy-over-webrtc:latest
container_name: cp-aio
restart: always
network_mode: host
volumes:
- ./data:/app/data
environment:
- PUBLIC_IP=${PUBLIC_IP:-127.0.0.1}
- SIGNALING_PORT=8443
- TURN_USER=cloudphone_user
- TURN_PASSWORD=cloudphone_secure_password
Start the service:
docker compose up -d
| Variable | Default Value | Description |
|---|---|---|
PUBLIC_IP | 127.0.0.1 | Required. Public or LAN IP accessible by clients and Android devices. |
SIGNALING_PORT | 8443 | HTTPS signaling server and Web UI port. |
EXTERNAL_SIGNALING_PORT | ${SIGNALING_PORT} | Exposed signaling port if using asymmetric port mapping (e.g. -p 18443:8443). |
TURN_USER | cloudphone_user | TURN authentication username. |
TURN_PASSWORD | cloudphone_secure_password | TURN authentication password. |
EXTERNAL_TURN_PORT | 3478 | Exposed TURN port if using asymmetric port mapping (e.g. -p 13478:3478). |
COTURN_MIN_PORT | 50000 | Minimum UDP relay port in Bridge mode. |
COTURN_MAX_PORT | 50100 | Maximum UDP relay port in Bridge mode. |
CLOUDPHONE_DEVICE_SECRET | (Empty) | Pre-shared token required for Agent registration (Authorization: Bearer <secret>). |
USE_TLS | true | Enable built-in self-signed HTTPS/TLS. |
After starting the server, connect target Android devices using any of the following methods:
agent-deploy.zip from Web UI and run ./run.sh (Linux/Mac) or run.bat (Windows).穿云投屏 (ScrcpyOverWebRTC) 官方一体化 Docker 镜像(buutuu/scrcpy-over-webrtc)是一款面向企业级与开发者的低延迟 WebRTC 云手机与 Android 远程控制基础设施。无需在客户端电脑安装任何软件,通过任意现代浏览器即可实现 30ms 极速高清投屏与批量群控。
webrtc-signaling):高并发 WebSocket 信令协商路由、设备注册与大盘指标分发。assets):基于 Vue 3 + WebCodecs 硬件显存直通硬解渲染的前端管理面板。xterm.js,无需安装 ADB 驱动直接在网页中执行 Android Shell 调试。linux/amd64 与 linux/arm64(Apple Silicon / 飞腾 / 鲲鹏 / 树莓派)。国内服务器直接拉取 Docker Hub 镜像容易出现超时,建议先在宿主机配置镜像加速站:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.m.daocloud.io"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
适用于有独立公网 IP 或局域网环境的 Linux 宿主机,零 NAT 损耗:
docker run -d \
--pull=always \
--restart=always \
--name cp-aio \
--net=host \
-v ./data:/app/data \
-e PUBLIC_IP=<您的宿主机真实IP或公网IP> \
buutuu/scrcpy-over-webrtc:latest
打开浏览器访问:https://<您的服务器IP>:8443
(初始默认管理员账号:admin,密码:admin123)
若在 Docker Desktop 虚拟机运行或出于安全隔离策略必须使用 -p 映射端口,请收窄 UDP 端口段以防止系统内存 OOM 崩溃:
docker run -d \
--pull=always \
--restart=always \
--name cp-aio \
-p 8443:8443 \
-p 3478:3478/tcp \
-p 3478:3478/udp \
-p 55000-55100:55000-55100/udp \
-v ./data:/app/data \
-e PUBLIC_IP=<您的宿主机真实IP> \
-e COTURN_MIN_PORT=55000 \
-e COTURN_MAX_PORT=55100 \
buutuu/scrcpy-over-webrtc:latest
创建 docker-compose.yml 文件:
version: "3.8"
services:
cloudphone:
image: buutuu/scrcpy-over-webrtc:latest
container_name: cp-aio
restart: always
network_mode: host
volumes:
- ./data:/app/data
environment:
- PUBLIC_IP=${PUBLIC_IP:-127.0.0.1}
- SIGNALING_PORT=8443
- TURN_USER=cloudphone_user
- TURN_PASSWORD=cloudphone_secure_password
启动容器:
docker compose up -d
| 环境变量 | 默认值 | 说明 |
|---|---|---|
PUBLIC_IP | 127.0.0.1 | 必填。客户端浏览器与 Android 设备均可访问的宿主机公网或局域网 IP。 |
SIGNALING_PORT | 8443 | HTTPS 信令服务与 Web 控制前端监听端口。 |
EXTERNAL_SIGNALING_PORT | 同 SIGNALING_PORT | 非对称端口映射时对外公开的信令端口(如 -p 18443:8443)。 |
TURN_USER | cloudphone_user | coturn 服务的鉴权用户名。 |
TURN_PASSWORD | cloudphone_secure_password | coturn 服务的鉴权密码。 |
EXTERNAL_TURN_PORT | 3478 | 非对称端口映射时对外公开的 TURN 端口(如 -p 13478:3478)。 |
COTURN_MIN_PORT | 50000 | Bridge 模式下 coturn 媒体中转 UDP 端口段起始值。 |
COTURN_MAX_PORT | 50100 | Bridge 模式下 coturn 媒体中转 UDP 端口段终止值。 |
CLOUDPHONE_DEVICE_SECRET | (留空) | 设备注册握手预共享 Token(设置后 Agent 注册需携带该密钥)。 |
USE_TLS | true | 是否启用内置自签名 HTTPS/WSS 加密连接。 |
服务启动后,Android 目标设备支持多种灵活方式接入:
agent-deploy.zip,在 PC/Mac 终端运行 ./run.sh 或 run.bat,支持有线与局域网无线 ADB 并发推送。Content type
Image
Digest
sha256:a0532bed8…
Size
94 MB
Last updated
about 8 hours ago
docker pull buutuu/scrcpy-over-webrtc