Pi-hole Web Interface: The Next Generation
We have been working on a new Web interface for Pi-hole (referenced internally as Next Gen Admin or NGAdmin). The existing interface built off of AdminLTE has served us well, but we have grown beyond the capabilities of an existing template. We’re also looking to implement an HTTP API.
This new interface is open source and we welcome your contributions as we have just made the repo public. Read on to learn more or check out a demo of the new interface here.
Why Are We Developing A New Interface?
This new interface shares a lot of the visual appearance with the existing one, but it has a lot more going on underneath the hood. One of the biggest benefits is that it removes the need for PHP on the server.
The new interface also:
- eliminates the reliance on server-side rendering scripts
- eliminates spaghetti code resulted from heavily modifying the base AdminLTE template
- reduces attack vectors by using JavaScript’s explicit imports instead of importing entire .php files
- makes it easier for new developers to figure out the code, which speeds up development
- makes the split between client and server code much more explicit
- allows us to easily generate fake data for testing
- includes all the benefits that come from React (ES6 JavaScript), including automatic DOM manipulations, stateful development, and component-based development
Contributing To This New Repo
If you are interested in helping develop this new interface, head on over to the GitHub repo. Even if this is your first project, we welcome all contributions.
Hello,
interestingly. Such other will be
Personally, I would keep these round charts in the new interface.
Or the user can choose himself as needed
But it's just my opinion. I'd like it to stay that way.
Thank you
The currently shown demo is much in the works and has been started already when the dashboard query types/forwards charts have been still over time instead of pie charts, clients over time didn't even exist and as such does not necessarily present the current state of the work. Also we experience a little bottleneck since a few months as all "core developers" are much more busy than they have been before (changing jobs, moving to new places, etc. etc.).
Currently, the mentioned HTTP API is somewhat higher in priority than the NG web interface as it doesn't make too much sense to code on the web interface without having the API ready to hand out the requested data.
One of the major reasons, if not even No. 1 of them, of making it public was the hope to attract people to look at it and contribute. As such we only put up a working demo that is far from completion to also open up the possibility for the community to shape it as they'd like to. The best way to do this, of course, is by submitting pull requests as it will be much easier for us to "just" review changes instead of having to code it ourselves. We have one core developer who is very experienced with React, but the others are still learning it.
Removing PHP helps remove one of the more troublesome dependencies in terms of support and allows us to create that beautiful and simplistic web interface more easily and quickly. The API will be much nicer and more standard than the current organic one.
The Query Log loads in data from an endpoint here:
https://github.com/pi-hole/web/blob/master/src/components/QueryLog.js#L29
That line calls this function to get the query data from the API:
https://github.com/pi-hole/web/blob/master/src/utils.js#L92
If you want to have real-time updates, we should implement that using web sockets. We could use server-side events, but that's not implemented in IE or Edge whereas web sockets are. Ajax would just mean we have to keep a long or short-poll connection to the server, which is not as nice or clean as the first two solutions.
ironic , web.pi-hole.io is being blocked by my pPiHole which is only using the OOTB supplied lists (+ one manual blacklist entry)
ho hum, /me adds to whitelist
Nope whitelisting and restarting DNSserver doesnt help