Added support for static IPs in NAT mode.
Now, the IP wonβt reset after a container reboot or fresh boot :)
This is very useful for accessing container services directly from the host.
Now, the IP wonβt reset after a container reboot or fresh boot :)
This is very useful for accessing container services directly from the host.
π₯5πΏ3π1π©1
Droidspaces-universal-v5.6.1-2026-03-16.apk
14 MB
Here's a test APK:
What's added:
- Static IPv4 support in NAT mode - fully configurable via the container config menu
- Ability to resize the sparse image
- Ability to migrate from a directory-based container to a rootfs.img-based container
- Added a help card to the home page
If you find any issues, please let us know in the discussion group.
What's added:
- Static IPv4 support in NAT mode - fully configurable via the container config menu
- Ability to resize the sparse image
- Ability to migrate from a directory-based container to a rootfs.img-based container
- Added a help card to the home page
If you find any issues, please let us know in the discussion group.
β€2πΏ2π©1
v5.7.0 has been released..!
https://github.com/ravindu644/Droidspaces-OSS/releases/tag/v5.7.0
What's changed?
@Droidspaces
https://github.com/ravindu644/Droidspaces-OSS/releases/tag/v5.7.0
What's changed?
- added support for built-in terminal emulator support
- add support for configuring and managing static NAT IP addresses for containers
- renamed the --enable-ipv6 toggle to --disable-ipv6
- app: Implement sparse image management for containers, enabling rootfs migration and image resizing
- app: added a help card for new users in the Home screen
- Implement a transparent DNS proxy for NAT containers
- add new /proc and /sys/vm masks to prevent Android GPU/display and Vulkan corruption
- default container user to 'root' and prioritize su -l for shell and command execution to ensure proper login context
- fix: clean up cgroup subtrees on container stop and enter/run exit - fixes cgroups leaks
- adjust /tmp mounting condition to include Android devices without Termux-X11
- implement log file rotation and rate-limit DNS proxy upstream timeout warnings
- fix: prevent memory leak of unknown config lines during container shutdown
- fix: preserve environment variables during configuration reload in internal reboots
@Droidspaces
π©1
Droidspaces
Implement a transparent DNS proxy for NAT containers
To fix DNS-related issues in existing systemd-based containers (containers already installed using the Droidspaces app), please run this command as root inside the container's shell:
cat > "/etc/systemd/resolved.conf.d/dns.conf" << 'EOF'
[Resolve]
DNSStubListener=no
EOF
β€1π©1
If Droidspaces doesn't work for you, it falls into two categories.
01. Your kernel version
- If you have a legacy kernel, probably 4.19 or older, you fall into this category.
- As I clearly stated in multiple places in my README, you cannot run modern systemd like v258 on these kernels. They fail to boot, every systemctl command hangs, and everything will be broken. Even LXC cannot boot them. There is no fix for this.
If you wonder why, modern systemd requires modern syscalls, which older kernels often lack. So, if you run foreground mode with the -f flag, you will see thousands of "function not implemented" errors.
What to try on these kernels?
You can try anything below systemd v258, or any distro with a different init system like OpenRC, runit, s6, etc.
My picks: Ubuntu 20.04, 22.04, 24.04, 25.04, 25.10; Alpine 3.23; Gentoo OpenRC flavor.
Notes: Especially in Kernel 4.14.113, which the Galaxy S10 uses by default, you cannot boot any systemd-based distros without enabling the "Deadlock Shield". This is a kernel bug that causes the entire systemd and host to become unresponsive when booting a container.
Symptoms: Systemd hangs, even in older distros. The entire host becomes unresponsive. You cannot reboot or power off your device.
Solution: Either enable Deadlock Shield or use an upstreamed kernel like 4.14.356.
02. Your rooting solution
- As I clearly stated in the official documentation, Droidspaces on Magisk or Apatch is highly unstable. You will face weird issues with these solutions.
More info:
https://github.com/ravindu644/Droidspaces-OSS/issues/11#issuecomment-4036688816
Droidspaces requires a custom kernel anyway. Why can't anyone switch to KernelSU when compiling their kernels?
01. Your kernel version
- If you have a legacy kernel, probably 4.19 or older, you fall into this category.
- As I clearly stated in multiple places in my README, you cannot run modern systemd like v258 on these kernels. They fail to boot, every systemctl command hangs, and everything will be broken. Even LXC cannot boot them. There is no fix for this.
If you wonder why, modern systemd requires modern syscalls, which older kernels often lack. So, if you run foreground mode with the -f flag, you will see thousands of "function not implemented" errors.
What to try on these kernels?
You can try anything below systemd v258, or any distro with a different init system like OpenRC, runit, s6, etc.
My picks: Ubuntu 20.04, 22.04, 24.04, 25.04, 25.10; Alpine 3.23; Gentoo OpenRC flavor.
Notes: Especially in Kernel 4.14.113, which the Galaxy S10 uses by default, you cannot boot any systemd-based distros without enabling the "Deadlock Shield". This is a kernel bug that causes the entire systemd and host to become unresponsive when booting a container.
Symptoms: Systemd hangs, even in older distros. The entire host becomes unresponsive. You cannot reboot or power off your device.
Solution: Either enable Deadlock Shield or use an upstreamed kernel like 4.14.356.
02. Your rooting solution
- As I clearly stated in the official documentation, Droidspaces on Magisk or Apatch is highly unstable. You will face weird issues with these solutions.
More info:
https://github.com/ravindu644/Droidspaces-OSS/issues/11#issuecomment-4036688816
Droidspaces requires a custom kernel anyway. Why can't anyone switch to KernelSU when compiling their kernels?
β€1π₯1π©1
--hw-access demonstration.I'm executing
adb/fastboot/heimdall commands remotely via Tailscale+SSH. My other phone is connected to the S10 using a Type-C to Type-C cable..!That means you can use Droidspaces to do stuff even remotely with full hardware access..!
πΏ3π₯2π©1
Droidspaces-universal-test-2026-03-18.apk
14 MB
Test APK from the latest CI.
Fixes strange DHCP issues on Void Linux and Devuan Linux, resolves runit boot failures, and other related problems.
Please test it and let us know if you cannot access the Internet in the container when using NAT mode.
Fixes strange DHCP issues on Void Linux and Devuan Linux, resolves runit boot failures, and other related problems.
Please test it and let us know if you cannot access the Internet in the container when using NAT mode.
β€3π©1
Droidspaces v5.7.1 has been released..!
https://github.com/ravindu644/Droidspaces-OSS/releases/tag/v5.7.1
What's changed?
@Droidspaces
https://github.com/ravindu644/Droidspaces-OSS/releases/tag/v5.7.1
What's changed?
- Fixed issues where runit caused crashes on Android because it modified kernel sysctl parameters, leading to system crashes. Resolved by selectively masking the entire /proc/sys.
- Fixed issues where Gentoo + OpenRC could not obtain an IP from the DHCP server.
- Fixed issues where Devuan received an incorrect IP from the DHCP server.
- Fixed shutdown issues in Void Linux.
- Repaired sysfs symlinks for OpenRC/Gentoo network detection.
- Rewrote firmware path management for Android.
@Droidspaces
πΏ3π©1
Set up UFW and Fail2Ban properly, and it actually works!
But had to enable some kernel configs to pull this off :(
Everything behaves like a real Linux server...
But had to enable some kernel configs to pull this off :(
Everything behaves like a real Linux server...
π₯2π©1
Fixed 2 issues with the hardware access feature:
1. On Android, block devices like USB storage and SD cards appear under /dev/block, not /dev, unlike standard Linux. This meant attached storage never showed up in the container's devtmpfs, even in hw access mode. Fixed by bind mounting the host's /dev/block to the container's /dev/block.
2. On some devices, GPU nodes were missing in freshly mounted devtmpfs inside containers. Previously, users had to manually bind mount GPU nodes. Now, if a GPU node exists on the host but is missing in the container, we create it in the container using mknod(), no bind mount needed :)
This also fixes binder, hwbinder, and vndbinder missing issues, and resolves the GitHub issue:
https://github.com/ravindu644/Droidspaces-OSS/issues/19
1. On Android, block devices like USB storage and SD cards appear under /dev/block, not /dev, unlike standard Linux. This meant attached storage never showed up in the container's devtmpfs, even in hw access mode. Fixed by bind mounting the host's /dev/block to the container's /dev/block.
2. On some devices, GPU nodes were missing in freshly mounted devtmpfs inside containers. Previously, users had to manually bind mount GPU nodes. Now, if a GPU node exists on the host but is missing in the container, we create it in the container using mknod(), no bind mount needed :)
This also fixes binder, hwbinder, and vndbinder missing issues, and resolves the GitHub issue:
https://github.com/ravindu644/Droidspaces-OSS/issues/19
β€7π₯°1π©1
This is also one of my side projects, came way before Droidspaces.
To use
It even supports dynamic namespace isolation, hardware access, rootfs.img support, post-exec scripts as a replacement for init, running at boot even the device is locked and encrypted, etc.
Even though this is more primitive than the Droidspaces project, it still provides basic Linux on Android.
v4.4 was released with fixes related to BusyBox. From now on, we specifically use our custom BusyBox to perform certain shell operations.
https://github.com/ravindu644/Ubuntu-Chroot/releases/tag/v4.4
To use
ubuntu-chroot, you only need root access. No kernel configuration needed. It just works.It even supports dynamic namespace isolation, hardware access, rootfs.img support, post-exec scripts as a replacement for init, running at boot even the device is locked and encrypted, etc.
Even though this is more primitive than the Droidspaces project, it still provides basic Linux on Android.
v4.4 was released with fixes related to BusyBox. From now on, we specifically use our custom BusyBox to perform certain shell operations.
https://github.com/ravindu644/Ubuntu-Chroot/releases/tag/v4.4
π₯°1π©1
Added an official guide on how to compile a kernel with Droidspaces support for any GKI device:
https://github.com/ravindu644/Droidspaces-OSS/blob/main/Documentation/Kernel-Configuration.md
You can now compile the kernel just like a legacy non-GKI kernel and flash only the boot.img or compiled kernel Image, without worrying about ABI or LKM compatibility π₯³
@Droidspaces
https://github.com/ravindu644/Droidspaces-OSS/blob/main/Documentation/Kernel-Configuration.md
You can now compile the kernel just like a legacy non-GKI kernel and flash only the boot.img or compiled kernel Image, without worrying about ABI or LKM compatibility π₯³
@Droidspaces
π₯5β€4π1π©1πΏ1