A Raspberry Pi Configuration for Internet connectivity
I have had a couple Pis doing random Internet-related duties for years. It's finally time to formalize their configs and make all the DNS/ad-blocking/monitoring stuff encapsulated into one Ansible project.
So that's what this is.
Internet Monitoring: Installs Prometheus and Grafana, along with a few Docker containers to monitor your Internet connection with Speedtest.net speedtests and HTTP tests so you can see uptime, ping stats, and speedtest results over time.
Pi-hole: Installs the Pi-hole Docker configuration so you can use Pi-hole for network-wide ad-blocking and local DNS. Make sure to update your network router config to direct all DNS queries through your Raspberry Pi if you want to use Pi-hole effectively!
Other features:
- Shelly Plug Monitoring: Installs a
shelly-plug-prometheus
exporter and a Grafana dashboard, which tracks and displays power usage on a Shelly Plug running on the local network. (This is disabled by default. Enable and configure using theshelly_plug_*
vars inconfig.yml
.) - Starlink Monitoring: Installs a
starlink
prometheus exporter and a Grafana dashboard, which tracks and displays Starlink statistics. (This is disabled by default. Enable and configure using thestarlink_enable
var inconfig.yml
.)
IMPORTANT NOTE: If you use the included Internet monitoring, it will download a decently-large amount of data through your Internet connection on a daily basis. Don't use it, or tune the internet-monitoring
setup to not run the speedtests as often, if you have a metered connection!
- Install Ansible. The easiest way (especially on Pi or a Debian system) is via Pip:
- (If on Pi/Debian):
sudo apt-get install -y python3-pip
- (Everywhere):
pip3 install ansible
- (If on Pi/Debian):
- Install requirements:
ansible-galaxy collection install -r requirements.yml
- Make copies of the following files and customize them to your liking:
-
example.inventory.ini
toinventory.ini
(replace IP address with your Pi's IP, or comment that line and uncomment theconnection=local
line if you're running it on the Pi you're setting up). -example.config.yml
toconfig.yml
- Run the playbook:
ansible-playbook main.yml
Visit the Pi's IP address (e.g. http://192.168.1.10/) and use the pihole_password
you configured in your config.yml
file.
Visit the Pi's IP address with port 3030 (e.g. http://192.168.1.10:3030/), and log in with username admin
and the password monitoring_grafana_admin_password
you configured in your config.yml
.
Note: The
monitoring_grafana_admin_password
is only used the first time Grafana starts up; if you need to change it later, do it via Grafana's admin UI.
A guide for backing up your configurations and monitoring data, and for keeping everything up to date is being worked on in Issue #7: Create upgrade / update guide.
MIT
This project was created in 2021 by Jeff Geerling.