How to install Pi-Hole on Orange Pi Lite

If you are bored by the insane and unmanageable amount of ads that we encounter every day while surfing on websites, please keep on reading since this is how i solved this annoying thing with just 20$ and some will of tinkering.

For those of you who doesn’t know yet Pi-Hole, is an open-source project that acts as a sort of local DNS proxy and basically it intercepts and blocks malicious DNS queries made by clients and filter them out. It’s based on a blacklist approach, meaning that only queries (in the shape of exact url, wildcard domains and also regex) in the blacklists are blocked. Note that it isn’t a DNS server since it doesn’t implement a proper DNS resolver but it resemble more to a proxy, since it forwards non-malicious DNS queries from clients, to a DNS server of our choice.

I had a spare single-board computer called OrangePi Lite (which is a low-cost clone of the well known RaspberryPi) which is powered by a pretty low hardware (Quad-Core ARM Cortex-A7 @ 1.296GHz and 512 Mb of RAM, no ethernet port) so i decided to give it a try if it could handle Pi-Hole to run smoothly.

First of all we need to download Armbian from here then, the img must be burned on a microSD (i used Etcher tool for this) and then we can finally power up our little logic board.

At the first boot you’l be asked to change the root password and to create another non-root user. After this, i restarted the system to check if users were created correctly.

If anything went wrong, i changed my keyboard setup, you can do this by typing

dpkg-reconfigure keyboard-configuration

or you can also edit the keyboard config file by typing:

sudo nano /etc/default/keyboard

and changing only the XKBLayout field, which represent the layout of your keyboard, depending on your country.

XKBLAYOUT="xx"

After rebooted again the system, i configured the network of my OPI. My model, has no other network interface other than Wifi, so i had to connect it to my wireless connection instead of just connecting it to the router via a generic LAN cable.

Luckily, armbian (which is based on debian 10) comes out with NMTUI tool, which stands for NETWORK MANAGER TEXT USER INTERFACE which allowed me to setup my wireless network pretty easily, and actually if you are going to use the OPI with a static IP you can define it on this step, and this will be automatically detected by Pi-Hole later.

I wanna forget about this device once started, so i want to enable auto-login which is not provided by default in armbian. In order to do this, you need to write a custom entry on :

# type this in a new file in this path #/lib/systemd/system/getty@tty1.service.d/20-autologin.conf

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin userName--noclear %I $TERM

where userName is the user wherewith we wanna login automatically on our OPI.

We can finally install Pi-Hole typing:

curl -sSL https://install.pi-hole.net | bash

this will start the installer script.

The wizard is pretty easy and straightforward, the only step a bit more complicated is the one regarding the interface to use for PiHole. This simply asks how PiHole is going to be connected to the router, via WiFi or cable. Since this guide is identical also for other kind of Orange Pi boards, please select the interface you are gonna use to connect the board to your router.

At the end of the installation, we are done and no further steps are required in order to have your local DNS sink hole fully functioning ! Simply browse

http://<STATIC_IP>/admin

to arrive on the administration page of PiHole.

You can start adding blacklists, i do not share mine because they might be country dependent and because there are so many lists out there that is really hard to find the right ones. An advise that i feel to share is , do not add pointless lists just because someone is using them, each domain in the lists is stored on ram and the more domains you have in blacklists the more the memory will be occupied. For example, since my board is pretty cheap, i do have less than 300K domains on blocklists and it still works smoothly with a memory occupation of approx 15% .

Personally, after several years of use, i find out that <500K domains on blocklist is definitely enough for blocking every day ads, and is still manageable in terms of system reactivity.

Anyway, you can play a bit with settings to get confident with the tool.

If you are interested in a really cheap solution, here you can find the same board i’m using.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store