Pi-hole 5.1 released
As always, we recommend that you read through the release notes and ensure that this update is something you wish to install.
Highlights
Dark-mode
You asked for it, we added it. Dark mode has been an often-requested feature. With Pi-hole v5.1, we finally have an inbuilt dark-mode which can be enabled on the settings page.
Improved conditional forwarding flexibility
“Conditional forwarding” can be used to tell FTL to send queries to local devices (either with a local domain) and PTR requests for private ranges to a dedicated device (typically the router of the network) instead of the configured upstreams.
While this works for most users, it was not very flexible, as it implies three severe limitations (assuming the router is 10.1.2.3
):
- It is limited to IPv4
- It automatically assumes a Class D network. i.e.
10.1.2.0/24
. This is often correct (typically for192.168.x.0/24
networks, but may also be wrong! - It requires the subnet to be the same Class D network the router is in (this may be a fair assumption, however).
Pi-hole v5.1 makes conditional forwarding more flexible:
- It supports IPv4 and IPv6
- It adds a dedicated box for the local subnet to be used (can be, e.g.,
10.0.0.0/8
in above’s example) - The router can be specified independently of the subnet, it could even be a foreign device (like “ask
13.225.3.2
for all IPs in range10.0.0.0/8
).
Pi-hole diagnostics system
We added a new tool providing users with easily accessible error messages. Previously, all these massages were only accessible by looking carefully through /var/log/pihole-FTL.log
. As a result, many issues stayed unnoticed.
Fix for a severe bug in dnsmasq v2.81
We adopted dnsmasq v2.81 very early on. As it turned out, there was quite a severe bug in TCP query handling giving rise to a very large number of bug reports for FTL. We found a fix for this and it will be in dnsmasq v2.82. We have also applied the fix to Pi-hole FTL v5.1
Option to use the old style charts on dashboard
You now have the option to use the old curved line charts on the dashboard instead of the newer bar charts.
Updated Teleporter function
Exports more items and will import everything that is exported. Also, the teleporter export file name now includes the host name of the Pi-hole that generated the file (handy if you have multiple Pi-holes).
Added functionality of Local DNS records
Added support for CNAME records.
Improved handling of duplicate entries in adlists or domains
Don’t hard fail when adding duplicate adlists.
Minor re-arrangement of admin GUI
Moved network tab to “Tools” menu. General tidying and re-wording of various bits of the web GUI.
Further details can be found in the complete change log. You see, Pi-hole v5.1 again brings a lot of new stuff and also quite some fixes and other improvements:
New
- Improve conditional forwarding #3260 (@DL6ER)
- Added support for CNAME record add/remove #3351 (@marank)
- Implement backend support for theming #3327 (@DL6ER)
- Debug extras #3423 (@PromoFaux)
- Add CAP_SYS_NICE to FTL’s capabilities #3455 (@DL6ER)
- Display warning if unsupported OS is detected #3441 (Subsquently fixed by #3490) (@PromoFaux)
- Add theme support for Pi-hole #1253 (@DL6ER)
- Add checkbox (save state in localstorage) to toggle between bar and smooth #1329 (@PromoFaux)
- Include hostname in backup filename #1417 (@PromoFaux)
- Allow spaces in groups when wrapping names in “…” #1292 (@DL6ER)
- Add per-browser styling settings #1422 (@DL6ER)
- Add support for HOSTNAME diagnostics message #1356 (@DL6ER)
- Switch from
make
tocmake
(use./build.sh
instead ofmake
) #781 #794 (@fhriley / @DL6ER) - Pi-hole diagnostics system showing warnings on the dashboard #752 #756 #780 (@DL6ER)
- Automatic IDN encoding for international domains in HOSTS files #673 (@DL6ER)
- Add
NAMES_FROM_NETDB
option #784 (@DL6ER) - Add support for additional query types #819 (@DL6ER)
Tweaks
- Remove wget from PIHOLE_DEPS #3185 (@msamendinger)
- use py3 instead py2 #3153 (@jnozsc)
- Assorted typo fixes #3126 (@XhmikosR)
- Reduce apt-get install verbosity #3205 (@MichaIng)
- fix typo #3218 (@JulienOrain)
- Revert using hardcoded php-intl meta package #3204 (@MichaIng)
- Do not add pihole user to web server group #3226 (@MichaIng)
- Remove dead code #3312 (@subdavis}
- Only check SELinux states if “getenforce” command exists #3353 (@MichaIng)
- Update documentation links #3359 (@dnicolson)
- Fix GitHub capitalisation #3360 (@dnicolson)
- Remove store/shop link from README #3369 (@a-p-o)
- Start pihole-FTL after network #3248 (@MichaIng)
- Use
toggle
instead ofselect
#3406 (@PromoFaux) - Remove csslint from Strickler CI #3419 (@XhmikosR)
- Reload the lists, which will cause the cached privacy level to be updated #3415 (@fhriley)
- Remove deprecated Disconnect lists from “defaults” #3451 (@PromoFaux )
- Update links #3412 (@XhmikosR)
- Allow certain domain duplicates #3466 (@DL6ER )
- Change OS Detection in debug script #3434 (@PromoFaux)
- Improve man pihole restartdns section #3492 (@DL6ER)
- Improve IP validation function #3489 (@PromoFaux)
- Markdown tweaks #3420 (@XhmikosR)
- Fix/tweak blocking page #3403 (@XhmikosR)
- Tweak lighttpd configs #3425 (@XhmikosR)
- Prevent “pihole disable $timeout” from messing up future state changes #2887 (@tlk)
- CI: remove no longer needed steps #1228 (@XhmikosR)
- Update groups-common.js #1254 (@XhmikosR)
- Minor tweaks and cleanup #1260 (@XhmikosR)
- groups-common.js: use FontAwesome for consistency #1261 (@XhmikosR)
- Add
type="button"
to all buttons. #1262 (@XhmikosR) - Improvements for Teleporter #1276 / #1294 (@DL6ER)
- Update chart.js to v2.9.3 and moment.js to v2.24 #1115 (@XhmikosR)
- remove executable flag from css and font files #1280 (@graysky2)
- Trim user input where applicable #1293 (@jacklul)
- Improve sidebar #1303 (@XhmikosR)
- Rename variable to camelcase. #1307 (@XhmikosR)
- header: add X-UA-Compatible meta tag #1311 (@XhmikosR)
- network: use Font Awesome #1306 (@XhmikosR)
- Use the minified animate.css file. #1263 (@XhmikosR)
- Update DataTables to v1.10.21 #1116 (@XhmikosR)
- Update Font Awesome to v5.13.0 #1302 (@XhmikosR)
- Improve user-menu markup #1310 (@XhmikosR)
- Losslessly compress the bg images #1314 (@XhmikosR)
- Use
text-uppercase
in sidebar #1319 (@XhmikosR) - header.php: group stylesheets and scripts #1320 (@XhmikosR)
- Update Source Sans Pro font #1322 (@XhmikosR)
- header.php: minor cleanup #1323 (@XhmikosR)
- Set default sort on DHCP lease tables to that of Hostname for ease of Access #1327 (@PromoFaux)
- Improve nav-tabs accessibility and minor cleanup #1321 (@XhmikosR)
- Missed font-display #1328 (@XhmikosR)
- Move non-Bootstrap files outside of the bootstrap folder #1334 (@XhmikosR)
- Load the built DataTables bundle #1335 (@XhmikosR)
- Add .gitattributes file #1339 (@XhmikosR)
- Update settings.js #1342 (@XhmikosR)
- index.php: make query charts smaller on md #1343 (@XhmikosR)
- Enable a couple xo (ESLint) rules and rename utils #1346 (@XhmikosR)
- Improve user info markup #1347 (@XhmikosR)
- HTML
hidden
attribute does not need a value. #1301 (@XhmikosR) - Assorted Markdown tweaks #1359 (@XhmikosR)
- footer.js: remove duplicate function. #1373 (@XhmikosR)
- Enable
no-zero-fractions
rule #1298 (@XhmikosR) - Remember last used sort column/direction on DHCP lease tables #1332 (@PromoFaux)
- db_graph.js: move variable where it’s used #1358 (@XhmikosR)
- Remove redundant variable #1351 (@XhmikosR)
- Tweak footer.php #1344 (@XhmikosR)
- Update settings.js #1381 (@XhmikosR)
- Clean table classes #1367 (@XhmikosR)
- Use
fa5
class on the sidebar toggle #1368 (@XhmikosR) - Minor HTML markup fixes. #1369 (@XhmikosR)
- Always use
!== -1
to check for a string’s existence #1372 (@XhmikosR) - Update pi-hole.css #1097 (@XhmikosR)
- Check
data
for null before trying to manipulate it. #1398 (@PromoFaux ) - Update bootstrap-select and add missing .map files #1383 (@XhmikosR)
- Replace
$.each
with native methods. #1384 (@XhmikosR) - Use
$
instead ofjQuery
. #1385 (@XhmikosR) - Guard
gethostname()
calls #1400 (@XhmikosR) - Remove duplicate token
div
#1390 (@XhmikosR) - Remove version number from the Font Awesome folder. #1394 (@XhmikosR)
- Remove the unused jQuery UI. #1361 (@XhmikosR)
- remove outdated local help page, link to docs instead #1404 (@PromoFaux )
- Deduplicate js #1376 (@XhmikosR)
- Move JS files where they are used. #1389 (@XhmikosR)
- Update CI config #1401 (@XhmikosR)
- Add
eslint-plugin-compat
#1403 (@XhmikosR) - CSS cleanup #1366 (@XhmikosR)
- Update daterangepicker and add minified build #1380 (@XhmikosR)
- Move animate.min.css style in the pages that use it #1402 (@XhmikosR)
- Use
prop()
for thedisabled
attribute. #1406 (@XhmikosR) - gravity.js: replace
removeAttr()
withprop()
#1407 (@XhmikosR) - Use
$(fn)
#1408 (@XhmikosR) - network.js: minor consistency changes #1413 (@XhmikosR)
- Show “zero” delays in the Query Log #1421 (@DL6ER)
- Update chartjs to v2.9.3 #1424 (@XhmikosR)
- Update jQuery to v3.5.1. #1362 (@XhmikosR)
- Extend warning shown on server-side data processing errors #1431 (@DL6ER)
- Update xo to v0.32.0 and regenerate package-lock.json #1430 (@XhmikosR)
- Enable radix ESLint rule #1374 (@XhmikosR)
- Fix typo “Long term” -> “Long-term” #1436 (@XhmikosR)
- Improve messages on the domain management pages #1420 (@DL6ER)
- Store NULL for empty descriptions and comments in the groups database tables #1442 (@DL6ER)
- Remove the unused iCheck.min.js #1451 (@XhmikosR)
- network.js: use
utils.datetime()
#1452 (@XhmikosR) - footer.js: remove dead code. #1453 (@XhmikosR)
- Improve filtering on table pages #1222 (@DL6ER)
- Only show query types for which the count is larger than zero #1475 (@DL6ER)
- Remove HTML from titles when not needed. #1460 (@XhmikosR)
- Update devDependencies and regenerate package-lock.json #1467 (@XhmikosR)
- Improve conditional forwarding settings #1208 (@DL6ER)
- Always use best matching subnet for clients #753 (@DL6ER)
- Improve self-generated backtraces #774 (@DL6ER)
- Allow no/false and yes/true for all config options #796 (@DL6ER)
- Use higher priority for FTL #798 (@DL6ER)
- Terminate main process when a fork fails #818 (@DL6ER)
Fixes
- Minor bugfix for Binary detection #3347 (@PromoFaux)
- fixes #3217 by checking for existing pihole group #3246 (@pvogt09)
- Failsafe checks for available APT package #3203 – Fixes #2888 (@MichaIng)
- fix #3336 by creating adlist file even if no list was selected by user #3388 (@pvogt09)
- Updated gravity.sh to allow semicolons in URLs #3446 – Fixes #3444 (@pgl)
- Create adlist file even if no options are selected on install #3463 (@jesterchen)
- Replace possible “#” by “#” to fix AdminLTE#1427 #3470 (@DL6ER)
- Update adminLTE to 2.4.18 #1272 – Fixes #1270 (@PromoFaux / @roccivic)
- Use `REPLACE` into instead of `INSERT` into when adding a black/whitelist item #1286 (@PromoFaux)
- Fix autocomplete bug on group pages #1287 (@DL6ER)
- Make sure #ip-custom field is editable (PARSE_ARP_CACHE=false) #1291 (@jacklul)
- Lessen chance of elements being blocked by browser blockers #1296 (@PromoFaux)
- header: fix
aria-expanded
for user-menu dropdown #1304 (@XhmikosR) - Fix summary header #1312 (@PromoFaux)
- Settings: fix IPv6 overflowing on mobile #1308 (@XhmikosR)
- Add proper IP sorting to the groups->client table #1269 (@DL6ER)
- Fix teleporter to use the 24-hour format. #1315 (@XhmikosR)
- api_FTL: Remove duplicate semicolon #1324 (@XhmikosR)
- require auth for the customDNS page #1338 (@PromoFaux) (Special thanks to @hsegnitz for reporting)
- auditlog: fix buttons grouping #1333 (@XhmikosR)
- Properly delete the
persistentlogin
cookie #1350 (@XhmikosR) - Fix queries Clear Filters button #1299 (@XhmikosR)
- Remove an error log output that was presumably leftover from debugging #1326 (@PromoFaux)
- pi-hole.css: fix glow to use the current color #1379 (@XhmikosR)
- Allow semi colons in URLS #1392 (@PromoFaux )
- (Re-)Add API endpoints for list manipulations #1387 – Fix #1297 (@DL6ER)
- Fix sidebar docs link #1405 (@XhmikosR)
- Fix long-term blocking calculations #1419 (@DL6ER)
- Fix regression introduced in group entry changes #1425 (@PromoFaux)
- Fix tailog pages IDs #1429 (@XhmikosR)
- Dont hard fail when adding duplicate adlists #1449 (@PromoFaux )
- Prevent possible XSS attack vector in the input fields of the group section #1443 (@PromoFaux) – (Special thanks to Dino at @telspacesystems and also @spartacvs / RE: CVE-2020-14971)
- Fixes #1227 Fix possible warning when unlinking files #1251 (@willemstuursma)
- Tweak/custom dns (fix issue raised on discourse)#1472 (@PromoFaux)
- Process cached SRV records #769 (@DL6ER)
- Store client group information in shared memory #787 (@DL6ER)
- Fix broken
RESOLVE_IPV{4,6}
setting #792 (@DL6ER) - Reacquire client and upstream pointers after a name resolution #797 (@DL6ER)
- Do not listen to reload signals in forks #811 (@DL6ER)
- [dnsmasq] Fix a possible buffer overflow when handling TCP requests #813 #822 (@fhriley / @DL6ER)