Pi-Hole
pi-hole.netNetwork-level advertisement and Internet tracker blocking application which acts as a DNS sinkhole. Pi-Hole can significantly speed up your internet, remove ads and block malware. It comes with a nice web interface and a mobile app with monitoring features, it's open source, easy to install and very widely used.
- Homepage:pi-hole.net
- GitHub:github.com/pi-hole/pi-hole
- Privacy:discourse.pi-hole.net/privacy
- Web info:web-check.xyz/check/pi-hole.net
Pi-Hole Privacy Policy
Privacy Policy Summary
- Information is provided about what kind of information they collect
- There is a date of the last update of the agreements
- The court of law governing the terms is in California, U.S.A.
- The posting of pornographic content is prohibited
- Your IP address is collected, which can be used to view your approximate location
- You must provide your identifiable information
- Your personal data is not sold
- Defend, indemnify, hold harmless; survives termination
Score
Documents
- Privacy Created 11 Jul 23, Last modified 4 months ago
- Discourse Terms of ServiceCreated 11 Jul 23, Last modified 4 months ago
- Trademark Rules And Brand GuidelinesCreated 18 Jun 26, Last modified 4 months ago
- Discourse Privacy PolicyCreated 11 Jul 23, Last modified 4 months ago
About the Data
This data is kindly provided by tosdr.org. Read full report at: #9079
Pi-Hole Source Code
Author
Description
A black hole for Internet advertisements
Homepage
https://pi-hole.netRepository
- LicenseOther
- Created08 Jun 14
- Primary languageShell
- Size9,293 KB
- Stars61,436
- Forks3,334
- Watchers61,436
Top Contributors
@PromoFaux (1434)
@DL6ER (1261)
@yubiuser (973)
@dschaper (785)
@AzureMarker (448)
@jacobsalmela (382)
@dependabot[bot] (249)
@WaLLy3K (166)
@bcambl (129)
@rrobgill (79)
@rdwebdesign (77)
@MichaIng (45)
@diginc (29)
@pvogt09 (27)
@darkexplosiveqwx (25)
@mospaeda (20)
@airencracken (19)
@Fourdee (19)
@tuplink (19)
@ChadBHowell (17)
@brontide (12)
@gstrauss (11)
@mmotti (11)
@XhmikosR (11)
@RamSet (11)
@Gusher123 (10)
@yoosi (10)
@fayetted (8)
@mwoolweaver (8)
@korhadris (8)
@cryptomilk (7)
@jim-liu (7)
@LudovicRousseau (7)
@ProtoFoo (7)
@tryallthethings (7)
@rmceoin (7)
@jpgpi250 (7)
@realtebo (6)
@ganto (5)
@ryanknapper (5)
@jacklul (5)
@Mograine (5)
@pmo3 (5)
@mgziminsky (5)
@Forceflow (5)
@jlagermann (5)
@jbzdarkid (4)
@deHakkelaar (4)
@Rauf00 (4)
@Mausy5043 (4)
@lschloetterer (4)
@rosskevin (4)
@das7pad (4)
@haguenau (4)
@lightswitch05 (4)
@technicalpyro (3)
@xCh12i5 (3)
@gitbees165 (3)
@slamanna212 (3)
@jesterchen (3)
@georou (3)
@casperklein (3)
@a1346054 (3)
@tlk (3)
@mterron (3)
@PiotrTyrakowski (3)
@7h3ju57 (3)
@Flokx (3)
@deathbybandaid (3)
@clinton3141 (3)
@hvnsweeting (2)
@UltChowsk (2)
@stonedbovines (2)
@DarkR0ast (2)
@Roots84 (2)
@skittels0 (2)
@scboucher (2)
@ravron (2)
@Sh4d1 (2)
@wblew (2)
@WouterServaes (2)
@jeremysherriff (2)
@iaintshootinmis (2)
@raincoats (2)
@snapsl (2)
@spmfox (2)
@trick77 (2)
@trinapicot (2)
@Seva41 (2)
@10adnan75 (2)
@andras-tim (2)
@ryrun (2)
@akurth (2)
@bolausson (2)
@coleturner (2)
@craigmayhew (2)
@dnicolson (2)
@chubchubsancho (2)
@hawson (2)
@Omoeba (2)
Recent Commits
darkexplosiveqwx(17 Oct 26)
Core v6.5 (#6719)
darkexplosiveqwx(17 Oct 26)
Silence ShellCheck SC2024 for local adlist read in gravity (#6722)
Adam Warner(17 Oct 26)
Silence ShellCheck SC2024 for local adlist read in gravity The output buffer belongs to the calling user, so only the read is meant to run as the pihole user. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Signed-off-by: Adam Warner <[email protected]>
Adam Warner(17 Oct 26)
Merge commit from fork Read local adlists as the user whose access was checked
darkexplosiveqwx(17 Oct 26)
Make test_symlink_safety.bats executable (#6721)
Adam Warner(17 Oct 26)
Add diffutils to RPM dependencies and CentOS test images installLogrotate calls diff, which is not present on minimal CentOS images, so the logrotate upgrade was skipped. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Signed-off-by: Adam Warner <[email protected]>
Adam Warner(17 Oct 26)
Fix gravity test message for non-root file read check Gravity now runs as the pihole user at this point, so it reports "current user 'pihole'" rather than the root-path message. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Signed-off-by: Adam Warner <[email protected]>
Adam Warner(17 Oct 26)
Make test_symlink_safety.bats executable The smoke-tests workflow requires all .bats files to be executable. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Signed-off-by: Adam Warner <[email protected]>
darkexplosiveqwx(17 Oct 26)
save/store listsCacheDir in same directory as gravity.db (#6489)
Adam Warner(17 Oct 26)
Merge commit from fork Make `/opt/pihole` read-only for the FTL service
DL6ER(19 Sept 26)
Keep `CAP_CHOWN` in the ambient set of the FTL service The installer puts no file capabilities on `pihole-FTL`, so on a systemd installation the ambient set is the only place FTL gets `CAP_CHOWN` from. Without it, FTL cannot take over files root created in `/etc/pihole` and cannot set the RTC. The inheritance this was meant to stop is closed in FTL itself: v6.7.1 removes `CAP_CHOWN` from its inheritable and ambient sets before it starts any thread and keeps it across its own restart. The read-only `/opt/pihole` stays. Signed-off-by: DL6ER <[email protected]>
DL6ER(16 Aug 26)
Stop granting CAP_CHOWN to everything pihole-FTL executes The unit granted CAP_CHOWN through AmbientCapabilities. The ambient set is inherited across execve(), so every process FTL starts - a DHCP script, anything a Lua page spawns - could take ownership of files it does not own, which is a short step from root. Any code execution in the FTL service context was therefore a local privilege escalation. FTL receives CAP_CHOWN from the file capabilities on its binary (setcap ...+eip) for the file ownership changes it makes at startup and for the RTC device, and it drops the capability once startup is done. A child that is not pihole-FTL does not inherit file capabilities, so removing CAP_CHOWN from the ambient set closes the inheritance without affecting FTL. Also mark /opt/pihole read-only for the service: ProtectSystem=full leaves it writable, and it holds the root-run prestart script. FTL only reads and executes from there. Signed-off-by: DL6ER <[email protected]>
Dominik(17 Oct 26)
Flush the last 24 hours of queries through the FTL API (#6716)
Adam Warner(17 Oct 26)
Merge commit from fork fix: don't let root write the version file into pihole-owned /etc/pihole
Adam Warner(17 Oct 26)
Merge commit from fork Never write to config-supplied paths as root
Adam Warner(17 Oct 26)
Merge commit from fork Only accept a PID naming a running `pihole-FTL`
Adam Warner(17 Oct 26)
Move existing listsCache when gravity.db lives outside /etc/pihole With files.gravity pointing outside /etc/pihole, listsCacheDir now follows gravity.db. migrate_to_listsCache_dir() only handled the pre-v6 loose list.* files, so an existing /etc/pihole/listsCache was left behind and all lists were re-downloaded, losing their ETag/sha1 state. Move an existing ${piholeDir}/listsCache into ${listsCacheDir} when the two differ and remove the old (then empty) directory. The .sha1 files contain absolute paths, so rewrite ${piholeDir}/listsCache/ to ${listsCacheDir}/ for this case. The pre-v6 migration keeps its own sed so the two rewrites cannot interfere with each other. Co-authored-by: DL6ER <[email protected]> Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Signed-off-by: Adam Warner <[email protected]>
Adam Warner(17 Oct 26)
Use parameter expansion and path canonicalization to safely parse local file URIs (#6688)
Adam Warner(17 Oct 26)
Pass the adlist source URL to FTL's `parseList` (#6706)
DL6ER(17 Oct 26)
Extract the v6.4.3 logrotate reference with `awk` in the test BusyBox `sed` keeps the range start line with `{//!p}`, so the Alpine test wrote a broken reference file. Signed-off-by: DL6ER <[email protected]>
DL6ER(11 Oct 26)
Test `getFTLPID()` and the logrotate migration Signed-off-by: DL6ER <[email protected]>
DL6ER(11 Oct 26)
Only accept a PID naming a running `pihole-FTL` `/run/pihole-FTL.pid` is owned by the `pihole` user, but root reads it. `getFTLPID()` only rejected values starting with a non-digit, so `1+a[$(cmd)]` passed and was executed by the arithmetic `[[ ... -eq ... ]]` checks in `pihole`. The logrotate `postrotate` sent `kill -USR2` to whatever the file contained, including `-1`. 1. `getFTLPID()` accepts only a plain number whose `/proc/<pid>/comm` is `pihole-FTL`. 2. The logrotate `postrotate` uses `getFTLPID()`. The installer swaps this line in existing files, which are otherwise never replaced. Signed-off-by: DL6ER <[email protected]>
DL6ER(24 Sept 26)
Pass the adlist source URL to FTL's `parseList` `parseList` currently receives the cached file, the target database and the adlist ID. This adds the originating source URL as a final, quoted argument so FTL can take the source into account when parsing a list. This relies on the matching FTL change that reads the extra argument, so it should land together with that FTL bump. Signed-off-by: DL6ER <[email protected]>
DL6ER(16 Oct 26)
Read local adlists as the user whose access was checked The read check for `file://` lists resolves the path through the kernel as the `pihole` user, while curl normalizes the URL path itself before opening it, possibly as root. Both can end up at different files. Read local lists with `cat` as the same user the check ran as instead. Signed-off-by: DL6ER <[email protected]>
Michael Woolweaver(17 Oct 26)
Fix parsing of local file URIs in gravity Strip the "file:" scheme and an empty authority using parameter expansion, so that both file:///path and file:/path resolve to /path. The previous cut-based parsing turned file:/path into a relative path. Update the /etc/shadow regression test to expect the permission error now that file:/./etc/shadow resolves to the absolute /etc/shadow. Co-authored-by: DL6ER <[email protected]> Signed-off-by: Adam Warner <[email protected]>
Adam Warner(16 Oct 26)
Improve gravity.db schema (#6575)
DL6ER(16 Oct 26)
Merge branch 'development' into tweak/improve_gravity_db Signed-off-by: DL6ER <[email protected]>
Dominik(16 Oct 26)
Fix URL parsing in gravity.sh (#6689)
Adam Warner(09 Oct 26)
test: prestart must not follow symlinks at the version and lease file paths Regression test for the original GHSA-xch2-4qxw-g5vj fix: with root-only files planted behind symlinks at /etc/pihole/versions and /etc/pihole/dhcp.leases, prestart must leave them untouched. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Signed-off-by: Adam Warner <[email protected]>
Adam Warner(09 Oct 26)
fix: only trust git repositories the pihole user cannot modify mark_repos_safe() adds the Core and Web repositories to git's system-wide safe.directory list so that the (now unprivileged) updatechecker can read local versions. The Web path comes from pihole.toml, which the pihole user can edit. Pointing it at a directory that user controls and swapping in a crafted repository would make root run git in a repository it was told to trust, e.g. during `pihole -up`, which is a path to running code as root. Only trust a path that - resolves, without symlinks, to a real directory, and - is root-owned together with its .git and not world-writable, i.e. cannot be modified by the pihole user. The resolved path is what gets recorded. Also make sure the system git config is world-readable. git silently ignores one the pihole user cannot read, which is exactly what happens when it is created under a restrictive umask (found by the fresh install test, which installs with umask 0027). Tests cover each rule, idempotency and the umask case. Reported-by: Keith Linneman (LinnemanLabs) Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Signed-off-by: Adam Warner <[email protected]>
Pi-Hole Security
Security Advisories (11)
- lowPatchedCVSS 2.2
GHSA-g63w-24cr-p3w6file:// adlist read check and curl can resolve different files
- highPatchedCVSS 7.3
GHSA-mff6-cjc4-5wq9Pi-hole: gravity.sh chowns arbitrary directory to pihole via files.gravity config path (root LPE)
- highPatchedCVSS 7.8
GHSA-cf36-4hhc-8398Local privilege escalation from `pihole` user to root via CVE-2026-41489 fix bypass
- highPatchedCVSS 7.8
GHSA-xch2-4qxw-g5vjarbitrary root file clobber / chmod / disclosure via updatecheck.sh cron following /etc/pihole/versions symlink
- highPatchedCVSS 7.8
GHSA-j8vh-6fp9-cjcxLocal privilege escalation through pihole-FTL ambient CAP_CHOWN capability
- highPatchedCVSS 8.8
CVE-2026-50130Local privilege escalation from `pihole` user to root via `/etc/pihole/logrotate`
- highPatchedCVSS 8.8
CVE-2026-41489Local privilege escalation via config-controlled path in root-executed service hooks
- mediumPatchedCVSS 6.4
CVE-2026-33727Local Privilege Escalation (post-compromise, pihole -> root).
- highPatchedCVSS 8.5
CVE-2024-34361Blind Server-Side Request Forgery (SSRF) can lead to Remote Code Execution (RCE)
- highPatchedCVSS 7.6
CVE-2024-28247Authenticated Arbitrary File Read with root privileges
- mediumPatched
CVE-2021-29449Multiple Privilege Escalation Vulnerabilities Pihole
Pi-Hole Website
Website
Pi-hole – Network-wide Ad Blocking
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address162.244.93.14
- Hostnamelv-shared04.dapanel.net
- LocationLas Vegas,Nevada,United States of America,NA
- ISPWebhosting Holdings LLC
- ASNAS965
Associated Countries
DE
NL
US
Safety Score
Website marked as safe
100%
Trackers
No known trackers found
Blacklist Check
pi-hole.net was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
Pi-Hole Docker
Container Info
pihole
A Linux network-level advertisement and Internet tracker blocking application which acts as a DNS sinkhole.
View on DockerHub
pihole/pihole:latestRun Command
docker run -d \ -p 53:53/tcp \ -p 53:53/udp \ -p 67:67/udp \ -p 1010:80/tcp \ -p 4443:443/tcp \ -v /portainer/Files/AppData/Config/PiHole:/etc/pihole \ -v /portainer/Files/AppData/Config/PiHole/DNS:/etc/dnsmasq.d \ --restart=unless-stopped \ pihole/pihole:latest
Compose File
version: 3.8
services:
pi-hole:
image: "pihole/pihole:latest"
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "1010:80/tcp"
- "4443:443/tcp"
volumes:
- "/portainer/Files/AppData/Config/PiHole:/etc/pihole"
- "/portainer/Files/AppData/Config/PiHole/DNS:/etc/dnsmasq.d"
restart: unless-stoppedPort List
- 53:53/tcp
- 53:53/udp
- 67:67/udp
- 1010:80/tcp
- 4443:443/tcp
Volume Mounting
- Container PathHost Bind
- /etc/pihole/portainer/Files/AppData/Config/PiHole
- /etc/dnsmasq.d/portainer/Files/AppData/Config/PiHole/DNS
Pi-Hole Reviews
More Self-Hosted Network Security
Powerful open source web content filter.
Open-source self-hosted VPN and firewall built on WireGuard®.
A hardened, versatile, state-of-the-art open source firewall based on Linux. Its ease of use, high performance and extensibility make it usable for everyone.
Widely used, open source firewall/router.
A simple way to set up a home VPN on any Debian server. Supports OpenVPN and WireGuard with elliptic curve encryption keys up to 512 bit. Supports multiple DNS providers and custom DNS providers - works nicely along-side PiHole.
Another DNS server for blocking privacy-invasive content at its source. Technitium doesn't require much of a setup, and basically works straight out of the box, it supports a wide range of systems (and can even run as a portable app on Windows). It allows you to do some additional tasks, such as add local DNS addresses and zones with specific DNS records. Compared to Pi-Hole, Technitium is very lightweight, but lacks the deep insights that Pi-Hole provides, and has a significantly smaller community behind it.
Detect if you have a malware-infected computer on your network, and powerful network analysis framework and monitor.
About the Data: Pi-Hole
Edit Pi-Hole Data
You can edit Pi-Hole's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external
sources, a list of these can be found data documentation.
Origin Data
Modify Data
API
You can access Pi-Hole's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/pi-holeThe REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share Pi-Hole
Help your friends compare Self-Hosted Network Security, and pick privacy-respecting software and services.
Share Pi-Hole and Awesome Privacy with your network!
