A touchscreen dashboard for your Pi-hole
22 designs, free and open source. Pick one and try it right here: it runs live, on made-up numbers.
What it does
- The numbers at a glanceBlocked in the last 24 h, the blocked share, total queries and the domains just blocked.
- Pause with one tapBlocking pauses for 5 minutes, with a countdown and Resume.
- Let a site throughTap a blocked domain to see which list caught it. Allow it for an hour or for good, with press and hold and Undo.
- Safe by designThe Pi-hole password never reaches the browser. The service listens on the Pi only and never changes Pi-hole’s settings.
Build the screen
The hardware this runs on: a Raspberry Pi 4 behind a 4.3" touchscreen in a 3D-printed case. About an afternoon to put together, plus a six-hour print in PETG.
Drag to turn, scroll or pinch to zoom. The Pi, screen and boards are stand-ins to show the fit.
Print status: the base and retainer (rev 4) and the rev 5 shell are printed and in use. Rev 6 only raises the bottom edge of the screen window 1 mm to even out the border, and hasn’t been printed yet.
Enclosure files: CC BY 4.0, print and remix freely with credit. Print settings and assembly steps are in enclosure/README.md.
You need
- Raspberry Pi 4 Model B2 GB is plenty for Pi-hole and the screenAmazon ↗
- Waveshare 4.3" DSI touchscreen800×480 capacitive, ribbon to the Pi's DSI port, no driver neededAmazon ↗
- GeeekPi Armor Lite coolerHeatsink with a built-in fan; wires to pins 4, 6 and 7. The case is sized for itAmazon ↗
- USB-C power supply, 5.1 V 3 A, right-angle plugThe socket sits just under the case roof, so a straight plug won’t fit. The official supply works with a 90° USB-C adapterAmazon ↗
- microSD card, 16 GB or moreTo install Raspberry Pi OS (and to keep as a spare if you boot from SSD)
To assemble the case
- 4 × M3 heat-set inserts, 5.7 mmPressed into the shell with a soldering iron (ruthex RX-M3x5.7)Amazon ↗
- 4 × M3 × 8 countersunk screwsBase into the shell, from underneath (DIN 965)
- 4 × M2.5 × 25 and 2 × M2.5 × 10 screwsPan or cap head. Don’t go longer than 25 mm: it can reach the display panel
Optional: boot from an SSD
Optional: screen sleeps when you walk away
- HLK-LD2410C radar sensorSees people even sitting still; this pack includes Dupont wiresAmazon ↗
| LD2410C | Pi pin | |
|---|---|---|
| VCC | 2 | 5 V |
| GND | 14 | ground |
| OUT | 16 | GPIO 23 |
| RX / TX | 8 / 10 | optional, for tuning over serial |
Install with sudo PRESENCE=1 ./install.sh. Without a sensor the screen just stays on. Tune the range in Hi-Link’s phone app if it sees too far.
Plain Amazon links, no affiliate tags. Listings change, so check the model before you buy.
Install on your Pi
You need
- A Raspberry Pi running Pi-hole v6
- Raspberry Pi OS with the desktop (Bookworm or later)
- An 800×480 touchscreen
The installer adds a small Python service and a full-screen Chromium window. Python standard library only, nothing loaded from the internet.
- Get the code on the Pi
git clone https://github.com/gsylvest/pihole-dash-themes.git && cd pihole-dash-themes - Run the installer as your desktop user
sudo ./install.sh - In Pi-hole’s web admin, create an app passwordSettings → Web interface / API (switch to Expert if you don’t see it)
- Save it on the Pi and paste it when asked
read -rs -p "Paste app password: " P; echo; printf '%s' "$P" | sudo tee /etc/pihole-dash/app-password >/dev/null; unset P; sudo chmod 600 /etc/pihole-dash/app-password; sudo systemctl restart pihole-dash - Pick a design on the screen under Style
Make your own design
A design is two files in app/themes/: a JavaScript file that draws it and a CSS file that styles it. Copy hifi to start; it’s about 70 lines. Test it in any browser with ?demo&theme=yourid, no Pi needed.
window.PiSkins.add("myid", {
mount(el) { /* build it once */ },
render(el, m) { /* every second: m.data.blocked,
m.ticker, m.paused … */ },
unmount() { /* stop animations */ },
}, "My Design", "One-line description", thumb);