Pi-hole UI error after update to v6.4

The issue I am facing:

After updateing to the recend version my UI is missing “DNS CONTROL” menu.
I’m unable to edit / change my static DNS eintries for some local services (MQTT endpoints)
The UI is throwing errors like


and the clickable menu is missing

Details about my system:

I'm running Raspberry Pi Model B Rev 2 with Raspbian GNU/Linux 11.
The frontend is running apache2 version 2.4.65

What I have changed since installing Pi-hole:

The initial installation has been running several years without major problems and maintenace.
A few days ago I have been missing my previously added blacklist and readding them did not work.
That invited me to update the system. After that I had to modify the apache configuration to run
lua scripts properly, with success, but the menu is missing and the above error is showing up.

Anybody out there with ideas ? Thanks

Apache can't correctly execute the web interface pages.

The Lua code uses some functions that connects directly with pihole-FTL, but Apache will never know how to call FTL functions. Pi-hole v6 needs the default web server, embedded in pihole-FTL. Other web servers won't be able to execute the pages.


I noticed you are using port 8443.

If you are not using Apache to connect (port 8443 is used as Pi-hole alternative port), then the issue is not related to Apache. If this is the case, please generate a Debug log, upload it when asked and post here only the Token.

Thanks, since 8443 ist also used for different other internal stuff like gpstracker, rrd, kimai, ...
I decided to run a fresh install and use 8080 (port was availavble) only for pihole.
The admin UI is working again properly without apache only using pihole-FTL,
however I didn't understand completely why serving exact the same pages by apache makes the difference.

OK, thanks so far ...

Cheers DG3XT

I didn't understand completely why serving exact the same pages by apache makes the difference.

Apache doesn't actually execute pages. Apache uses modules to connect with other programs and these programs will execute the pages and return HTML code (or something else) to be served.

Using a PHP page as an example:

When Apache needs to serve a PHP page, Apache uses the PHP module.
This module sends the code to the PHP interpreter. PHP executes all functions, but when PHP needs to access an external resource (database, filesystem, graphic library, etc), PHP will need to use an external module.
After the PHP code is executed, Apache will serve the output as a page.

How this works in our case:
Pi-hole pages were developed to be executed by pihole-FTL. The web interface pages contain custom functions, specifically coded to execute some internal FTL functions.

In this case, pihole-FTL is the web server, it is also the Lua interpreter and it can directly access some internal data.
(consider this as a replacement of a hypothetical combo of Apache + Lua module + FTL module).

Even if you install a Lua module, this module won't know what FTL is.
Lua interpreter won't be able to execute these functions, because there is no piholeFTL-Lua module for Apache (just like there is no such module for PHP or other languages).

Only pihole-FTL can execute the complete code.