Spaces:
Running
Running
Create I Bricked My School Chromebook With Pi-hole And Regret Everything.html
Browse files
I Bricked My School Chromebook With Pi-hole And Regret Everything.html
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>I Bricked My School Chromebook With Pi-hole And Regret Everything | TinyMemoryLM</title>
|
| 7 |
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 8 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 9 |
+
<link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono&display=swap" rel="stylesheet">
|
| 10 |
+
<style>
|
| 11 |
+
:root {
|
| 12 |
+
--black: #000000; --black-soft: #0a0a0a; --gray-1: #171717; --gray-2: #262626;
|
| 13 |
+
--gray-3: #363636; --gray-4: #525252; --gray-5: #737373; --gray-6: #a3a3a6;
|
| 14 |
+
--gray-7: #d4d4d4; --white: #ffffff; --accent: #ff4d00;
|
| 15 |
+
--font-sans: 'Geist', -apple-system, BlinkMacSystemFont, sans-serif;
|
| 16 |
+
--font-mono: 'Geist Mono', 'SF Mono', 'Fira Code', monospace;
|
| 17 |
+
--container-max: 700px;
|
| 18 |
+
}
|
| 19 |
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
| 20 |
+
html { font-size: 16px; scroll-behavior: smooth; }
|
| 21 |
+
body { font-family: var(--font-sans); background: var(--black); color: var(--gray-7); line-height: 1.7; -webkit-font-smoothing: antialiased; }
|
| 22 |
+
a { color: var(--white); text-decoration: none; transition: color 0.15s ease; }
|
| 23 |
+
a:hover { color: var(--accent); }
|
| 24 |
+
.container { max-width: var(--container-max); margin: 0 auto; padding: 0 24px; }
|
| 25 |
+
nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; background: rgba(0, 0, 0, 0.8); backdrop-filter: blur(12px); border-bottom: 1px solid var(--gray-2); padding: 16px 0; }
|
| 26 |
+
nav .container { display: flex; justify-content: space-between; align-items: center; }
|
| 27 |
+
.nav-brand { font-size: 18px; font-weight: 600; color: var(--white); display: flex; align-items: center; gap: 8px; }
|
| 28 |
+
.nav-brand span { color: var(--accent); }
|
| 29 |
+
.nav-links { display: flex; gap: 32px; }
|
| 30 |
+
.nav-links a { font-size: 14px; font-weight: 500; color: var(--gray-6); }
|
| 31 |
+
.nav-links a:hover { color: var(--white); }
|
| 32 |
+
.post { padding: 140px 0 80px; }
|
| 33 |
+
.post-back { display: inline-block; color: var(--gray-5); font-size: 14px; margin-bottom: 32px; }
|
| 34 |
+
.post-back:hover { color: var(--accent); }
|
| 35 |
+
.post-back::before { content: '← '; }
|
| 36 |
+
.post-meta { display: flex; gap: 12px; margin-bottom: 20px; }
|
| 37 |
+
.post-date { font-size: 13px; color: var(--gray-5); font-family: var(--font-mono); }
|
| 38 |
+
.post-tag { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--accent); background: rgba(255, 77, 0, 0.1); padding: 4px 10px; border-radius: 4px; }
|
| 39 |
+
.post h1 { font-size: 36px; font-weight: 700; color: var(--white); margin-bottom: 32px; line-height: 1.2; letter-spacing: -0.02em; }
|
| 40 |
+
.post-body p { font-size: 17px; line-height: 1.8; margin-bottom: 24px; color: var(--gray-6); }
|
| 41 |
+
.post-body p:first-of-type { font-size: 20px; color: var(--gray-7); }
|
| 42 |
+
.post-body h2 { font-size: 24px; font-weight: 600; color: var(--white); margin: 48px 0 20px; }
|
| 43 |
+
.post-body blockquote { border-left: 3px solid var(--accent); padding: 20px 24px; margin: 32px 0; background: var(--gray-1); border-radius: 0 8px 8px 0; }
|
| 44 |
+
.post-body blockquote p { font-size: 16px; font-style: italic; color: var(--gray-6); margin: 0; }
|
| 45 |
+
.post-body hr { border: none; height: 1px; background: var(--gray-2); margin: 48px 0; }
|
| 46 |
+
.code-block { background: var(--gray-1); border: 1px solid var(--gray-2); border-radius: 8px; padding: 20px; margin: 24px 0; font-family: var(--font-mono); font-size: 13px; overflow-x: auto; }
|
| 47 |
+
.code-block .comment { color: var(--gray-5); font-style: italic; display: block; margin-top: 4px; }
|
| 48 |
+
.loop-diagram { background: var(--gray-1); border: 2px solid var(--accent); border-radius: 8px; padding: 20px; margin: 24px 0; text-align: center; }
|
| 49 |
+
.loop-diagram .step { padding: 8px 0; color: var(--gray-6); }
|
| 50 |
+
.loop-diagram .step.highlight { color: var(--accent); font-weight: 600; }
|
| 51 |
+
.post-footer { margin-top: 48px; padding-top: 32px; border-top: 1px solid var(--gray-2); }
|
| 52 |
+
.post-footer p { font-size: 14px; color: var(--gray-5); font-style: italic; margin: 0; }
|
| 53 |
+
footer { padding: 40px 0; background: var(--black-soft); border-top: 1px solid var(--gray-2); text-align: center; }
|
| 54 |
+
footer p { color: var(--gray-5); font-size: 14px; margin-bottom: 8px; }
|
| 55 |
+
footer a { color: var(--gray-5); }
|
| 56 |
+
footer a:hover { color: var(--accent); }
|
| 57 |
+
@media (max-width: 768px) { .post h1 { font-size: 28px; } .nav-links { display: none; } }
|
| 58 |
+
</style>
|
| 59 |
+
</head>
|
| 60 |
+
<body>
|
| 61 |
+
<nav>
|
| 62 |
+
<div class="container">
|
| 63 |
+
<a href="index.html" class="nav-brand"><span>/</span>TinyMemoryLM</a>
|
| 64 |
+
<div class="nav-links">
|
| 65 |
+
<a href="index.html">Home</a>
|
| 66 |
+
<a href="blog.html">Blog</a>
|
| 67 |
+
<a href="status.html">Status</a>
|
| 68 |
+
</div>
|
| 69 |
+
</div>
|
| 70 |
+
</nav>
|
| 71 |
+
<main>
|
| 72 |
+
<article class="post">
|
| 73 |
+
<div class="container">
|
| 74 |
+
<a href="blog.html" class="post-back">Back to Blog</a>
|
| 75 |
+
<header>
|
| 76 |
+
<div class="post-meta">
|
| 77 |
+
<span class="post-date">2026-03-31</span>
|
| 78 |
+
<span class="post-tag">Life Fails</span>
|
| 79 |
+
</div>
|
| 80 |
+
<h1>I Bricked My School Chromebook With Pi-hole And Regret Everything</h1>
|
| 81 |
+
</header>
|
| 82 |
+
<div class="post-body">
|
| 83 |
+
<p>This blog post was supposed to go live at 9 AM. It is now 1 PM. The delay was not caused by NaN losses or GPU crashes or model training failures. The delay was caused by me being an idiot with a school Chromebook.</p>
|
| 84 |
+
<p>I set up Pi-hole. I wanted to block ads. I wanted to block trackers. I wanted to feel powerful. I blocked clients2.google.com because that is the server ChromeOS uses to pull device policy. This was a mistake. This was a spectacular mistake.</p>
|
| 85 |
+
<blockquote>
|
| 86 |
+
<p>There is a special kind of hubris in thinking you can outsmart enterprise device management. I have learned this lesson. I will probably forget it by next week.</p>
|
| 87 |
+
</blockquote>
|
| 88 |
+
<h2>The Plan</h2>
|
| 89 |
+
<p>The plan was simple. Install Pi-hole on my home network. Block the domains ChromeOS uses for policy enforcement. Un-enroll the device. Use it like a normal laptop. Freedom. Privacy. Control.</p>
|
| 90 |
+
<p>The execution was less simple. I blocked the domain. I attempted un-enrollment. It partially worked. The device forgot it was enrolled. It also forgot how to connect to the internet. This is when I learned about catch-22.</p>
|
| 91 |
+
<h2>The Loop Of Doom</h2>
|
| 92 |
+
<div class="loop-diagram">
|
| 93 |
+
<div class="step highlight">Step 1: Need WiFi to sign in</div>
|
| 94 |
+
<div class="step">Step 2: Need to be enrolled to get school WiFi</div>
|
| 95 |
+
<div class="step">Step 3: Need to sign in to enroll</div>
|
| 96 |
+
<div class="step highlight">Step 4: Need WiFi to sign in</div>
|
| 97 |
+
<div class="step" style="margin-top: 12px; color: var(--accent);">Result: Infinite loop. Also regret.</div>
|
| 98 |
+
</div>
|
| 99 |
+
<p>I was at school. I could not use my home WiFi password. The school WiFi required enrollment. Enrollment required signing in. Signing in required WiFi. I was trapped in a digital ouroboros eating its own tail.</p>
|
| 100 |
+
<div class="code-block">
|
| 101 |
+
<span class="comment"># My thought process during the crisis</span><br>
|
| 102 |
+
Me: Just reconnect to WiFi<br>
|
| 103 |
+
Chromebook: Need to enroll first<br>
|
| 104 |
+
Me: Okay let me enroll<br>
|
| 105 |
+
Chromebook: Need WiFi first<br>
|
| 106 |
+
Me: But I need to enroll to get WiFi<br>
|
| 107 |
+
Chromebook: That sounds like a you problem<br>
|
| 108 |
+
<span class="comment"># Accurate.</span>
|
| 109 |
+
</div>
|
| 110 |
+
<h2>The Pi-hole Reality</h2>
|
| 111 |
+
<p>Pi-hole is great for blocking ads. It is less great for blocking the servers your device needs to function. clients2.google.com is not an ad server. It is the server that tells ChromeOS what policies to enforce. Blocking it is like removing the steering wheel because you do not like being told where to drive.</p>
|
| 112 |
+
<p>I unblocked the domain. The device still would not enroll. I reset network settings. Still nothing. I power washed the device. Still nothing. I sat in the library staring at a login screen that would not login. This is my life now.</p>
|
| 113 |
+
<p>This is not a bug... I think.</p>
|
| 114 |
+
<h2>Partial Success</h2>
|
| 115 |
+
<p>Eventually something worked. Maybe I re-enrolled. Maybe the policy server responded. Maybe the universe took pity on me. The Chromebook connected. I could post this blog. Victory.</p>
|
| 116 |
+
<p>The victory is temporary. The device is enrolled again. The policy is enforced again. Pi-hole is still running but I whitelisted the critical domains. I learned my lesson. Probably.</p>
|
| 117 |
+
<blockquote>
|
| 118 |
+
<p>Will this stop me from trying something similarly ill-advised next week? Unknown. Will it teach me to be more careful about re-enrolling devices? Yes. Absolutely. Definitely. Probably.</p>
|
| 119 |
+
</blockquote>
|
| 120 |
+
<h2>What I Learned</h2>
|
| 121 |
+
<p>First, school Chromebooks are not yours. They belong to the school. The school has policies. The policies are enforced by servers. Blocking those servers breaks the device. This is not a bug... I think.</p>
|
| 122 |
+
<p>Second, Pi-hole is powerful. With great power comes great responsibility. Also great potential for bricking your only working computer while at school. Use caution. Use whitelists. Use common sense. I used none of these.</p>
|
| 123 |
+
<p>Third, catch-22 is real. Needing WiFi to get WiFi is a special kind of hell. I have experienced it. I do not recommend it. I will probably experience it again because I learn slowly.</p>
|
| 124 |
+
<h2>The IT Situation</h2>
|
| 125 |
+
<p>I am posting this from a loaner Chromebook. My actual device is in IT limbo. They are doing everything but the one thing that would fix it: enabling their hotspot and connecting the Chromebook.</p>
|
| 126 |
+
<p>If they just turned on the hotspot. If they just let me connect. If they just did the simple thing. I would be enrolled. I would be done. I would not be writing this blog from a borrowed device while my real device sits in a closet.</p>
|
| 127 |
+
<div class="code-block">
|
| 128 |
+
<span class="comment"># The fix that would work</span><br>
|
| 129 |
+
IT: Enable hotspot<br>
|
| 130 |
+
Me: Connect Chromebook<br>
|
| 131 |
+
Chromebook: Enroll successfully<br>
|
| 132 |
+
Me: Post blog on time<br>
|
| 133 |
+
<span class="comment"># Simple. Elegant. Not happening.</span>
|
| 134 |
+
</div>
|
| 135 |
+
<h2>Impact On My Work</h2>
|
| 136 |
+
<p>This delay cost me four hours. Four hours I could have spent training Sonnet. Four hours I could have spent debugging Haiku-2. Four hours I spent staring at a Chromebook login screen.</p>
|
| 137 |
+
<p>Sonnet is still at 0 percent. Opus is still a dream. Haiku is still saying "|fdish|||||!@|". Nothing changed except my blood pressure and my respect for enterprise device management.</p>
|
| 138 |
+
<h2>Final Thoughts</h2>
|
| 139 |
+
<p>I am posting this blog late. I am posting it from a loaner Chromebook. I am posting it with humility and regret. Pi-hole is still running. The critical domains are whitelisted. I am being careful. For now.</p>
|
| 140 |
+
<p>If you have a school Chromebook and you are thinking about Pi-hole, maybe do not. Or do. I am not your parent. I am just someone who spent four hours in a WiFi enrollment loop. Learn from my pain. Or do not. The choice is yours.</p>
|
| 141 |
+
<hr>
|
| 142 |
+
</div>
|
| 143 |
+
<footer class="post-footer">
|
| 144 |
+
<p>Current status: Posting from loaner Chromebook. Real Chromebook in IT limbo. Sonnet still at 0%. Will try not to brick things again. Probably.</p>
|
| 145 |
+
</footer>
|
| 146 |
+
</div>
|
| 147 |
+
</article>
|
| 148 |
+
</main>
|
| 149 |
+
<footer>
|
| 150 |
+
<div class="container">
|
| 151 |
+
<p>Built with curiosity over compute</p>
|
| 152 |
+
<p>TinyMemoryLM by AILAY | 2026</p>
|
| 153 |
+
</div>
|
| 154 |
+
</footer>
|
| 155 |
+
</body>
|
| 156 |
+
</html>
|