Mozilla Janus proxy in a Raspberry Pi

These winter holidays I've been taking care of my home network and I finally found some time to set up a Raspberry Pi for my everyday Internet needs.

In the process of checking different proxy services I stumbled on Janus, a Node.js SPDY-based proxy. According to this blogpost, the service seems to be targeting mobile contexts, somehow providing a similar service as Opera Turbo or more recent Google Data Compression Proxy. But, compared to these latter options, Janus server is fully open-source. Moreover, as an interesting optional feature, it's also possible to block ads based on this ad list provider.

You can already try the service by yourself by using last Firefox version and this addon (for Firefox and Firefox mobile) and the default proxy server.

However, since I wanted to manage my own proxy service (for privacy and performance reasons), I decided to install the proxy server in a Raspberry Pi of my own.

Since Janus is a Node.js application, you need first to set up a working environment, for instance with tools like nvm. For required libraries, such as mozjpeg, some extra packages may be needed, easily installable with 'apt-get', such as: libtool or libpng-dev. If module building fails, you're likely to need another development package to be installed.

Proxy configuration can be set up via config/default.yml file. For instance, proxy port can be changed there and several other options, such as logging or enabling ad blocking by default. A recommendable feature is enabling Redis database for caching purposes (take into account that Redis default port is 6379, so you may want to change the value provided there).

Once set up, a PAC URL can be found at: https://yourRaspberryIP:55055 (unless you changed the default port). By the way, notice the 'https' procol when you type the address.

And that's all. Since there is no authentication mechanism so far included, you have to be careful if you plan to open the proxy port from your home network to the Internet (I didn't try whether HTTP authentication behind a reverse proxy might work).

As a side note, from my short experience, even though the addon allows you to tune whether you prefer bandwidth save or lower latency, I must admit that Raspberry Pi might still not be the most suitable machine for this work and a more powerful single board computer (let's say a Cubietruck) might do a better job.