{"id":50584978,"url":"https://github.com/luisdavim/termux-qemu-docker","last_synced_at":"2026-06-07T07:00:46.012Z","repository":{"id":361652235,"uuid":"1255265720","full_name":"luisdavim/termux-qemu-docker","owner":"luisdavim","description":"A VM manager like Lima/Colima but for Docker in QEMU in Termux in Android! No root needed.","archived":false,"fork":false,"pushed_at":"2026-06-04T23:51:19.000Z","size":6886,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T05:32:11.383Z","etag":null,"topics":["docker","qemu","termux"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luisdavim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-31T16:05:32.000Z","updated_at":"2026-06-04T23:51:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/luisdavim/termux-qemu-docker","commit_stats":null,"previous_names":["luisdavim/termux-docker","luisdavim/termux-qemu-docker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/luisdavim/termux-qemu-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisdavim%2Ftermux-qemu-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisdavim%2Ftermux-qemu-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisdavim%2Ftermux-qemu-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisdavim%2Ftermux-qemu-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luisdavim","download_url":"https://codeload.github.com/luisdavim/termux-qemu-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisdavim%2Ftermux-qemu-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33971107,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","qemu","termux"],"created_at":"2026-06-05T05:30:37.625Z","updated_at":"2026-06-06T06:00:45.276Z","avatar_url":"https://github.com/luisdavim.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# termux-qemu-docker\n\nA lightweight, profile-aware container VM manager for Termux. `termux-qemu-docker` automates the complex setup required to run Docker containers on Android by spawning an isolated Alpine Linux VM via QEMU and exposing the Docker daemon via a file socket to your Termux environment.\nThe idea is to provide a similar UX to [lima](github.com/lima-vm/lima) and [colima](github.com/abiosoft/colima) but for Android Termux.\n\n## 🚀 Features\n\n- **Automated Setup**: One-command dependency installation and configuration.\n- **Automatic port forwarding**: Detect open ports on the Docker VM and automatically setup port-forwarding\n- **True Docker Support**: Run real Docker containers within a lightweight Alpine VM.\n- **Profile Aware**: Create multiple isolated VM instances (e.g., `dev`, `prod`, `test`) with unique network ports.\n- **Cloud-Init Integration**: Automatic root password and SSH configuration on first boot.\n- **Folder Sync**: High-performance host directory sharing via Virtio-9p.\n\n## 📋 Prerequisites\n\nBefore starting, ensure you have a modern Android device with Termux installed. The tool will automatically attempt to install the following via `pkg`:\n- `qemu-system-aarch64-headless` (or `x86_64`)\n- `qemu-utils`\n- `openssh`\n- `libisoburn` (xorrisofs)\n- `dosfstools`\n\n## 🛠️ Installation \u0026 Setup\n\n1. **Build the binary**:\n   ```bash\n   go build -o termux-qemu-docker main.go\n   ```\n\n2. **Run the automated setup**:\n   This installs dependencies and generates a default `config.yaml`.\n   ```bash\n   termux-qemu-docker setup\n   ```\n\n3. **Start the VM**:\n   ```bash\n   termux-qemu-docker start\n   ```\n\n## 🐳 Using Docker\n\nOnce the VM is \"Healthy\", `termux-qemu-docker` will provide an export command. To connect your Termux `docker` CLI to the VM's daemon, run:\n\n```bash\nexport DOCKER_HOST=unix://${HOME}/.termux-qemu-docker/docker-default.sock\n```\n\nYou can now use docker as if it were native:\n```bash\ndocker run --rm hello-world\ndocker ps\n```\n\n## 📂 Folder Sharing\n\nBy default, the tool maps your entire `$HOME` directory to the same path inside the VM using **Virtio-9p**. This enables **Consistent Path Mapping**: a file at `/data/data/com.termux/files/home/project/main.go` in Termux is accessible at the exact same path inside the VM.\n\nThis allows you to edit code in Termux (using Neovim, Micro, etc.) and run it inside a Docker container with near-native performance and no path-mapping confusion.\n\n### Custom Mounts\nYou can configure multiple shared folders in your profile's `config.yaml`:\n\n```yaml\nmounts:\n  - /data/data/com.termux/files/home\n  - /sdcard/Documents\n```\n\nThe tool also automatically attempts to mount the Termux `$PREFIX/tmp` directory if it exists.\n\n## 🔧 Advanced Usage\n\n### Profile Management\nCreate separate environments using the `-p` or `--profile` flag:\n```bash\ntermux-qemu-docker -p web-dev start\ntermux-qemu-docker -p database start\ntermux-qemu-docker list\n```\nEach profile gets its own disk image and unique SSH port.\n\n### Configuration Overrides\nYou can override resources during start, and they will be saved to your profile's config:\n```bash\ntermux-qemu-docker start --cpus 4 --memory 4096 --disk 20\n```\n\n## 🛑 Stopping \u0026 Deleting\n\nTo gracefully shut down the VM:\n```bash\ntermux-qemu-docker stop\n# Or for a specific profile\ntermux-qemu-docker -p web-dev stop\n```\n\nTo completely remove a profile and its disk image:\n```bash\ntermux-qemu-docker delete\n# Or for a specific profile\ntermux-qemu-docker -p web-dev delete\n```\n\n## 🛡️ Security\n- **Isolation**: Containers run inside a dedicated VM, providing a layer of security between Docker and your Android OS.\n- **Encapsulation**: Remote commands use escaped shell arguments to prevent injection.\n- **Lifecycle**: Resource allocation and port listeners are context-bound and shut down automatically with the VM.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluisdavim%2Ftermux-qemu-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluisdavim%2Ftermux-qemu-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluisdavim%2Ftermux-qemu-docker/lists"}