User Tools

Site Tools


pi-hole:setup_pi-hole_running_in_a_container_on_qnap_container_station

This is an old revision of the document!


Pi-Hole - Setup Pi-Hole running in a container on QNAP Container Station

Create an Ubuntu LXC Container

On the QNAP

  • Go into the Container Station.
  • Select the Create option from the left side of the menu and then scroll to the bottom of the window.
    • There are several types of Docker and LXC containers listed.
  • Choose the LXC Ubuntu 18.04 container.
    • That's the underlying OS for the QNAP QTS Operating System on the NAS.
  • Name the container “Pi-Hole” and set the CPU limit to 20% and the memory limit to 1024MB which is more than enough for Pi-Hole.

NOTE: We use an LXC container instead of a Docker container.

A Docker implementation will run perfectly until you either shutdown the container or restart the QNAP NAS. Upon restart of the container, the console will indicate that there is no DNS Resolver available. The community documented solution has been to edit /etc/resolv.conf of the QNAP to point to 1.1.1.1 (Cloudflare DNS) rather than to the router. This seems to work inconsistently and is not a final solution. Other suggestions online involve stopping the DNSMASQ daemon. There is a better way, by using LXC in this case.

One powerful feature of Docker containers is that you can export them and import them easily on another Docker system. The limitation to Docker containers is that once you create one, it really can't be modified. So, in the case of “Pi-Hole”, you would have to create a new container when a new version of Pi-Hole is released. That's because the Docker Image is an image.

LXC containers are not just an application instance. LXC containers provide an isolated OS instance on which you can install one or more applications unlike a Docker instance which is for a single packaged installation.

Since LXC provides a container instance of an OS, it is possible to install one or more applications to an LXC container after creating it.

In order to provide an easier installation for pihole without the issues mentioned here, we will use an LXC container.

Then click on Advanced Settings.

  • Change the network mode to Bridge.
  • Select Use Static IP and change the IP address to a unique address on your LAN. In this example, 192.168.1.25 is used.

Go back to the Overview section in Container Station and after a few minutes you should see your container listed.

Click on the name of the container and you will enter the console.

Type passwd to change the password.

NOTE: The original password is ubuntu.


Update and Configure the Ubuntu LXC Container

Before we can install Pi-hole, we need to update this very lightweight LXC container to add some features.

First run updates:

sudo apt-get update

Next install the ssh server:

sudo apt-get install -y openssh-server

Now add a username other than the default. Just go through the dialogue and answer the prompts for the new user.

sudo adduser piuser

Now grant the new user privilege:

sudo usermod -aG sudo piuser

SSH into the Ubuntu LXC Container

Open a terminal back on your desktop computer and “ssh” to the new machine with the address you used to create the LXC instance:

ssh piuser@192.168.1.25

Get privilege in the command window:

sudo -i

Install “curl”:

sudo apt-get install curl

Now you can install pi-hole:

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

Select the defaults until the DNS screen and then choose Cloudflare as your DNS.

  • Accept all the rest of the defaults and be careful not to change them. This will assure that you get the admin web interface and that statistics are logged.
  • The installation will continue for a few minutes after you answer the prompts.
  • After your installation completes, you will receive a message telling you to set up the DHCP settings on your router to make the address of your Pi-Hole the primary DNS for your network.
  • That will insert the Pi-Hole as the “man-in-the-middle” to scrutinize all DNS names before they are either passed to the Internet or “Pi-Holed”.

When you return to the prompt in the “ssh” terminal session, enter the following command to set your Pi-hole password:

pihole -a -p

You can now close the “ssh” terminal session.


Go to your Pi-Hole Website

Go to your web browser and enter the address of your Pi-Hole followed by /admin:

http://192.168.1.25/admin

Select the login and you should be able to log in with the password you just set.

NOTE: Since this is a “scratch” install in an LXC container, you will be able to start and stop the container and reboot the QNAP NAS without any problems and even upgrade Pi-Hole when new releases are available.

This LXC container is very lean and uses a minimal amount of system resources.

IMPORTANT: Don't forget to set the DNS settings for your DHCP server on your router because Pi-Hole will not be used by any of your network clients until that occurs.

A good practice is to make the Pi-Hole DNS 1 and then Cloudflare 1.1.1.1 as DNS 2.

That will assure DNS translation when your Pi-Hole is not running.


References

pi-hole/setup_pi-hole_running_in_a_container_on_qnap_container_station.1595585501.txt.gz · Last modified: 2020/07/24 11:11 by 185.104.185.238

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki