aboutsummaryrefslogtreecommitdiff
path: root/build/eero/index.html
blob: 4724a73a40cf2e8a0709451014550ed58ec2dcc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<!doctype html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<meta name="color-scheme" content="dark light">
	<link rel="icon" href="data:,">
	<title>Setting Up a Pi-hole Server with Eero</title>
	<link href="/atom.xml" type="application/atom+xml" rel="alternate" title="Atom feed for blog posts" />
	<link href="/rss.xml" type="application/rss+xml" rel="alternate" title="RSS feed for blog posts" />
<style>*{box-sizing:border-box;}body{font-family:sans-serif;line-height:1.33;margin:0 auto;max-width:650px;padding:1rem;}blockquote{background:rgba(0,0,0,0.1);border-left:4px solid;padding-left:5px;}img{max-width:100%;}pre{border:1px solid;overflow:auto;padding:5px;}table{text-align:left;width:100%;}.footnotes{font-size:90%;}</style>
</head>

<nav>
	<a href="#menu">Menu &darr;</a>
</nav>

<main>
<h1 id="setting-up-a-pi-hole-server-with-eero">Setting Up a Pi-hole Server with Eero</h1>
<p>2022-03-14</p>
<p>For the past few years, I&#8217;ve been using a set of Eero routers as my home mesh network. It&#8217;s worked fairly great in that time and even seamlessly transitioned without any hiccups when my family moved house. During the initial setup, I installed Pi-hole on a Raspberry Pi Zero WH because advertisements and tracking scripts suck.</p>
<p>It was an easy process to get everything up and running, but I did notice a lack of detailed steps online for those specifically using Eero systems. So, I thought I would document this process here with the hope that it will help someone else along the way (or at the very least remain a semi-permanent place for my own reference).</p>
<hr/>
<p>FYI: You can pay for Eero Secure and allow them to handle ad&#47;tracker blocking for you. Personally, I prefer to have complete control over my blocklists and usage data. YMMV.</p>
<hr/>
<h2 id="setting-up-the-pi-hole-server">Setting Up the Pi-hole Server</h2>
<p>Before we get into the step-by-step details, here are the required items you&#8217;ll need:</p>
<ol>
<li>Raspberry Pi device (I recommend the Pi Zero for simplicity and low cost)</li>
<li>microSD card preloaded with <a href="https://www.raspberrypi.com/software/operating-systems/">Raspberry Pi OS Lite</a> (having a desktop GUI is overkill for our use case)</li>
<li>micro USB to ethernet adapter (check your local Amazon)</li>
<li>Patience!</li>
</ol>
<p>Before you place your microSD card into the Pi and boot it up, connect it to your local computer (via USB adapter) - we will need to add some files first. Once loaded into the <code>boot</code> folder, add an empty file simply called <code>ssh</code> (no extensions). Next open your preferred text editor and enter the following code, editing the content to match your own country code and home network settings:</p>
<pre><code>country=US
ctrl_interface=DIR=&#47;var&#47;run&#47;wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="WIFI_SSID"
    scan_ssid=1
    psk="WIFI_PASSWORD"
    key_mgmt=WPA-PSK
}
</code></pre>
<p>Save this file as <code>wpa_supplicant.conf</code> and add it to the <code>boot</code> directory as well.</p>
<p>You can now safely eject the microSD card and place it into your Raspberry Pi.</p>
<h2 id="plug-it-in-and-boot">Plug it in and Boot!</h2>
<p>Connect power to your Pi and give it a bit of time to boot up. Once you see a nice solid green LED, go back to your local computer&#8217;s terminal and enter the following command:</p>
<pre><code>ssh pi@raspberrypi.local
</code></pre>
<p>If everything was set up properly you will be asked to trust this device. Next, you will be prompted to enter the device password. The default password will be: <code>raspberry</code></p>
<p><strong>Important</strong>: This is assuming you don&#8217;t currently have any other Pi devices using this hostname parameter!</p>
<p>Once you are connected directly to the Pi, it&#8217;s best to check for updates:</p>
<pre><code>sudo apt update
</code></pre>
<p>&#8230;and if updates are in fact available, install them via:</p>
<pre><code>sudo apt upgrade
</code></pre>
<p>This next step is optional but I highly recommend it for security purposes. You should change both the hostname and password of this soon-to-be Pi-hole server. To do this simply run:</p>
<pre><code>sudo raspi-config
</code></pre>
<ol>
<li>Edit Hostname: navigate to <code>System Settings</code> &#8211;&#62; <code>Hostname</code></li>
<li>Edit Password: navigate to <code>System Settings</code> &#8211;&#62; <code>Password</code></li>
</ol>
<p>Once complete, reboot the Pi. Just remember that when you try to reconnect to this device via SSH you&#8217;ll need to use both of these new parameters instead of the defaults.</p>
<h2 id="installing-pi-hole">Installing Pi-hole</h2>
<p>This is the easy part:</p>
<pre><code>curl -sSL https:&#47;&#47;install.pi-hole.net | bash
</code></pre>
<p>Pi-hole runs a full install script that walks you through step-by-step on setting things up. It&#8217;s best to use the suggested defaults during the install - everything is pretty simple.</p>
<p>Near the end of the setup you&#8217;ll be show the newly created static IP for this Pi-hole server (both IPv4 and IPv6). Write these down for easy reference in a moment.</p>
<p>Once it&#8217;s finished, shutdown the Pi safely by running:</p>
<pre><code>sudo shutdown now
</code></pre>
<h2 id="hardware-setup">Hardware Setup</h2>
<p>With the Pi shutdown you can safely relocate it to where you have your modem and gateway Eero setup. Connect your new Pi-hole device to the secondary ethernet port on your gateway Eero[^1] and power it up. (This is where the microUSB to ethernet adapter for our Pi device is needed)</p>
<p>See the crude diagram below for visual reference:</p>
<ul>
<li><strong>Grey Wire</strong>: Incoming internet connection from ISP</li>
<li><strong>Blue Wire</strong>: Ethernet cord connecting modem to gateway Eero</li>
<li><strong>Red Wire</strong>: Ethernet cord connecting secondary Eero port to Pi Zero</li>
</ul>
<p>That&#8217;s all we need to do on the hardware side of things.</p>
<h2 id="configuring-the-eero-app">Configuring the Eero App</h2>
<p>With everything connected properly it&#8217;s finally time to setup our custom DNS settings through Eero.</p>
<ol>
<li>Open the Eero app (iOS or Android)</li>
<li>Navigate to <strong>Settings</strong> &#62; <strong>Network Settings</strong> &#62; <strong>DNS</strong></li>
<li>Select <strong>Customized DNS</strong> and enter both your saved IPv4 &#47; IPv6 values</li>
<li>Eero will prompt you to reboot your network - do it</li>
</ol>
<p>Next we need to add your Pi-hole&#8217;s address as an IPv4 reservation:[^2]</p>
<ol>
<li>In the Eero app, navigate to <strong>Settings</strong> &#62; <strong>Network Settings</strong> &#62; <strong>Reservations &#38; port forwarding</strong></li>
<li>Tap <strong>Add a reservation</strong> and include your Pi-hole&#8217;s IP address</li>
</ol>
<p>After the system reboots everything <em>should</em> be working as intended! You can check by navigating to your Pi-hole IP address in your browser.</p>
<h2 id="closing-thoughts">Closing Thoughts</h2>
<p>None of this stuff if groundbreaking, but my hope is that even one person across the internet finds this helpful! If you run into any major bugs, please leave a comment below and I&#8217;ll do my best to help out!</p>
<p>Best of luck blocking those pesky ads and trackers!</p>
<h2 id="refs">Refs</h2>
<ol>
<li>You don&#8217;t <em>have</em> to use your Eero gateway for this step (credit: <a href="https://old.reddit.com/user/RollMeAway83">&#47;u&#47;RollMeAway83</a>)</li>
<li>Thanks to <a href="https://old.reddit.com/user/YankeesIT">u&#47;YankeesIT</a> for pointing out that this is required not <em>optional</em></li>
</ol>
<footer role="contentinfo">
    <h2>Menu Navigation</h2>
    <ul id="menu">
        <li><a href="/">Home</a></li>
        <li><a href="/projects">Projects</a></li>
        <li><a href="/uses">Uses</a></li>
        <li><a href="/wiki">Wiki</a></li>
        <li><a href="/resume">Resume</a></li>
        <li><a href="/colophon">Colophon</a></li>
        <li><a href="/now">Now</a></li>
        <li><a href="/donate">Donate</a></li>
        <li><a href="/atom.xml">RSS</a></li>
        <li><a href="#top">&uarr; Top of the page</a></li>
    </ul>
    <small>
        Built with <a href="https://git.sr.ht/~bt/barf">barf</a>. <br>
        Maintained with ♥ for the web. <br>
        Proud supporter of <a href="https://usefathom.com/ref/DKHJVX">Fathom</a> &amp; <a href="https://nextdns.io/?from=74d3p3h8">NextDNS</a>. <br>
        The content for this site is <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>.<br> The <a href="https://git.sr.ht/~bt/bt.ht">code for this site</a> is <a href="https://git.sr.ht/~bt/bt.ht/tree/master/item/LICENSE">MIT</a>.
    </small>
</footer>