selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
redroid logo

Self-host redroid

GPU-accelerated Android-in-cloud container

ReleaseOpen Source
Updated5 months ago
LanguageShell
Setup difficultyModerate
Stars
7 050
Port
5555 (ADB remote shell and file transfer)
Docker
redroid/redroid
Install with Docker
Android 11 home screen running in a redroid container

What is redroid?

redroid (Remote-Android) is a GPU-accelerated Android-in-Cloud platform that lets you boot multiple Android instances inside Linux containers using Docker, podman, or Kubernetes. It supports Android versions 8.1 through 16 on both arm64 and amd64 architectures. Users connect via ADB on port 5555 and view the screen with scrcpy. Key capabilities include hardware GPU rendering, software rendering fallback, native ARM-to-x86 bridge translation, optional Google Mobile Services, overlayfs-based shared data partitions, and configurable display resolution, DPI, and frame rate. Self-hosting requires a Linux host with the binder_linux and ashmem_linux kernel modules loaded. The main codebase uses the Apache-2.0 licence; bundled kernel modules are licensed under GPL-2.0-only. WebRTC streaming is planned but not yet implemented.

Should you self-host redroid?

redroid scores 57/100 on selfhost.directory (how scoring works) and ranks #4 of 5 in Emulation. It has 7 050 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is written mostly in Shell.

Its closest alternative on selfhost.directory is RomM (81/100, 14 086 stars). It scores higher overall, so compare the two before you pick. See redroid vs RomM side by side.

Features

  • ADB remote access
  • Android 8.1 through 16
  • Customizable display resolution and DPI
  • GPU-accelerated rendering
  • Native ARM bridge on x86
  • Optional GMS support
  • Overlayfs shared data partition
  • Software rendering fallback

redroid README

How to install redroid

Install redroid with Docker

Linux host with binder_linux and ashmem_linux kernel modules

install docker https://docs.docker.com/engine/install/#server

install required kernel modules

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

running redroid

docker run -itd --rm --privileged
--pull always
-v ~/data:/data
-p 5555:5555
redroid/redroid:12.0.0_64only-latest

Explanation:
--pull always -- use latest image
-v ~/data:/data -- mount data partition
-p 5555:5555 -- expose adb port

Quick start on Ubuntu 20.04; see deploy section for other distros

How to configure redroid

  • androidboot.redroid_dpi320Display DPI

    Display DPI

  • androidboot.redroid_fps30Display FPS (30 with GPU enabled, 15 without)

    Display FPS (30 with GPU enabled, 15 without)

  • androidboot.redroid_gpu_modeguestGPU mode: guest=software rendering, host=GPU accelerated, auto=detect

    GPU mode: guest=software rendering, host=GPU accelerated, auto=detect

    values: auto, host, guest

  • androidboot.redroid_gpu_nodeGPU node; auto-detect by default

    GPU node; auto-detect by default

  • androidboot.redroid_height1280Display height

    Display height

  • androidboot.redroid_net_ndns0Number of DNS servers; 8.8.8.8 used if none specified

    Number of DNS servers; 8.8.8.8 used if none specified

  • androidboot.redroid_net_proxy_exclude_listComma-separated proxy exclusion list

    Comma-separated proxy exclusion list

  • androidboot.redroid_net_proxy_hostProxy host

    Proxy host

  • androidboot.redroid_net_proxy_pacPAC file URL for proxy

    PAC file URL for proxy

  • androidboot.redroid_net_proxy_port3128Proxy port

    Proxy port

  • androidboot.redroid_net_proxy_typeProxy type

    Proxy type

    values: static, pac, none, unassigned

  • androidboot.redroid_width720Display width

    Display width

  • androidboot.use_memfdfalseUse memfd to replace deprecated ashmem; planned to enable by default

    Use memfd to replace deprecated ashmem; planned to enable by default

    values: true, false

  • androidboot.use_redroid_overlayfs0Use overlayfs to share the data partition (/data-base shared, /data-diff private)

    Use overlayfs to share the data partition (/data-base shared, /data-diff private)

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…