explaingit

geerlingguy/internet-pi

4,687JinjaAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

Automated Ansible scripts that turn a Raspberry Pi into a home ad-blocker and internet speed monitor, with a Grafana dashboard, configured with a single command.

Mindmap

mindmap
  root((internet-pi))
    What it does
      Ad blocking DNS
      Speed monitoring
      Visual dashboard
    Tech used
      Ansible automation
      Docker containers
      Pi-hole Grafana
    Hardware
      Raspberry Pi 4
      Home network
    Optional extras
      Smart plug power
      Air quality sensors
      Starlink stats
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Block ads across your entire home network at the DNS level, affecting all devices including phones and smart TVs.

USE CASE 2

Track your home internet speed, ping times, and uptime over time with visual charts in a Grafana dashboard.

USE CASE 3

Monitor power usage from Shelly smart plugs or air quality from AirGradient sensors on the same dashboard.

USE CASE 4

Set up Starlink satellite internet connection statistics and monitoring on a Raspberry Pi.

Tech stack

AnsibleJinjaDockerPi-holeGrafanaRaspberry Pi OS

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires a Raspberry Pi 4 or newer (older models have slow network interfaces) plus Ansible installed on the Pi before running the playbook.

In plain English

Internet Pi is a set of automated configuration scripts for turning a Raspberry Pi into a home network monitoring and ad-blocking device. Rather than manually installing and configuring software, you run a single command and the scripts handle the setup for you. The result is a Pi that blocks ads across your entire home network, monitors your internet connection speed and reliability over time, and displays everything in a visual dashboard. The two main features are Pi-hole and an internet monitoring stack. Pi-hole intercepts all DNS requests on your network, which is the lookup process your devices use to find websites by name. By running the lookup through the Pi, it can block requests to known ad servers before they ever reach your devices. The monitoring side runs regular speed tests and connection checks, then stores the results so you can see charts of your upload and download speeds, ping times, and uptime over days and weeks. Optional extras can be enabled through a configuration file. These include monitoring for Shelly smart plugs to track power usage, air quality monitoring through AirGradient sensors, and statistics for Starlink satellite internet connections. All of these feed into the same Grafana dashboard that handles the base internet monitoring. Setting up Internet Pi requires installing Ansible on the Pi first, which is a tool that applies configuration instructions from a file. Once Ansible is installed, you clone the repository, copy two example configuration files, edit them with your preferences, and run the main playbook command. The scripts then pull down the necessary Docker containers and configure everything. The README recommends a Raspberry Pi 4 or newer for reliable results, noting that older models have slower network interfaces that cap speed test results. The project is built around Raspberry Pi OS or Debian, and may work on Ubuntu or Arch Linux but those are not regularly tested. A note in the README warns that the internet monitoring feature uses a meaningful amount of data each day due to automated speed tests, which could be a concern on metered connections.

Copy-paste prompts

Prompt 1
I have a Raspberry Pi 4 and want to set up internet-pi to block ads on my home network, walk me through the Ansible setup steps from scratch.
Prompt 2
How do I enable the optional Shelly smart plug power monitoring in internet-pi's configuration file?
Prompt 3
I set up internet-pi and want to add my own custom Grafana dashboard panels alongside the built-in ones, how do I do that?
Prompt 4
What is the daily data usage impact of internet-pi's automated speed tests, and how do I reduce the test frequency on a metered connection?
Open on GitHub → Explain another repo

← geerlingguy on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.