Skip to content

局域网内部署指南

本章节介绍如何在局域网(LAN)环境下部署 ScrcpyOverWebRTC 服务端系统。局域网内部署能够提供极高带宽和极低延迟(端到端交互延迟通常可低至 50ms 以内),且不产生任何公网流量费用,非常适合本地开发调试、真机群控以及内网私有化体验。

我们将从 普通 PC(Mac/Windows/Linux)原生脚本直接运行Docker 容器化部署(带 TURN 中转) 两个维度为您详细讲解。


💻 方式一:普通 PC(Mac / Windows / Linux)原生运行

如果您是用于个人测试、本地调试或不想使用 Docker,可以直接在物理机上运行编译好的二进制服务。

1. 获取服务端代码与准备工作

在启动服务前,请确保您已获取到服务端程序包及编译好的前端静态资源。

🔐 安全证书准备(强烈推荐)

为保障客户端浏览器能正常唤起 WebUSB 和 WebADB 等本地硬件直连接口,页面必须运行在安全的 HTTPS 上下文(或本地 localhost)。如果您是在局域网内通过 IP 地址跨设备访问,请提前在 certs/ 目录下放置自签名或正式申请的 SSL 证书文件:

  • certs/server.crt
  • certs/server.key

2. Linux / macOS 运行步骤

  1. 打开终端,进入发布包根目录。
  2. 直接运行智能启动脚本(它会自动识别您的操作系统与 CPU 架构,并拉起 bin/ 下对应的二进制程序):
    bash
    # 默认以 HTTPS 模式启动(自动加载 certs/ 目录下的证书,监听 8443 端口)
    ./start_server.sh
    
    # 如需以 HTTP 模式运行,可以传入 -tls=false
    ./start_server.sh -tls=false

3. Windows 运行步骤

  1. 打开文件管理器或命令提示符,进入 bin/windows_amd64/ 目录。
  2. 快速运行
    • 双击运行 run.bat,默认以 HTTPS 模式启动信令服务器。
  3. 以 HTTP 模式运行
    • 若需在 Windows 命令行中以 HTTP 方式启动,可以使用命令行并附带 -tls=false 参数启动:
      cmd
      webrtc-signaling.exe -port 8443 -assets ../../assets -tls=false

4. 局域网内访问

启动成功后,终端将输出运行地址。同局域网内的其他设备(包括 PC、手机、平板)通过浏览器访问即可:

  • 访问地址:https://<服务器局域网IP>:8443 (默认 HTTPS 模式) 默认登录账号admin, 密码admin123

🐳 方式二:局域网内 Docker 部署(带 TURN 中转)

1. 为什么局域网部署也需要 TURN 中转?

尽管在同一个局域网下,由于网络拓扑可能比较复杂,我们仍强烈建议使用 TURN 代理中转服务:

  1. 多网段/多 Wi-Fi 隔离:在公司或复杂企业网络下,Android 设备连接的“设备 Wi-Fi”和电脑客户端连接的“办公 Wi-Fi”可能处于不同的网段或 VLAN,相互之间无法直接建立 P2P 直连通道。
  2. Docker 网桥隔离:当您的 Android 容器(如 redroid)运行在宿主机的隔离 Docker Bridge 网桥中,且未配置 host 网络模式时,浏览器无法与容器端口建立直接连接。
  3. 100% 连通率保障:在 WebRTC 打洞(STUN)失败时,连接会自动无缝降级到 TURN 媒体中转通道,确保“黑屏无画面、有画面无法操控”的概率降至 0。

2. 架构构成

本项目的 docker/ 部署包设计为双容器集群,包含:

  • coturn(中转服务):使用 network_mode: host(宿主机网络模式)运行,规避了 Docker 网桥在分发、映射大段 UDP 端口(49152-65535)时的严重性能开销与内存分配失败,支持高并发媒体流转发。
  • signaling(信令服务):基于 cloudphone-all-in-one 镜像,运行信令交互服务器并托管前端静态资源,在连接建立阶段动态向客户端分发中转配置信息。

3. 一键部署步骤

  1. 进入部署包所在路径

    bash
    cd docker/
  2. 运行一键部署脚本

    bash
    ./deploy_cloud.sh
  3. 交互式指引配置

    • 脚本会自动发出请求探测公网 IP,在局域网部署场景下,请直接在终端输入您服务器的当前局域网 IP(例如 192.168.1.100),并回车确认。
    • 脚本会智能检测,如果检测到未生成过配置,将自动随机生成一组高强度安全凭证,用于客户端与 coturn 建立连接。
    • 脚本将自动调用 docker build 编译出集成信令与前端的轻量化 Docker 镜像,并自动执行 docker compose up -d 启动全部容器。
  4. 查看本地连接配置: 启动成功后,同目录下会生成 connection_info.txt 文本文件。您可以直接查看:

    bash
    cat connection_info.txt

    它详细记录了您的后台管理地址,以及后续 Android Agent 启动时所需要配置的 -ice-servers 中转参数。


4. 关键配置与网络端口放行

为了确保中转服务在局域网内无障碍运行,请确保部署服务的宿主机放行以下物理端口(在局域网防火墙或安全组中配置):

端口类型传输协议功能说明
8443TCP信令服务器端口 & 网页管理后台服务端口
3478TCP / UDPcoturn 默认 STUN/TURN 连接探测监听端口
49152-65535UDPWebRTC 媒体流转发所使用的大段高位动态 UDP 端口

CAUTION

由于 coturn 服务以 host 网络模式运行,请确保宿主机上没有其他程序(如其他 stun 服务或 turn 服务)占用 3478 端口,否则会导致中转服务拉起失败。

基于开源协议分发。本文档持续同步 AOSP 与 scrcpy 优化规范。