Roll Your Own Pocket Server


After reading about clever hacks with a Raspberry Pi and strange input devices, I decided to up the ante a bit.

So I set up a Sony Xperia Arc S (which was kindly gifted to me by an old college mate) as an all-in-one pocket Ubuntu server and wireless gateway.

I use that phone mostly to test Android apps and play Ingress, but now it moonlights as an Ubuntu machine by running a chroot install inside a 2GB image file on the SD card, just like I did on my ODROID-U2. Which is trivial to do these days on any rooted phone – just grab Complete Linux off the Play Store, download one of the Ubuntu images, and you’re done – there’s actually very little hackery involved.

The great thing about this is that it isn’t just a gimmick. You can get a surprising lot done even on a relatively underpowered device, and it’s especially useful if you’re traveling given that the phone can also double as a personal hotspot.

As to performance, your mileage will vary depending on the hardware you have available. The Xperia Arc I’m using has 320MB RAM, but even given its meagre single-core CPU it makes for a reasonably decent Linux box given that I can install just about anything on it.

The sensible thing to do (and what I’ve been doing out in the green fields of Portugal) is SSHing into it from my iPad – which, with great apps like Diet Coda, Prompt and Textastic makes for a pretty good work environment1. The iPad is still an excellent terminal and graphical editor, even if it can’t run much locally (Pythonista is a notable exception, but even though I use it for testing REST services and other arcane purposes, it has its limits).

Running things inside tmux makes it virtually indistinguishable from any other machine I usually work in, so I’ve been merrily cloning git and Mercurial repositories, editing code, running tests and committing the results upstream without any problems whatsoever.

And given my penchant for optimizing code by testing it on low-end hardware, this is a pretty sweet setup - even for testing multi-threaded Python code, with or without gevent2. In fact, most of the stuff I’ve been working on publicly on Github has been tested and profiled there, including my feed reader code and a few other things.

Of course you can go crazy on more modern devices, where you can pull off stunts like running a full remote desktop or plugging it in to a TV and a keyboard all on its own. The thought of a portable quad-core ARM with 1GB RAM – about as powerful as my Linode used to be – is… tempting, but the point here is that a little box you can bring along with you can be both trivial to set up and surprisingly handy.


  1. Even considering that Panic hasn’t done much in terms of feature updates (such as better syntax highlighting or faster performance), I still like their apps. ↩︎

  2. It bears noting that the Ubuntu ARM packages for gevent and greenlets cause segfaults, but that’s easily fixed by installing the latest versions with pip↩︎


See Also: