very cool. termux has to be peak for unbridled nerddom, the new linux terminal in android 16 is really a pale shadow of it. you don't get access to anything non-virtual, not even the gpu (atleast, i couldn't get it to work.)
theres so much cool hardware on modern smartphones, with quite solid drivers by virtue of the (relatively stringent) android quality requirements, and its all locked away. video encoders, decoders, 3d accelerators, etc, but none of it is really accessible in a power-user kind of way.
some more thoughts...
the android development kit really is very heavy. compared to `gcc -o main main.cpp && ./main`, it is several orders of magnitude away.
the jetpack stuff and whatnot - the big android app shops probably do actually appreciate that stuff. but i wish the dev env 'scaled to zero' as they say, but in the sense of cognitive overload.
could it be time to move away from java, and shift towards everything being a native binary? we have the tools now to make it secure, and its not like phones get faster 'for free' anymore. it would also vastly simplify the developer experience.
It is possible to write native code for Android using Native Development Kit. Typical NDK use would be to develop a library that is then called into by java code. But one can make whole app with it, 100% java-free:
It is never Java free outside games, because all relevant Android APIs are hidden behind JNI calls, implemented in Java.
Also NDK is designed to produce shared libraries that are then loaded into the Java host process for the application, if not manually written, one gets the generic activity (NativeActivity or GameActivity) written by the Android team, expecting specific symbols on the shared library mapping to the native method declarations.
I know sooo many good golang applications on linux that I wish more people of android could access it and in an even nice way via something like f-droid so I am definitely contemplating what might be the best way for something like this...
For rust applications, I think that tauri might make the most sense, but I am just curious as to what you guys think is the best way for a beginner to create a golang/rust android application without worrying *too much*
You don't have to use Android. I've been using various GNU/Linux phones for the last 17 years, so being able to do `gcc -o main main.cpp && ./main` on a phone is just natural to me. Back in 2008, as a teenager, I could choose to spent my first earned money to get me either one of the first GNU/Linux phones on the market or the first Android phone, and I feel that as the time goes it only validates my decision.
What is your feedback in regards to battery? Android have been exhausted in development to optimize battery usage but I'm reading linux phones don't really care that much so you end up with a dead phone in less of a day.
Has a power user, what has your experience been on that topic?
I'd switch my phone to linux on a heartbeat because android apps seem compatible enough nowadays to run there too but battery is always the pressing limitation.
I'm using a Librem 5 and its battery life is good enough for me - it lasts pretty much exactly what's needed for me to get through a typical day, so I often get home with the battery almost but not entirely flat. When I know that I'm going to be using it more intensively or need it to last longer, I'll usually just put a spare battery into my backpack, but I rarely actually need to use it when these days you can just charge up in a train or tram.
That's not a universal property of these devices though - N900 that I used previously could easily last a few days.
Having a spare battery or being able to change battery seems like a fever dream for people on new android devices.
I am seriously interested in linux phones... like I am interested in either getting a grapheneos phone or somehow looking through my old garage of parents phones to see if any phone can be linux'd
I don't want to spend money right away but I am also a teenager, but the thing that's kinda stopping me from spending is that terminal can already be done through things like termux and the question I am asking myself is: is it good enough I have written back to back comments about it on why I think running android on linux using waydroid seems more performant than vice versa but I am curious.
Are there any recommendations that you have for me? I want to get linux on my phone but I am pretty sure that there are no second hand linux phones and I think it might cost me a lot of money (well for my country) anyway and I feel like the issue for me not being able to tinker is monetary of sorts.
> terminal can already be done through things like termux
For me, the terminal itself isn't really the value proposition, it's just one of the consequences. What actually matters it that I get to be the real administrator of that device. I can grab any package - whether an application, library, shell or system daemon - and hack on it and patch it however I want, the exact same way I can do it on my laptop's OS. I can replace entire components. I can write scripts that interact with any part of the OS or the hardware. Back when I was a teenager myself, I used to code my own replacement for messaging UI (among other things) in Python, on the phone itself - it really kickstarted my programming skills. These things are just not possible with Android, where patching stuff up is a PITA even when you do it on a PC. Android development follows a completely different philosophy which I don't really subscribe to.
> I feel like the issue for me not being able to tinker is monetary of sorts
Yeah, unfortunately the best option is quite pricey. Viable alternatives may include PinePhone and OnePlus 6, though note that the former is noticeably lower-end and the latter isn't as well supported. However, either of them may end up being enough if you're motivated to tinker.
> seems like a fever dream
What if I told you that when you have a USB power source around for a moment, you can even hot-swap the battery without turning the phone off? :D
The PinePhone is a cheaper phone supported by mobile Linux distros like postmarketOS, maybe look at that. The CPU is not as fast as the Librem though. postmarketOS has some support for a range of devices though, maybe one of them is cheaper used than the PinePhone for you.
The PinePhone also has the advantage that the proprietary Linux distro running on the ARM processor within the modem can be replaced with a fully open source distro. I think the Hexagon processor in the modem can't be replaced yet.
I've been looking at Linux phones for a while, and now the latest 'sideloading' lockdown from Google has pushed me to seriously consider getting off Android. What phones do you use or recommend for someone who has a little Linux experience?
Maybe start with GrapheneOS on a Google Pixel phone, its a privacy/security focused Android fork.
Otherwise for full Linux, take a look at shipping-with-Android devices that are semi-supported by postmarketOS, Mobian etc. Or go with vendors focused on non-Android Linux like Pine64 PinePhone, Purism Librem, Furilabs, Liberux and maybe some I forgot. The Debian Mobile wiki page has a whole lot of other links but I stopped maintaining it.
Smartphone Linux is a total mess. Even postmarketOS does not have a single fully supported and maintained device it can point to and say "buy this, you can run fully featured Linux on it". Very sad. The best option seems to be running Termux on GrapheneOS on the latest Pixels.
Attestation stuff means you probably can't run them even on non-Google versions of Android, so probably get a cheapo second phone for the banking apps.
I have barely any reason to use a banking app when almost everything on my account can be done via Web, but when I do want to use BLIK I run the app in Waydroid.
The problem is most bank here for you to log in the Web, you need to install the bank mobile app so you can fetch the security key required to authenticate.
> the android development kit really is very heavy. compared to `gcc -o main main.cpp && ./main`, it is several orders of magnitude away.
> the jetpack stuff and whatnot - the big android app shops probably do actually appreciate that stuff. but i wish the dev env 'scaled to zero' as they say, but in the sense of cognitive overload.
I tried to build a small binary that listens for events and launches/wakes an app to do some automation. But apparently there's no way to send Intents or Broadcasts from native code? So I need to boot a JVM in the binary if I want it to communicate with anything else on the system!
Of course, you can always communicate via stdio, but that's useless because everything in Android speaks Intents/Broadcasts. Native code can also do raw Binder calls, but nothing on the system speaks raw Binder.
>But apparently there's no way to send Intents or Broadcasts from native code? So I need to boot a JVM in the binary if I want it to communicate with anything else on the system!
There is "am" i think which can be invoked to do this.
However, Termux API exists, and is a nice package for calling other services. They have the scripts interface, which calls the actual app over a socket. Kinda inefficient, but at least the work is done.
Yes, but the 'am' command is just a CLI Java program. At that point, it would be more efficient to just boot a JVM in the binary to avoid the JVM startup cost every time a Intent/Broadcast needs to be sent.
I believe the Termux API relies on a Java/app process that runs in the background to do stuff in response to API calls. Though I guess you get it for free if you already have the API running for other reasons.
"could it be time to move away from java, and shift towards everything being a native binary?"
they literally do just that for fuchsia, but idk if google can pull this off tbh
the tech DEBT is huge and massive undertaking that even google can be nervous
I mean this is their own fault too tbh, imagine windows that try to release every new release every year and try hard to add feature on top of that and it break down all API underneath
I've been playing with Termux, both on Chromebook (Eve), and my Samsung Galaxy S22 - pretty cool, though hit some issue with recent `bazel` - as newer versions try to access a `/dev` endpoint that's not available.
Quick fix, was to add `~/.bazelrc` this:
common --experimental_collect_system_network_usage=false
and then it works! Though sometimes I need to first `termux-chroot` and then it it handles cases, where some tooling expects `/usr/bin` and not `/mnt/data/com.termux/files/usr/bin`
On measurements it's a bit 2x, 3x slower than Crostini (Termina) on Chromebook, but being available (so far) on all my Android devices is just awesome!
And there exist X11 too!
I wish there would be backdoor for F-Droid in the future, though maybe not as it seems :(
hm you can try out userland https://userland.tech/download/ which runs it inside proot and you can use something like alpine or debian and they can actually make the vnc/installing gui setup actually pretty easy.
Highly recommended.
I coded some python with micro in alpine in userland on my phone.
I really really enjoyed it, like more than my pc for that day. I am proud of it.
EDIT: Thanks @yjftsjthsd-h and @detaro for your suggestions! I tried Telnet via tmux - it worked. Then I tried telnet directly, and it suddenly worked too. Turns out Arduino’s Telnet implementation is single-user only, and my dev machine’s reconnect loop kept the connection open; the working login just fooled me.
I don't have one set up to test, but dumb suggestion: What if you run it inside tmux on termux? Just thinking that tmux is essentially a second terminal emulator that might do better.
Note also you can use webrepl, which exposes MicroPython's REPL as a web page. It's not a real replacement for termux, but it is still quite useful- I often deploy ESP32s running Micropython around my workspace but they aren't connected to any serial terminal.
I heard something that Termux has a lot of Chinese influence, anybody aware of this? I love Termux but that kinda added a bad taste. But I don't have anything to back it up but quotes from trusted people
The commit history doesn't seem to reflect this [1], and the contributors seems to have just a handful of commits outside of two main committers [2]. Seems to be a tonne of trivial commits merged from some code hackathon [3] [4].
You could as well use any old Raspberry as go-between. If you use USB-tethering, the Raspberry will appear locally around 192.168.43.XX and you can termux-ssh into it and use mpremote therefrom.
I'm trying to repurpose my Pixel 6a that I no longer use, as a Home Assistant Core main driver. I was hoping the author will talk a little bit about that.
I still haven't had the luck to have a fully working Home Assistant running inside (rooted) Termux.
Anyone succeeded to start `hass` and have it running without throwing errors?
If you have root, it is fairly trivial to run full-on arm64 Linux distro in chroot. That should fix most problems with linux software running in android.
There is also Linux Deploy[1] that automates the process of setting up chroot, ssh and even gui desktop (through framebuffer).
Hey maybe I didn't get ya but by home assistant core main driver, do you mean the linux application of this as in cli / terminal right?
what are your thoughts on something like https://userland.tech/download/ which can just straight up boot up into any distro that you might need (you can use something like alpine/debian/archlinux)
they are open source too btw
and also I tried and if you have a server running, then there are ways to make it so that those web servers can be accessed from outside out of the box as well so there is nothing to worry about that either.
It doesn't require root either, I run it on an unrooted phone!
very cool. termux has to be peak for unbridled nerddom, the new linux terminal in android 16 is really a pale shadow of it. you don't get access to anything non-virtual, not even the gpu (atleast, i couldn't get it to work.)
theres so much cool hardware on modern smartphones, with quite solid drivers by virtue of the (relatively stringent) android quality requirements, and its all locked away. video encoders, decoders, 3d accelerators, etc, but none of it is really accessible in a power-user kind of way.
some more thoughts...
the android development kit really is very heavy. compared to `gcc -o main main.cpp && ./main`, it is several orders of magnitude away.
the jetpack stuff and whatnot - the big android app shops probably do actually appreciate that stuff. but i wish the dev env 'scaled to zero' as they say, but in the sense of cognitive overload.
could it be time to move away from java, and shift towards everything being a native binary? we have the tools now to make it secure, and its not like phones get faster 'for free' anymore. it would also vastly simplify the developer experience.
It is possible to write native code for Android using Native Development Kit. Typical NDK use would be to develop a library that is then called into by java code. But one can make whole app with it, 100% java-free:
https://github.com/cnlohr/rawdrawandroid
It is never Java free outside games, because all relevant Android APIs are hidden behind JNI calls, implemented in Java.
Also NDK is designed to produce shared libraries that are then loaded into the Java host process for the application, if not manually written, one gets the generic activity (NativeActivity or GameActivity) written by the Android team, expecting specific symbols on the shared library mapping to the native method declarations.
https://developer.android.com/reference/android/app/NativeAc...
https://developer.android.com/games/agdk/game-activity
So while someone's own APK might be Java free, there will be Java on the process execution runtime.
Yes I am also interested in something like this 100% java-free but instead of C I'd prefer golang
I have been thinking more and more about creating golang applications for android simply because of how much I admire f-droid.
There are apps that have done this through 2 approaches
https://github.com/xlab/android-go?tab=readme-ov-file (Either something like this) Or https://github.com/LeastAuthority/destiny which is a dart app but uses golang's backend using https://github.com/LeastAuthority/dart_wormhole_william TLDR: they create dart bindings to go code and run it on android...
I know sooo many good golang applications on linux that I wish more people of android could access it and in an even nice way via something like f-droid so I am definitely contemplating what might be the best way for something like this...
For rust applications, I think that tauri might make the most sense, but I am just curious as to what you guys think is the best way for a beginner to create a golang/rust android application without worrying *too much*
You don't have to use Android. I've been using various GNU/Linux phones for the last 17 years, so being able to do `gcc -o main main.cpp && ./main` on a phone is just natural to me. Back in 2008, as a teenager, I could choose to spent my first earned money to get me either one of the first GNU/Linux phones on the market or the first Android phone, and I feel that as the time goes it only validates my decision.
What is your feedback in regards to battery? Android have been exhausted in development to optimize battery usage but I'm reading linux phones don't really care that much so you end up with a dead phone in less of a day.
Has a power user, what has your experience been on that topic?
I'd switch my phone to linux on a heartbeat because android apps seem compatible enough nowadays to run there too but battery is always the pressing limitation.
My thanks in advance.
I'm using a Librem 5 and its battery life is good enough for me - it lasts pretty much exactly what's needed for me to get through a typical day, so I often get home with the battery almost but not entirely flat. When I know that I'm going to be using it more intensively or need it to last longer, I'll usually just put a spare battery into my backpack, but I rarely actually need to use it when these days you can just charge up in a train or tram.
That's not a universal property of these devices though - N900 that I used previously could easily last a few days.
Having a spare battery or being able to change battery seems like a fever dream for people on new android devices.
I am seriously interested in linux phones... like I am interested in either getting a grapheneos phone or somehow looking through my old garage of parents phones to see if any phone can be linux'd
I don't want to spend money right away but I am also a teenager, but the thing that's kinda stopping me from spending is that terminal can already be done through things like termux and the question I am asking myself is: is it good enough I have written back to back comments about it on why I think running android on linux using waydroid seems more performant than vice versa but I am curious.
Are there any recommendations that you have for me? I want to get linux on my phone but I am pretty sure that there are no second hand linux phones and I think it might cost me a lot of money (well for my country) anyway and I feel like the issue for me not being able to tinker is monetary of sorts.
> terminal can already be done through things like termux
For me, the terminal itself isn't really the value proposition, it's just one of the consequences. What actually matters it that I get to be the real administrator of that device. I can grab any package - whether an application, library, shell or system daemon - and hack on it and patch it however I want, the exact same way I can do it on my laptop's OS. I can replace entire components. I can write scripts that interact with any part of the OS or the hardware. Back when I was a teenager myself, I used to code my own replacement for messaging UI (among other things) in Python, on the phone itself - it really kickstarted my programming skills. These things are just not possible with Android, where patching stuff up is a PITA even when you do it on a PC. Android development follows a completely different philosophy which I don't really subscribe to.
> I feel like the issue for me not being able to tinker is monetary of sorts
Yeah, unfortunately the best option is quite pricey. Viable alternatives may include PinePhone and OnePlus 6, though note that the former is noticeably lower-end and the latter isn't as well supported. However, either of them may end up being enough if you're motivated to tinker.
> seems like a fever dream
What if I told you that when you have a USB power source around for a moment, you can even hot-swap the battery without turning the phone off? :D
The PinePhone is a cheaper phone supported by mobile Linux distros like postmarketOS, maybe look at that. The CPU is not as fast as the Librem though. postmarketOS has some support for a range of devices though, maybe one of them is cheaper used than the PinePhone for you.
https://pine64.org/devices/pinephone/ https://postmarketos.org/
The PinePhone also has the advantage that the proprietary Linux distro running on the ARM processor within the modem can be replaced with a fully open source distro. I think the Hexagon processor in the modem can't be replaced yet.
https://themodemdistro.com/ https://github.com/the-modem-distro/
See also the Debian Mobile wiki page, which is fairly unmaintained these days.
https://wiki.debian.org/Mobile
I've been looking at Linux phones for a while, and now the latest 'sideloading' lockdown from Google has pushed me to seriously consider getting off Android. What phones do you use or recommend for someone who has a little Linux experience?
Maybe start with GrapheneOS on a Google Pixel phone, its a privacy/security focused Android fork.
Otherwise for full Linux, take a look at shipping-with-Android devices that are semi-supported by postmarketOS, Mobian etc. Or go with vendors focused on non-Android Linux like Pine64 PinePhone, Purism Librem, Furilabs, Liberux and maybe some I forgot. The Debian Mobile wiki page has a whole lot of other links but I stopped maintaining it.
https://pine64.org/devices/pinephone/ https://puri.sm/products/librem-5/ https://furilabs.com/ https://liberux.net/ https://wiki.debian.org/Mobile
Smartphone Linux is a total mess. Even postmarketOS does not have a single fully supported and maintained device it can point to and say "buy this, you can run fully featured Linux on it". Very sad. The best option seems to be running Termux on GrapheneOS on the latest Pixels.
The only stopper for most of us fully moving to Linux phones are banking apps...
I am interested to hear how you deal with that as a full linux phone user
Attestation stuff means you probably can't run them even on non-Google versions of Android, so probably get a cheapo second phone for the banking apps.
https://grapheneos.org/articles/attestation-compatibility-gu...
I have barely any reason to use a banking app when almost everything on my account can be done via Web, but when I do want to use BLIK I run the app in Waydroid.
The problem is most bank here for you to log in the Web, you need to install the bank mobile app so you can fetch the security key required to authenticate.
> the android development kit really is very heavy. compared to `gcc -o main main.cpp && ./main`, it is several orders of magnitude away.
> the jetpack stuff and whatnot - the big android app shops probably do actually appreciate that stuff. but i wish the dev env 'scaled to zero' as they say, but in the sense of cognitive overload.
I tried to build a small binary that listens for events and launches/wakes an app to do some automation. But apparently there's no way to send Intents or Broadcasts from native code? So I need to boot a JVM in the binary if I want it to communicate with anything else on the system!
Of course, you can always communicate via stdio, but that's useless because everything in Android speaks Intents/Broadcasts. Native code can also do raw Binder calls, but nothing on the system speaks raw Binder.
>But apparently there's no way to send Intents or Broadcasts from native code? So I need to boot a JVM in the binary if I want it to communicate with anything else on the system!
There is "am" i think which can be invoked to do this.
However, Termux API exists, and is a nice package for calling other services. They have the scripts interface, which calls the actual app over a socket. Kinda inefficient, but at least the work is done.
Yes, but the 'am' command is just a CLI Java program. At that point, it would be more efficient to just boot a JVM in the binary to avoid the JVM startup cost every time a Intent/Broadcast needs to be sent.
I believe the Termux API relies on a Java/app process that runs in the background to do stuff in response to API calls. Though I guess you get it for free if you already have the API running for other reasons.
"could it be time to move away from java, and shift towards everything being a native binary?"
they literally do just that for fuchsia, but idk if google can pull this off tbh the tech DEBT is huge and massive undertaking that even google can be nervous
I mean this is their own fault too tbh, imagine windows that try to release every new release every year and try hard to add feature on top of that and it break down all API underneath
that's what happen to android and ios is
I've been playing with Termux, both on Chromebook (Eve), and my Samsung Galaxy S22 - pretty cool, though hit some issue with recent `bazel` - as newer versions try to access a `/dev` endpoint that's not available.
Quick fix, was to add `~/.bazelrc` this:
and then it works! Though sometimes I need to first `termux-chroot` and then it it handles cases, where some tooling expects `/usr/bin` and not `/mnt/data/com.termux/files/usr/bin`On measurements it's a bit 2x, 3x slower than Crostini (Termina) on Chromebook, but being available (so far) on all my Android devices is just awesome!
And there exist X11 too!
I wish there would be backdoor for F-Droid in the future, though maybe not as it seems :(
hm you can try out userland https://userland.tech/download/ which runs it inside proot and you can use something like alpine or debian and they can actually make the vnc/installing gui setup actually pretty easy.
Highly recommended.
I coded some python with micro in alpine in userland on my phone.
I really really enjoyed it, like more than my pc for that day. I am proud of it.
Using proot and proot-distro is highly recommended in general. Extremely useful when one needs software not directly packaged by Termux.
> I coded some python with micro in alpine in userland on my phone.
Nice to see I'm not the only smartphone programmer around...
Oh, wow! I would try this one! I didn't know about it! Thanks!!!
If I telnet into an ESP32 via Termux, it doesn’t recognize \n. I haven’t found a solution yet. It works fine with other Linux consoles.
EDIT: Thanks @yjftsjthsd-h and @detaro for your suggestions! I tried Telnet via tmux - it worked. Then I tried telnet directly, and it suddenly worked too. Turns out Arduino’s Telnet implementation is single-user only, and my dev machine’s reconnect loop kept the connection open; the working login just fooled me.I don't have one set up to test, but dumb suggestion: What if you run it inside tmux on termux? Just thinking that tmux is essentially a second terminal emulator that might do better.
Telnet often uses "\r\0" instead, but it also can be configured with most clients.
"Running PlatformIO: the xtensa-esp32-elf-g++ binary would not execute, as it is compiled for another architecture"
PlatformIO is providing C binaries that have dependencies.
Please PlatformIO ship your binaries statically so that we can run them everywhere.
I had the same problem on Alpine.
to work around the issue, I had to spin a debian in docker-proot and install platformio in there. Ugly but it worked.
Note also you can use webrepl, which exposes MicroPython's REPL as a web page. It's not a real replacement for termux, but it is still quite useful- I often deploy ESP32s running Micropython around my workspace but they aren't connected to any serial terminal.
I heard something that Termux has a lot of Chinese influence, anybody aware of this? I love Termux but that kinda added a bad taste. But I don't have anything to back it up but quotes from trusted people
Termux' package manager wrapper pkg can randomly select Chinese mirrors, but you can remove them from the selection list.
The commit history doesn't seem to reflect this [1], and the contributors seems to have just a handful of commits outside of two main committers [2]. Seems to be a tonne of trivial commits merged from some code hackathon [3] [4].
[1] https://github.com/termux/termux-app/commits/master/
[2] https://github.com/termux/termux-app/graphs/contributors
[3] https://github.com/termux/termux-app/commit/549f09573f4631fb...
[4] https://github.com/termux/termux-app/commit/c6dce125104620be...
If you like this stuff, I highly recommend you look at Samsung Galaxy phones. They come with DeX, which is a linux DE that you can use with a dock.
The GNU/Linux version was dropped a while ago: https://9to5google.com/2019/10/18/samsung-discontinues-linux...
Galaxy S25 still comes with DeX, and I think the S26 will also.
Yes, but the dex that ships today is just android. That should play nicely with termux, but I wouldn't call it a "Linux DE"
Technically a Linux DE by virtue of being an Android DE, but most definitely NOT a Linux DE for purposes of a discussion involving Termux.
You could as well use any old Raspberry as go-between. If you use USB-tethering, the Raspberry will appear locally around 192.168.43.XX and you can termux-ssh into it and use mpremote therefrom.
It's quite unfortunate Apple doesn't expose CDC-ACM to iOS devices.
Using Termux to program an ESP32 directly from an Android phone is a brilliant hack for anyone who wants a truly portable development setup.
Very useful! Would be incredible to get something similar on iOS.
Cool article. Did anyone else check their screens for damage while reading?
I saw it as well. Really like that Nier Automata CSS.
I'm trying to repurpose my Pixel 6a that I no longer use, as a Home Assistant Core main driver. I was hoping the author will talk a little bit about that.
I still haven't had the luck to have a fully working Home Assistant running inside (rooted) Termux.
Anyone succeeded to start `hass` and have it running without throwing errors?
If you have root, it is fairly trivial to run full-on arm64 Linux distro in chroot. That should fix most problems with linux software running in android.
There is also Linux Deploy[1] that automates the process of setting up chroot, ssh and even gui desktop (through framebuffer).
[1] https://github.com/meefik/linuxdeploy
Hey maybe I didn't get ya but by home assistant core main driver, do you mean the linux application of this as in cli / terminal right?
what are your thoughts on something like https://userland.tech/download/ which can just straight up boot up into any distro that you might need (you can use something like alpine/debian/archlinux)
they are open source too btw
and also I tried and if you have a server running, then there are ways to make it so that those web servers can be accessed from outside out of the box as well so there is nothing to worry about that either.
It doesn't require root either, I run it on an unrooted phone!