Announcing a Beta test of Pi-hole 5.0!

Announcing a Beta test of Pi-hole 5.0!

From today we are looking for people to help us beta test the next iteration of Pi-hole!

We have been quiet on the release front for a few months, but we have been busy working away on lots of new features to make Pi-hole an even better tool for your ad-blocking needs!


Read first: Please do not run this if you are not comfortable with digging into any issues that may arise. That said, we would like to have some support in making sure we have every imaginable configuration covered before release. Pi-hole can already do so much, it is almost impossible to test all features ourselves properly.

It must be stressed that as there are many fundamental changes, updating from Pi-hole 4.x to 5.0 is strictly a one way operation.

The only way to revert back to master from the beta will be to restore from an earlier backup. If you are using a Raspberry Pi, it may be worth taking an image of your SD card first, or at least make a backup copy of the directory/etc/pihole

Please use the “Beta 5.0” Category on our Discourse Forum to discuss the beta/report any findings.

With that in mind…

What’s new?

Quite a lot, actually, but we’ll go over the bigger things briefly here.

gravity.list is dead. Long live gravity.db

We’re migrating the list storage from files within /etc/pihole to a database. This will open up opportunities such as better control over enabling and disabling items in the lists, and even the ability to add comments to remind you why you black/whitelisted something! Furthermore, the database will store when you initially added a domain and when you last changed it (like dis-/enabled it).
You will notice that gravity (pihole -g) takes a little longer to run (some 20 seconds on the default lists on an Rpi 3), however as this process largely happens in the background once a week, hopefully it is not something that will cause issues. The longer run time comes due to generating an efficient B-tree index that allows fast lookups in the database.

Custom user scripts that rely on manipulating files such as gravity.list,black.list,white.list etc. need to be migrated to interacting with the database, however, there is so much power in this new approach, it’s really really worth it! And, we’re here to help, just open a discussion on our Discourse platform and we can assist with advise how to use the new gravity database for your custom scripts. The bonus is that you will learn how to interact with a database system that is also heavily used in widespread applications such as Android (yes, the smartphone operating system!), Google’s Chrome, Firefox, many content management systems, and a lot more. You can even add this to your CV for your next letter of application, if you like.

Per-client blocking

This is something that users have been asking for for a long time, and we are proud to be finally able to offer this awesome feature.

We added a dashboard interface to be able to easily use this powerful new functionality, however, there is currently no CLI interface through the pihole command. If you want to manage groups from the CLI, you’ll have to directly interact with the database. We prepared an extensive example in our official documentation showing some possible configurations once through the web interface but also how to achieve the same thing through the CLI.

Deep CNAME inspection

This has been a covered in a broadly discussed feature request for the ability to deeply analyze CNAME queries. This will allow FTL to find whether any intermediate domain in the chain is known to be blocked. If one is found, Pi-hole can now block the entire query and returns an empty reply to the requesting client. As this is a very work-intense process, it may lead to notable delays if you run Pi-hole on a very low end device such as the Pi Zero with a large number of clients. The feature defaults to being enabled but can be disabled with an FTL config option (CNAME_DEEP_INSPECT=false).

Other notable new features

  • Regex/wildcard support for the whitelist
  • IPv6 support added to the network table
  • Using the network table as a secondary source for discovering client host names (especially helpful for IPv6 clients)
  • Add an FTL variant for Raspberry Pi 1 and 0 editions using a qemu armel docker image.
  • Add a self-contained FTL variant using musl on Alpine Linux. This binary does not depend on glibc in any way.

And, of course, also a larger number of small tweaks, improvements and some fixed bugs.

OK, enough reading.. how do I switch to the beta?


echo "release/v5.0" | sudo tee /etc/pihole/ftlbranch
pihole checkout core release/v5.0
pihole checkout web release/v5.0

And, again, please use the “Beta 5.0” Category on our Discourse Forum to discuss the beta/report any findings. We’ll be there to give help and update the beta quickly in case you find any errors.