Ubuntu on Android isn’t a gimmick — it’s how I manage my homelab from anywhere

After building my homelab, carrying my MacBook wherever I traveled had become a habit. Not because I knew something would break, but because I‘d made a routine of checking the status every once in a while. Having it with me was insurance for my homelab; if something broke, I could pull out the MacBook and start troubleshooting immediately. But with time, carrying a laptop everywhere I went for tiny routine tasks started to feel excessive. That was when I started thinking about whether I could outsource some of these tasks to my Android phone.

The laptop became my safety net

I kept packing it “just in case” — and the case never actually needed a laptop

MacBook Pro terminal connected via SSH to a home server, showing a list of running Docker containers

As I always say and have repeatedly mentioned in my previous articles, setting up a homelab is one thing, and keeping it running is another. Every once in a while, I check my homelab status, either by SSHing into the Debian server or visiting the Uptime Kuma status page. This was all fine while I was at my home — everything was just a click away on my workstation.

Things got complicated when I traveled for a few days. I always had to keep my MacBook Pro in my Skoda’s backseat. Or in my backpack while I was on a bike ride. Not because I planned to work on the trip, but because it was there as insurance for my homelab. If something went wrong, I could just SSH into my server from the laptop. But it wasn’t always because something had gone wrong; even for a 10-second job, I had to open my laptop and SSH into the server. A Docker container stopped, and I needed the laptop, or a service needed a restart, or I just wanted to check the logs.

The laptop had become a mandatory gadget while traveling. I forgot my toothbrush; that was okay, but if I forgot my laptop, I needed to take a U-turn to go pick it up. And it was never an emergency, just routine maintenance. While traveling, when I got a few free moments, my routine was like this: open my backpack, take out the MacBook, connect to public Wi-Fi or mobile data, SSH into the server, run two or three commands, confirm everything is fine, then close the lid. This barely took a few minutes, and yet I needed the full laptop for it, anyway.

The MacBook wasn’t solving difficult problems, but it was simply the only device I had on me while traveling that could run a proper Linux shell. And carrying a laptop just for running a few commands started feeling a bit unnecessary. I was already carrying two phones with me, a primary iPhone and a secondary Galaxy, plus an old unlocked-bootloader phone sitting in a drawer back home. I began wondering whether my Android phone, either the Galaxy or the unlocked-bootloader phone, could handle those same jobs instead.

So I built a Linux terminal on my phone

It didn’t feel like a workaround — it felt like a real machine

Why did I even think about the Android device? Previously, I experimented with my spare POCO F1 as my home server’s blindspot monitor. And for setting it up, I SSH into Termux from my PC. I began thinking, if I could SSH into the phone, the other way around would also be possible. Turned out it was very much possible, but Termux on its own was just a regular SSH client. It would solve the basic problem, sure, but I wanted to do something that felt closer to my MacBook’s Terminal.

That was when I began my research into it. I discovered I could easily install Ubuntu using proot-distro, and I didn’t even need a bootloader-unlocked phone.

I then decided to install it on my secondary Galaxy and give it a try. Installing Ubuntu was straightforward; installing Termux took me a few roundabouts. I was under the impression that the Play Store version of Termux was outdated and/or orphaned. So, I downloaded F-Droid and tried downloading Termux from there, but the listing showed it was last updated 14 months ago. Then I went to Termux’s GitHub repo and downloaded the APK from it. Later, almost by accident, I checked the Play Store out of curiosity and found that my assumption of Termux being orphaned was wrong.

After installing Termux, everything went smoothly. A few commands to install proot-distro and Ubuntu, and then a few more to install openssh-client, and I was all set. When I ran cat /etc/os-release, that was the first time I actually believed it was Ubuntu and not Android. Then I did realize that it wasn’t pretending to be Linux — it genuinely behaved like a lightweight Linux distro.

pkg install proot-distro -y 
proot-distro install ubuntu
proot-distro login ubuntu
apt update
apt install openssh-client -y

Once that was done, everything flowed the way I’d expect from a real Linux distro. And Tailscale made the handshake part easier. All my devices and server were already on Tailscale, so instead of the local IP, I used the Tailscale IP from the first SSH itself. I SSH’ed into my Debian server the same way I am used to: ssh shekhar@{tailscale_ip}. It already felt like home. After using it a few times, it finally started feeling like it wasn’t just another SSH client but a lightweight Linux environment that happens to live on my phone.

Now the laptop stays in the bag

It’s not doing more — it’s just doing it first

One thing was sure from day one itself: I stopped instinctively reaching for the MacBook whenever a notification came in. The phone became the first thing I reached for. Last weekend, I was at my sister’s place; that was the first time I didn’t carry my Mac with me. A notification popped on my phone that my domain for public-facing services like Jellyfin was down.

I already had a hunch what the issue was; before leaving home, I had changed the DNS servers, and that created a problem with Newt (Pangolin’s client). And I only had to restart the Newt container. Basically a two-minute job, but one that previously meant pulling out the Mac just to run it. But that day, I didn’t reach for my Mac; I didn’t even have it with me. So, I pulled out my Galaxy, opened Termux, logged into Ubuntu, and SSH’d into my server via Tailscale IP. And then I restarted Newt. It worked exactly as I’d hoped.

This was a real, if small, emergency, and I resolved it via my Android running a Linux terminal. The phone wasn’t faster or more powerful than my MacBook Pro; it was simply the device already in my pocket. This particular fix was one I could predict and diagnose quickly. In case of a new, uncertain emergency, it would be harder to debug on a phone than on my laptop. But I could access my phone on the go, so I was more likely to deal with small issues immediately instead of telling myself I’d check later.

That day, I didn’t carry my MacBook, but I don’t plan on leaving it behind every time I travel. I would still use the MacBook for VS Code, editing large Compose files, and managing multiple terminal windows simultaneously, but for smaller issues, I would reach for my phone first before my MacBook.

The MacBook isn’t obsolete — it’s just off duty

The phone hasn’t replaced my Linux computer or a full-sized laptop. It’s replaced all the times I packed one just in case. I don’t plan to administer an entire server from my phone, and I never intended to. But for small routine tasks like docker ps, free -h, and docker logs --tail 20 jellyfin, a real Linux environment in my pocket actually makes a lot of sense. I will still carry my Mac with me, but only when I know I will do some real work with it — not for “just in case” situations. For small maintenance tasks, my phone has quietly taken over.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *