Stop tracking generated Hugo public output
Build and Deploy Hugo Site to Cloudron / build-and-deploy (push) Successful in 41s

This commit is contained in:
2026-04-06 10:30:33 -07:00
parent e2aeed756b
commit d65bcee7be
53 changed files with 2 additions and 4389 deletions
+2
View File
@@ -0,0 +1,2 @@
askkennyb/public/
askkennyb/.hugo_build.lock
-211
View File
@@ -1,211 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>404 Page not found | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/404.html">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/404.html">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<div class="not-found">404</div>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-225
View File
@@ -1,225 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>About | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Who I am and what Ask Kenny B is about.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/about/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/about/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/about/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span class="active">About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a></div>
<h1>
About
</h1>
<div class="post-description">
Who I am and what Ask Kenny B is about.
</div>
</header>
<div class="post-content"><p>Hi, Im Kenny. I build reliable, human-centered systems—nonprofit finance → homelab resilience → cloud + security.</p>
<p>This site is my public lab notebook: practical guides, reproducible setups, and leadership patterns that scale.</p>
<p>Let&rsquo;s go.</p>
</div>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-12
View File
@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>About on Ask KennyB</title>
<link>http://localhost:1313/about/</link>
<description>Recent content in About on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate></lastBuildDate>
<atom:link href="http://localhost:1313/about/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>
-9
View File
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/about/</title>
<link rel="canonical" href="http://localhost:1313/about/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/about/">
</head>
</html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

@@ -1,299 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Hello, World — Why Ask Kenny B? | Ask KennyB</title>
<meta name="keywords" content="intro, homelab, project">
<meta name="description" content="What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
Hello, World — Why Ask Kenny B?
</h1>
<div class="post-description">
What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.
</div>
<div class="post-meta"><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span>
</div>
</header>
<div class="post-content"><p>Welcome! This blog will cover:</p>
<ul>
<li>Reproducible <strong>homelab guides</strong> (Proxmox, Docker, Authentik, reverse proxies).</li>
<li><strong>Cloud blueprints</strong> that scale from personal to org-grade.</li>
<li>Transferable <strong>leadership → architecture</strong> lessons (risk, controls, finance).</li>
</ul>
<p>Thanks for being here—lets build.</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="http://localhost:1313/tags/intro/">Intro</a></li>
<li><a href="http://localhost:1313/tags/homelab/">Homelab</a></li>
<li><a href="http://localhost:1313/tags/project/">Project</a></li>
</ul>
<nav class="paginav">
<a class="prev" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/">
<span class="title">« Prev</span>
<br>
<span>Project Log: Docker Dreams and YAML Nightmares</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>
@@ -1,340 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Project Log: Docker Dreams and YAML Nightmares | Ask KennyB</title>
<meta name="keywords" content="homelab, docker, networking, humor">
<meta name="description" content="A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/posts/">Posts</a></div>
<h1 class="post-title entry-hint-parent">
Project Log: Docker Dreams and YAML Nightmares
</h1>
<div class="post-description">
A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.
</div>
<div class="post-meta"><span title='2025-11-05 00:00:00 +0000 UTC'>November 5, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span>
</div>
</header> <div class="toc">
<details >
<summary accesskey="c" title="(Alt + C)">
<span class="details">Table of Contents</span>
</summary>
<div class="inner"><ul>
<li>
<a href="#the-symptoms" aria-label="The Symptoms">The Symptoms</a></li>
<li>
<a href="#the-diagnosis" aria-label="The Diagnosis">The Diagnosis</a></li>
<li>
<a href="#the-fix" aria-label="The Fix">The Fix</a></li>
<li>
<a href="#lessons-learned" aria-label="Lessons Learned">Lessons Learned</a>
</li>
</ul>
</div>
</details>
</div>
<div class="post-content"><blockquote>
<p>Sometimes the difference between a &lsquo;production-ready stack&rsquo; and &lsquo;why is my NAS on fire?&rsquo; is one missing space in a YAML file.</p>
</blockquote>
<p>It started innocently enough:<br>
a single <code>docker-compose.yml</code>, neat and tidy, humming along like a well-trained orchestra. Then I added <em>one</em> new service—my self-hosted note app—and everything fell apart.</p>
<h3 id="the-symptoms">The Symptoms<a hidden class="anchor" aria-hidden="true" href="#the-symptoms">#</a></h3>
<ul>
<li>Containers refusing to start with no useful logs</li>
<li>DNS loops that made my router question its purpose</li>
<li>My wife asking, “Why is our TV buffering when you touch the server?”</li>
</ul>
<h3 id="the-diagnosis">The Diagnosis<a hidden class="anchor" aria-hidden="true" href="#the-diagnosis">#</a></h3>
<p>Turns out, I nested a volume mount under the wrong key.<br>
YAML: 1 — Human: 0.</p>
<h3 id="the-fix">The Fix<a hidden class="anchor" aria-hidden="true" href="#the-fix">#</a></h3>
<p>A humble indent.<br>
Four spaces, to be precise.<br>
Suddenly the world made sense again, DNS was stable, and my cat stopped judging me.</p>
<h3 id="lessons-learned">Lessons Learned<a hidden class="anchor" aria-hidden="true" href="#lessons-learned">#</a></h3>
<ol>
<li><strong>Version control everything</strong>, even your test Compose files.</li>
<li><strong>Automate backups</strong> before you “just try something real quick.”</li>
<li><strong>Celebrate small victories</strong>—sometimes the win is just getting your network back online before dinner.</li>
</ol>
<hr>
<p>If you read this and thought, “Ive been there,” then welcome to the club.<br>
Homelabs teach patience, humility, and the thrill of a perfectly clean <code>docker ps</code> output.</p>
<p><em>Stay tuned for next weeks adventure: rebuilding my reverse proxy after a 301 loop ate my weekend.</em></p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="http://localhost:1313/tags/homelab/">Homelab</a></li>
<li><a href="http://localhost:1313/tags/docker/">Docker</a></li>
<li><a href="http://localhost:1313/tags/networking/">Networking</a></li>
<li><a href="http://localhost:1313/tags/humor/">Humor</a></li>
</ul>
<nav class="paginav">
<a class="next" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/">
<span class="title">Next »</span>
<br>
<span>Hello, World — Why Ask Kenny B?</span>
</a>
</nav>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerHTML = 'copy';
function copyingDone() {
copybutton.innerHTML = 'copied!';
setTimeout(() => {
copybutton.innerHTML = 'copy';
}, 2000);
}
copybutton.addEventListener('click', (cb) => {
if ('clipboard' in navigator) {
navigator.clipboard.writeText(codeblock.textContent);
copyingDone();
return;
}
const range = document.createRange();
range.selectNodeContents(codeblock);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
try {
document.execCommand('copy');
copyingDone();
} catch (e) { };
selection.removeRange(range);
});
if (container.classList.contains("highlight")) {
container.appendChild(copybutton);
} else if (container.parentNode.firstChild == container) {
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
} else {
codeblock.parentNode.appendChild(copybutton);
}
});
</script>
</body>
</html>
@@ -1,233 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>DevOps | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/categories/devops/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/categories/devops/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/categories/devops/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/categories/">Categories</a></div>
<h1>
DevOps
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Project Log: Docker Dreams and YAML Nightmares
</h2>
</header>
<div class="entry-content">
<p> Sometimes the difference between a production-ready stack and why is my NAS on fire? is one missing space in a YAML file.
It started innocently enough:
a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart.
The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key.
YAML: 1 — Human: 0.
...</p>
</div>
<footer class="entry-footer"><span title='2025-11-05 00:00:00 +0000 UTC'>November 5, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>DevOps on Ask KennyB</title>
<link>http://localhost:1313/categories/devops/</link>
<description>Recent content in DevOps on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/categories/devops/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Project Log: Docker Dreams and YAML Nightmares</title>
<link>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</guid>
<description>A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.</description>
</item>
</channel>
</rss>
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/categories/devops/</title>
<link rel="canonical" href="http://localhost:1313/categories/devops/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/categories/devops/">
</head>
</html>
-223
View File
@@ -1,223 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Categories | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/categories/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/categories/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/categories/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header">
<h1>Categories</h1>
</header>
<ul class="terms-tags">
<li>
<a href="http://localhost:1313/categories/devops/">DevOps <sup><strong><sup>1</sup></strong></sup> </a>
</li>
<li>
<a href="http://localhost:1313/categories/meta/">Meta <sup><strong><sup>1</sup></strong></sup> </a>
</li>
</ul>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-26
View File
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Categories on Ask KennyB</title>
<link>http://localhost:1313/categories/</link>
<description>Recent content in Categories on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>DevOps</title>
<link>http://localhost:1313/categories/devops/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/categories/devops/</guid>
<description></description>
</item>
<item>
<title>Meta</title>
<link>http://localhost:1313/categories/meta/</link>
<pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/categories/meta/</guid>
<description></description>
</item>
</channel>
</rss>
-230
View File
@@ -1,230 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Meta | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/categories/meta/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/categories/meta/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/categories/meta/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/categories/">Categories</a></div>
<h1>
Meta
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Hello, World — Why Ask Kenny B?
</h2>
</header>
<div class="entry-content">
<p>Welcome! This blog will cover:
Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—lets build.
</p>
</div>
<footer class="entry-footer"><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Hello, World — Why Ask Kenny B?" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Meta on Ask KennyB</title>
<link>http://localhost:1313/categories/meta/</link>
<description>Recent content in Meta on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Sun, 02 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/categories/meta/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hello, World — Why Ask Kenny B?</title>
<link>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</link>
<pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</guid>
<description>What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.</description>
</item>
</channel>
</rss>
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/categories/meta/</title>
<link rel="canonical" href="http://localhost:1313/categories/meta/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/categories/meta/">
</head>
</html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 KiB

-276
View File
@@ -1,276 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head>
<meta name="generator" content="Hugo 0.152.2"><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Ask KennyB</title>
<meta name="description" content="Landing page for Ask Kenny B.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<div class="post-content"><div class="bio-block">
<img src="/images/profile.png" alt="Kenny Bondelie" class="bio-photo">
<div class="bio-text">
👋 Im Kenny Bondelie — finance leader turned hands-on IT and security architect.<br>
I write about building reliable systems, both technical and organizational.
</div>
</div>
</div>
<article class="first-entry home-info">
<header class="entry-header">
<h1>Ask KennyB</h1>
</header>
<div class="entry-content">
From nonprofit CFO → hands-on IT &amp; security leader. Homelab, cloud, ops, and practical strategy.
</div>
<footer class="entry-footer">
<div class="social-icons" >
<a href="https://www.linkedin.com/in/kennethbondelie" target="_blank" rel="noopener noreferrer me"
title="Linkedin">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round">
<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path>
<rect x="2" y="9" width="4" height="12"></rect>
<circle cx="4" cy="4" r="2"></circle>
</svg>
</a>
</div>
</footer>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Project Log: Docker Dreams and YAML Nightmares
</h2>
</header>
<div class="entry-content">
<p> Sometimes the difference between a production-ready stack and why is my NAS on fire? is one missing space in a YAML file.
It started innocently enough:
a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart.
The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key.
YAML: 1 — Human: 0.
...</p>
</div>
<footer class="entry-footer"><span title='2025-11-05 00:00:00 +0000 UTC'>November 5, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Hello, World — Why Ask Kenny B?
</h2>
</header>
<div class="entry-content">
<p>Welcome! This blog will cover:
Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—lets build.
</p>
</div>
<footer class="entry-footer"><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Hello, World — Why Ask Kenny B?" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-26
View File
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Home on Ask KennyB</title>
<link>http://localhost:1313/</link>
<description>Recent content in Home on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Project Log: Docker Dreams and YAML Nightmares</title>
<link>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</guid>
<description>A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.</description>
</item>
<item>
<title>Hello, World — Why Ask Kenny B?</title>
<link>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</link>
<pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</guid>
<description>What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.</description>
</item>
</channel>
</rss>
-9
View File
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/</title>
<link rel="canonical" href="http://localhost:1313/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/">
</head>
</html>
-247
View File
@@ -1,247 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Posts | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Posts - Ask KennyB">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/posts/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/posts/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/posts/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span class="active">Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a></div>
<h1>
Posts
</h1>
</header>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Project Log: Docker Dreams and YAML Nightmares
</h2>
</header>
<div class="entry-content">
<p> Sometimes the difference between a production-ready stack and why is my NAS on fire? is one missing space in a YAML file.
It started innocently enough:
a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart.
The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key.
YAML: 1 — Human: 0.
...</p>
</div>
<footer class="entry-footer"><span title='2025-11-05 00:00:00 +0000 UTC'>November 5, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Hello, World — Why Ask Kenny B?
</h2>
</header>
<div class="entry-content">
<p>Welcome! This blog will cover:
Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—lets build.
</p>
</div>
<footer class="entry-footer"><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Hello, World — Why Ask Kenny B?" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-26
View File
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Posts on Ask KennyB</title>
<link>http://localhost:1313/posts/</link>
<description>Recent content in Posts on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/posts/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Project Log: Docker Dreams and YAML Nightmares</title>
<link>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</guid>
<description>A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.</description>
</item>
<item>
<title>Hello, World — Why Ask Kenny B?</title>
<link>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</link>
<pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</guid>
<description>What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.</description>
</item>
</channel>
</rss>
-9
View File
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/posts/</title>
<link rel="canonical" href="http://localhost:1313/posts/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/posts/">
</head>
</html>
-3
View File
@@ -1,3 +0,0 @@
User-agent: *
Disallow: /
Sitemap: http://localhost:1313/sitemap.xml
-1
View File
@@ -1 +0,0 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
-50
View File
@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://localhost:1313/categories/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/categories/devops/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/docker/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/homelab/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/humor/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/networking/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/posts/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/</loc>
<lastmod>2025-11-05T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/about/</loc>
<lastmod>2025-11-03T16:47:38-08:00</lastmod>
</url><url>
<loc>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</loc>
<lastmod>2025-11-02T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/intro/</loc>
<lastmod>2025-11-02T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/categories/meta/</loc>
<lastmod>2025-11-02T00:00:00+00:00</lastmod>
</url><url>
<loc>http://localhost:1313/tags/project/</loc>
<lastmod>2025-11-02T00:00:00+00:00</lastmod>
</url>
</urlset>
-233
View File
@@ -1,233 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Docker | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/tags/docker/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/docker/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/tags/docker/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/tags/">Tags</a></div>
<h1>
Docker
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Project Log: Docker Dreams and YAML Nightmares
</h2>
</header>
<div class="entry-content">
<p> Sometimes the difference between a production-ready stack and why is my NAS on fire? is one missing space in a YAML file.
It started innocently enough:
a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart.
The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key.
YAML: 1 — Human: 0.
...</p>
</div>
<footer class="entry-footer"><span title='2025-11-05 00:00:00 +0000 UTC'>November 5, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-19
View File
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Docker on Ask KennyB</title>
<link>http://localhost:1313/tags/docker/</link>
<description>Recent content in Docker on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/docker/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Project Log: Docker Dreams and YAML Nightmares</title>
<link>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</guid>
<description>A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.</description>
</item>
</channel>
</rss>
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/tags/docker/</title>
<link rel="canonical" href="http://localhost:1313/tags/docker/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/tags/docker/">
</head>
</html>
-247
View File
@@ -1,247 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Homelab | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/tags/homelab/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/homelab/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/tags/homelab/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/tags/">Tags</a></div>
<h1>
Homelab
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Project Log: Docker Dreams and YAML Nightmares
</h2>
</header>
<div class="entry-content">
<p> Sometimes the difference between a production-ready stack and why is my NAS on fire? is one missing space in a YAML file.
It started innocently enough:
a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart.
The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key.
YAML: 1 — Human: 0.
...</p>
</div>
<footer class="entry-footer"><span title='2025-11-05 00:00:00 +0000 UTC'>November 5, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/"></a>
</article>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Hello, World — Why Ask Kenny B?
</h2>
</header>
<div class="entry-content">
<p>Welcome! This blog will cover:
Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—lets build.
</p>
</div>
<footer class="entry-footer"><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Hello, World — Why Ask Kenny B?" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-26
View File
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Homelab on Ask KennyB</title>
<link>http://localhost:1313/tags/homelab/</link>
<description>Recent content in Homelab on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/homelab/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Project Log: Docker Dreams and YAML Nightmares</title>
<link>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</guid>
<description>A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.</description>
</item>
<item>
<title>Hello, World — Why Ask Kenny B?</title>
<link>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</link>
<pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</guid>
<description>What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.</description>
</item>
</channel>
</rss>
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/tags/homelab/</title>
<link rel="canonical" href="http://localhost:1313/tags/homelab/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/tags/homelab/">
</head>
</html>
-233
View File
@@ -1,233 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Humor | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/tags/humor/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/humor/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/tags/humor/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/tags/">Tags</a></div>
<h1>
Humor
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Project Log: Docker Dreams and YAML Nightmares
</h2>
</header>
<div class="entry-content">
<p> Sometimes the difference between a production-ready stack and why is my NAS on fire? is one missing space in a YAML file.
It started innocently enough:
a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart.
The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key.
YAML: 1 — Human: 0.
...</p>
</div>
<footer class="entry-footer"><span title='2025-11-05 00:00:00 +0000 UTC'>November 5, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-19
View File
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Humor on Ask KennyB</title>
<link>http://localhost:1313/tags/humor/</link>
<description>Recent content in Humor on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/humor/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Project Log: Docker Dreams and YAML Nightmares</title>
<link>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</guid>
<description>A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.</description>
</item>
</channel>
</rss>
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/tags/humor/</title>
<link rel="canonical" href="http://localhost:1313/tags/humor/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/tags/humor/">
</head>
</html>
-235
View File
@@ -1,235 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Tags | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/tags/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/tags/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header">
<h1>Tags</h1>
</header>
<ul class="terms-tags">
<li>
<a href="http://localhost:1313/tags/docker/">docker <sup><strong><sup>1</sup></strong></sup> </a>
</li>
<li>
<a href="http://localhost:1313/tags/homelab/">homelab <sup><strong><sup>2</sup></strong></sup> </a>
</li>
<li>
<a href="http://localhost:1313/tags/humor/">humor <sup><strong><sup>1</sup></strong></sup> </a>
</li>
<li>
<a href="http://localhost:1313/tags/intro/">intro <sup><strong><sup>1</sup></strong></sup> </a>
</li>
<li>
<a href="http://localhost:1313/tags/networking/">networking <sup><strong><sup>1</sup></strong></sup> </a>
</li>
<li>
<a href="http://localhost:1313/tags/project/">project <sup><strong><sup>1</sup></strong></sup> </a>
</li>
</ul>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-54
View File
@@ -1,54 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Tags on Ask KennyB</title>
<link>http://localhost:1313/tags/</link>
<description>Recent content in Tags on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Docker</title>
<link>http://localhost:1313/tags/docker/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/docker/</guid>
<description></description>
</item>
<item>
<title>Homelab</title>
<link>http://localhost:1313/tags/homelab/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/homelab/</guid>
<description></description>
</item>
<item>
<title>Humor</title>
<link>http://localhost:1313/tags/humor/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/humor/</guid>
<description></description>
</item>
<item>
<title>Networking</title>
<link>http://localhost:1313/tags/networking/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/networking/</guid>
<description></description>
</item>
<item>
<title>Intro</title>
<link>http://localhost:1313/tags/intro/</link>
<pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/intro/</guid>
<description></description>
</item>
<item>
<title>Project</title>
<link>http://localhost:1313/tags/project/</link>
<pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tags/project/</guid>
<description></description>
</item>
</channel>
</rss>
-230
View File
@@ -1,230 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Intro | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/tags/intro/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/intro/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/tags/intro/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/tags/">Tags</a></div>
<h1>
Intro
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Hello, World — Why Ask Kenny B?
</h2>
</header>
<div class="entry-content">
<p>Welcome! This blog will cover:
Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—lets build.
</p>
</div>
<footer class="entry-footer"><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Hello, World — Why Ask Kenny B?" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-19
View File
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Intro on Ask KennyB</title>
<link>http://localhost:1313/tags/intro/</link>
<description>Recent content in Intro on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Sun, 02 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/intro/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hello, World — Why Ask Kenny B?</title>
<link>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</link>
<pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</guid>
<description>What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.</description>
</item>
</channel>
</rss>
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/tags/intro/</title>
<link rel="canonical" href="http://localhost:1313/tags/intro/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/tags/intro/">
</head>
</html>
-233
View File
@@ -1,233 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Networking | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/tags/networking/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/networking/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/tags/networking/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/tags/">Tags</a></div>
<h1>
Networking
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Project Log: Docker Dreams and YAML Nightmares
</h2>
</header>
<div class="entry-content">
<p> Sometimes the difference between a production-ready stack and why is my NAS on fire? is one missing space in a YAML file.
It started innocently enough:
a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart.
The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key.
YAML: 1 — Human: 0.
...</p>
</div>
<footer class="entry-footer"><span title='2025-11-05 00:00:00 +0000 UTC'>November 5, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href="http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Networking on Ask KennyB</title>
<link>http://localhost:1313/tags/networking/</link>
<description>Recent content in Networking on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Wed, 05 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/networking/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Project Log: Docker Dreams and YAML Nightmares</title>
<link>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</link>
<pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/project-log-docker-dreams-and-yaml-nightmares/</guid>
<description>A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.</description>
</item>
</channel>
</rss>
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/tags/networking/</title>
<link rel="canonical" href="http://localhost:1313/tags/networking/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/tags/networking/">
</head>
</html>
-230
View File
@@ -1,230 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto" data-theme="auto">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<title>Project | Ask KennyB</title>
<meta name="keywords" content="">
<meta name="description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security.">
<meta name="author" content="Kenny Bondelie">
<link rel="canonical" href="http://localhost:1313/tags/project/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css" integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn&#43;UR9vJO03Xa1A=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://localhost:1313/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/tags/project/index.xml" title="rss">
<link rel="alternate" hreflang="en" href="http://localhost:1313/tags/project/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--code-block-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
color-scheme: dark;
}
.list {
background: var(--theme);
}
.toc {
background: var(--entry);
}
}
@media (prefers-color-scheme: light) {
.list::-webkit-scrollbar-thumb {
border-color: var(--code-bg);
}
}
</style>
</noscript>
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.querySelector("html").dataset.theme = 'dark';
} else if (localStorage.getItem("pref-theme") === "light") {
document.querySelector("html").dataset.theme = 'light';
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.querySelector("html").dataset.theme = 'dark';
} else {
document.querySelector("html").dataset.theme = 'light';
}
</script><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=Source+Serif+4:opsz,wght@8..60,500..700&display=swap" rel="stylesheet">
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#007a70">
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
</head>
<body class="list" id="top">
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://localhost:1313/" accesskey="h" title=" (Alt + H)">
<img src="http://localhost:1313/images/logo_words.svg" alt="" aria-label="logo"
height="75"> </a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://localhost:1313/posts/" title="Posts">
<span>Posts</span>
</a>
</li>
<li>
<a href="http://localhost:1313/about/" title="About">
<span>About</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<header class="page-header"><div class="breadcrumbs"><a href="http://localhost:1313/">Home</a>&nbsp;»&nbsp;<a href="http://localhost:1313/tags/">Tags</a></div>
<h1>
Project
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Hello, World — Why Ask Kenny B?
</h2>
</header>
<div class="entry-content">
<p>Welcome! This blog will cover:
Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—lets build.
</p>
</div>
<footer class="entry-footer"><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span>&nbsp;·&nbsp;<span>1 min</span>&nbsp;·&nbsp;<span>Kenny Bondelie</span></footer>
<a class="entry-link" aria-label="post link to Hello, World — Why Ask Kenny B?" href="http://localhost:1313/blog/hello-world-why-ask-kenny-b/"></a>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="http://localhost:1313/">Ask KennyB</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu');
if (menu) {
const scrollPosition = localStorage.getItem("menu-scroll-position");
if (scrollPosition) {
menu.scrollLeft = parseInt(scrollPosition, 10);
}
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
const html = document.querySelector("html");
if (html.dataset.theme === "dark") {
html.dataset.theme = 'light';
localStorage.setItem("pref-theme", 'light');
} else {
html.dataset.theme = 'dark';
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>
-19
View File
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Project on Ask KennyB</title>
<link>http://localhost:1313/tags/project/</link>
<description>Recent content in Project on Ask KennyB</description>
<generator>Hugo -- 0.152.2</generator>
<language>en-us</language>
<lastBuildDate>Sun, 02 Nov 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="http://localhost:1313/tags/project/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Hello, World — Why Ask Kenny B?</title>
<link>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</link>
<pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/blog/hello-world-why-ask-kenny-b/</guid>
<description>What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.</description>
</item>
</channel>
</rss>
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/tags/project/</title>
<link rel="canonical" href="http://localhost:1313/tags/project/">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/tags/project/">
</head>
</html>