跳过正文
  1. 所有文章/

打造自己的云手机

Aaron
作者
Aaron
I only know that I know nothing.
目录

前言
#

当前市面上已经有很多云手机厂商,虽然比较稳定,但把数据全都放在别人手里感觉不是很安全。谁知道每次进行操作时厂商会不会进行录屏等行为呢。

Github1 上有一个开源项目 Redroid2,可以使用 Docker 运行安卓容器。我已经使用了很长时间,运行很稳定。

准备环境
#

需要一台服务器,AMD64 和 ARM64 架构都可以。

支持的系统如下,点击即可查看各个发行版的部署操作:

如果你是新手,推荐使用 Ubuntu、Arch Linux 或者 NixOS。其中 Ubuntu 需要加载内核模块,Arch Linux 和 NixOS 直接更换 zen 内核即可。

操作部分
#

这里只介绍上面所说的三个操作系统,其他的系统可自行阅读官方文档。

Ubuntu
#

建议不要使用最新的 Ubuntu,可能会有各种小问题。我测试 20.04 和 22.04 版本没有问题,执行下面命令加载内核模块:

sudo apt install linux-modules-extra-`uname -r`
sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
sudo modprobe ashmem_linux

使用一键脚本安装 Docker3

curl -sSL https://get.docker.com/ | sh

或者使用包管理器安装 Docker 以及 Docker Compose:

sudo apt install docker docker-compose

Arch Linux
#

安装 linux-zen 内核:

# 更新系统
sudo pacman -Syu
# 安装 linux-zen 内核
sudo pacman -S linux-zen linux-zen-headers
# 更新 GRUB 引导配置
sudo grub-mkconfig -o /boot/grub/grub.cfg
# 重启系统
sudo reboot
# 验证内核版本,可以看到内核带有 zen 字样
uname -r

使用包管理器安装 Docker 以及 Docker Compose:

sudo pacman -S docker docker-compose

NixOS
#

安装 linux-zen 内核:

# 编辑 /etc/nixos/configuration.nix 增加一行
boot.kernelPackages = pkgs.linuxPackages_zen
# rebuild 更新配置
sudo nixos-rebuild switch
# 重启系统
sudo reboot
# 验证内核版本,可以看到内核带有 zen 字样
uname -r

安装 Docker 以及 Docker Compose:

# 编辑 /etc/nixos/configuration.nix 添加一行
virtualisation.docker.enable = true;
# docker-compose
environment.systemPackages = with pkgs; [ docker-compose ];
# rebuild 更新配置
sudo nixos-rebuild switch

运行 Redroid 容器
#

直接启动
#

sudo docker run -itd --rm --privileged \
    --pull always \
    -v ~/data:/data \
    -p 5555:5555 \
    redroid/redroid:11.0.0-latest

使用 Docker Compose 启动
#

# docker-compose.yaml
version: "3"
services:
  redroid:
    stdin_open: true
    tty: true
    privileged: true
    pull_policy: always
    volumes:
      - ~/data:/data
    ports:
      - 5555:5555
    image: redroid/redroid:11.0.0-latest
# 启动
sudo docker-compose up -d

其他说明
#

连接设备
#

可以通过安装 adb4 和 scrcpy5 使用鼠标来操作安卓。

macOS 和 Linux 环境直接使用包管理器安装 android-platform-toolsscrcpy 即可:

# macOS
brew install --cask android-platform-tools scrcpy
# Debian & Ubuntu
sudo apt install android-platform-tools scrcpy
# Arch Linux
sudo pacman -S android-platform-tools scrcpy
# NixOS
environment.systemPackages = with pkgs; [ android-tools scrcpy ];

如果你想使用网页进行操作,可以尝试 ws-scrcpy 这个项目。

如果不想配置环境,可以使用我打包的镜像 aaronyes/ws-scrcpy

直接运行:

sudo docker run --name ws-scrcpy -d -p 8000:8000 aaronyes/ws-scrcpy

或者使用 Docker Compose 启动:

version: "3"
services:
  ws-scrcpy:
    container_name: ws-scrcpy
    ports:
      - 8000:8000
    image: aaronyes/ws-scrcpy

启动后执行 adb 命令连接安卓:

sudo docker exec ws-scrcpy adb connect ip:5555

如果使用 Docker Compose,可以把两个服务放在一起:

version: "3"
services:
  redroid:
    container_name: redroid
    stdin_open: true
    tty: true
    privileged: true
    pull_policy: always
    volumes:
      - ~/data:/data
    ports:
      - 5555:5555
    image: redroid/redroid:11.0.0-latest

  ws-scrcpy:
    container_name: ws-scrcpy
    ports:
      - 8000:8000
    image: aaronyes/ws-scrcpy

这时可以直接使用容器名连接:

docker exec ws-scrcpy adb connect redroid:5555

没有应用商店怎么安装软件
#

  1. 可以使用 adb 安装,在电脑上下载好 apk 安装包,然后执行 adb install <apk路径>

  2. 推荐安装一个 Via 浏览器,体积很小,轻量无广告,后续可以通过浏览器下载安装其他应用

安装 Magisk
#

可以参考下面这个地址:

GMS 支持
#

参考下面这个地址:

参考文献
#