Hardware/Software Requirements

This is a historical document and left for archival purposes. For up to date information please use https://docs.pi-hole.net/

--- OLD INFORMATION ---

The Installer

Our intelligent installer is tailored to installations at home and behind firewalls. If you are installing Pi-hole in an environment beyond that scope, you will need to take extra security measures when installing it.

Hardware

Pi-hole is very lightweight as it only handles DNS queries and returns a blank HTML file so it doesn't need much processing power.

  • ~52MB of free space
  • 512 MB RAM

Software

Pi-hole will run on most Debian-based distro's and is the preferred platform for it.

We officially support the following:

  • Raspbian: Jessie/Stretch
  • Ubuntu: 16.04 / 16.10
  • Debian: 8 / 9
  • Fedora 27, 28, 29
  • CentOS: 7 (not ARM)

Routers, DHCP Options, And Setting The DNS Server

To take advantage of not having to manually configure your devices to use Pi-hole, your router needs to support an option to change your local DNS server, or set it in the DHCP Options section. More on this step can be found here:

https://discourse.pi-hole.net/t/how-do-i-configure-my-devices-to-use-pi-hole-as-their-dns-server/245

If you don't have these options, you can disable DHCP on your router and enable Pi-hole's built in DHCP server. Then Pi-hole can handle configuring your devices to use it as their DNS server.

Finally, some devices such as Google devices, hardcode their DNS server so it will always be first to be queried. This behavior interferes with how Pi-hole blocks ads. In this case, there's not a lot of options to fix it without hacking your way around it.

IP Addressing

Pi-hole needs a static IP address to properly function (a DHCP reservation is just fine). Users may run into issues because we currently install dhcpcd5, which may conflict with other running network managers such as dhclient, dhcpcd, networkmanager, and systemd-networkd.

As part of our install process, we append some lines to /etc/dhcpcd.conf in order to statically assign an IP address, so take note of this prior to installing.

Please be aware of this fact because it may cause confusion. This is not the ideal situation for us to be in, but since a significant portion of our users are running Pi-hole on Raspbian; and because Pi-hole's roots began with the Raspberry Pi, it's a problem that is difficult problem to get away from.

Due to the complexity of different ways of setting an IP address across different systems, it's a slow process and we need help. If you're willing to contribute, please let us know.

Ports

We need ports 53, 80, and 4711. Port 80 is optional if you decide not to install the Web dashboard during installation.

Port 53 should be used by dnsmasq

If you happen to have another DNS server running, such as BIND, you will need to turn it off in order for Pi-hole to respond to DNS queries.

Port 80 should be used by lighttpd

If you have another Web server already running, such as Apache, Pi-hole's Web server will not work. You can either disable the other Web server or change the port on which lighttpd listens, which allows you keep both Web servers running.

Port 4711 should be used by pihole-FTL

FTL is our API engine and by default uses port 4711, but will increment if it's already in use by something else.https://discourse.pi-hole.net/t/how-do-i-configure-my-devices-to-use-pi-hole-as-their-dns-server/245https://discourse.pi-hole.net/t/how-do-i-configure-my-devices-to-use-pi-hole-as-their-dns-server/245

1 Like

Bumping this one as I believe this excellent HowTo points out some important pitfalls that users experience like conflicting daemons and how lighttpd is used to return a blank ad.

Maybe you could add a "Hostname recommendation" section too as people configure their Pi often with only a short name?
For allot of software, especially the ones depending on DNS resolution, a FQDN is required:

FQDNs can be a requirement

Some things like web servers that use name based virtual hosting or load balancers, etc... absolutely require that you address them via an FQDN or hostname. They determine how to respond to your request based on the FQDN that you are connecting to. Connecting via an IP may not work at all.

SSL certificates are issued based on domain names, so you may not be able to use some SSL enabled services (properly) without DNS.

Its always harder to fix after.

I don't think it would really be appropriate for this FAQ. Anyone who would need to be setting up virtual hosts or load balancers probably knows how to set a FQDN--having one isn't a requirement for running a Pi-hole.

I understand.
But its such a small step from Pi-Holing to LBing and playing with anything virtual :wink:

Is 512 MB RAM really a requirement? Seems a bit too high for a very lightweight. I'm running Pi-hole as a virtual machine so every MB counts.

This is dedicated (no other software) Pi-Hole on a Pi B+ :

$ uptime
 21:24:18 up 62 days,  3:22,  2 users,  load average: 0.00, 0.00, 0.00

$ free -h
             total       used       free     shared    buffers     cached
Mem:          434M       222M       212M        26M        39M       122M
-/+ buffers/cache:        60M       374M
Swap:          99M       7.6M        92M

So yeah looks like you can size it down a bit to lets say 300MB if only running Pi-Hole.
But why not try yourself ?
Its a VM so how hard is it to change.

Ps. I can see 512MB as requirement for non VM systems to allow future things to grow.

EDIT: Comment from another KVM Pi-Hole user:

my pihole vm runs with 112MB of RAM and no swap

Forgot to mention but a Linux behaviour that allot of people overlook is caching.
Linux will cache allot until almost all memory is used up before it releases/drops cached bits.

http://www.linuxatemyram.com/

1 Like

Hello,
It would not be possible to add the possibility to create a VPN tunnel in the Raspberry PI 3, such as L2TP?

Thank you