first commit
3
askkennyb/.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "themes/PaperMod"]
|
||||
path = themes/PaperMod
|
||||
url = https://github.com/adityatelange/hugo-PaperMod.git
|
||||
0
askkennyb/.hugo_build.lock
Normal file
0
askkennyb/README.md
Normal file
5
askkennyb/archetypes/default.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
date: '{{ .Date }}'
|
||||
draft: true
|
||||
title: '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||
---
|
||||
9
askkennyb/content/_index.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Home"
|
||||
description: "Landing page for Ask Kenny B."
|
||||
---
|
||||
|
||||
{{< bio img="/images/profile.png" alt="Kenny Bondelie" >}}
|
||||
👋 I’m Kenny Bondelie — finance leader turned hands-on IT and security architect.
|
||||
I write about building reliable systems, both technical and organizational.
|
||||
{{< /bio >}}
|
||||
12
askkennyb/content/about/_index.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
date: '2025-11-03T16:47:38-08:00'
|
||||
draft: false
|
||||
title: 'About'
|
||||
description: "Who I am and what Ask Kenny B is about."
|
||||
---
|
||||
|
||||
Hi, I’m Kenny. I build reliable, human-centered systems—nonprofit finance → homelab resilience → cloud + security.
|
||||
|
||||
This site is my public lab notebook: practical guides, reproducible setups, and leadership patterns that scale.
|
||||
|
||||
Let's go.
|
||||
38
askkennyb/content/posts/another-test.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: "Project Log: Docker Dreams and YAML Nightmares"
|
||||
date: 2025-11-05
|
||||
description: "A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience."
|
||||
tags: ["homelab", "docker", "networking", "humor"]
|
||||
categories: ["DevOps"]
|
||||
draft: false
|
||||
---
|
||||
> 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.
|
||||
|
||||
### The Fix
|
||||
A humble indent.
|
||||
Four spaces, to be precise.
|
||||
Suddenly the world made sense again, DNS was stable, and my cat stopped judging me.
|
||||
|
||||
### Lessons Learned
|
||||
1. **Version control everything**, even your test Compose files.
|
||||
2. **Automate backups** before you “just try something real quick.”
|
||||
3. **Celebrate small victories**—sometimes the win is just getting your network back online before dinner.
|
||||
|
||||
---
|
||||
|
||||
If you read this and thought, “I’ve been there,” then welcome to the club.
|
||||
Homelabs teach patience, humility, and the thrill of a perfectly clean `docker ps` output.
|
||||
|
||||
*Stay tuned for next week’s adventure: rebuilding my reverse proxy after a 301 loop ate my weekend.*
|
||||
15
askkennyb/content/posts/hello-world.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "Hello, World — Why Ask Kenny B?"
|
||||
date: 2025-11-02
|
||||
description: "What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture."
|
||||
tags: ["intro", "homelab", "project"]
|
||||
categories: ["Meta"]
|
||||
draft: false
|
||||
---
|
||||
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—let’s build.
|
||||
57
askkennyb/hugo.yaml
Normal file
@@ -0,0 +1,57 @@
|
||||
baseURL: "https://askkennyb.com"
|
||||
languageCode: "en-us"
|
||||
title: "Ask KennyB"
|
||||
theme: "PaperMod"
|
||||
pagination:
|
||||
pagerSize: 10
|
||||
enableRobotsTXT: true
|
||||
|
||||
# Optional: nice blog slugs at /blog/...
|
||||
permalinks:
|
||||
posts: /blog/:slug/
|
||||
|
||||
taxonomies:
|
||||
category: categories
|
||||
tag: tags
|
||||
|
||||
params:
|
||||
label:
|
||||
icon: "images/logo_words.svg"
|
||||
iconHeight: 75
|
||||
text: " "
|
||||
|
||||
description: "Sharpening tech leadership through hands-on homelab builds, cloud, and security."
|
||||
author: "Kenny Bondelie"
|
||||
|
||||
# UX features
|
||||
ShowReadingTime: true
|
||||
ShowShareButtons: false
|
||||
ShowPostNavLinks: true
|
||||
ShowBreadCrumbs: true
|
||||
ShowCodeCopyButtons: true
|
||||
ShowToc: true
|
||||
|
||||
# Home hero (PaperMod's homeInfo)
|
||||
homeInfoParams:
|
||||
Title: "Ask KennyB"
|
||||
Content: "From nonprofit CFO → hands-on IT & security leader. Homelab, cloud, ops, and practical strategy."
|
||||
|
||||
# Theme palette
|
||||
defaultTheme: auto # auto | dark | light
|
||||
|
||||
# Socials (fill in later)
|
||||
socialIcons:
|
||||
# Uncomment GitHub when ready
|
||||
# - name: github
|
||||
# url: "https://github.com/kbondelie"
|
||||
- name: linkedin
|
||||
url: "https://www.linkedin.com/in/kennethbondelie"
|
||||
|
||||
menu:
|
||||
main:
|
||||
- name: Posts
|
||||
url: "/posts/"
|
||||
weight: 1
|
||||
- name: About
|
||||
url: "/about/"
|
||||
weight: 3
|
||||
12
askkennyb/layouts/partials/extend_head.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<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">
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ "favicon.ico" | relURL }}" sizes="any">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}">
|
||||
<link rel="apple-touch-icon" href="{{ "apple-touch-icon.png" | relURL }}">
|
||||
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}">
|
||||
<meta name="theme-color" content="#007a70">
|
||||
<!-- Umami Stats -->
|
||||
<script defer src="https://stats.askkennyb.com/script.js" data-website-id="9ff21094-6881-404e-a30e-534c23dde9f8"></script>
|
||||
6
askkennyb/layouts/shortcodes/bio.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class="bio-block">
|
||||
<img src="{{ .Get "img" | default "/images/profile.png" }}" alt="{{ .Get "alt" | default "Profile Photo" }}" class="bio-photo">
|
||||
<div class="bio-text">
|
||||
{{ .Inner | markdownify }}
|
||||
</div>
|
||||
</div>
|
||||
7
askkennyb/public/404.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/404.html><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/404.html"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="404 Page not found"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="404 Page not found"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/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>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
7
askkennyb/public/about/index.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/about/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/about/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/about/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="About"><meta property="og:description" content="Who I am and what Ask Kenny B is about."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="About"><meta name=twitter:description content="Who I am and what Ask Kenny B is about."><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"About","item":"https://askkennyb.com/about/"}]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/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=https://askkennyb.com/>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, I’m 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’s go.</p></div></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/about/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/about/</link><description>Recent content in About on Ask KennyB</description><generator>Hugo -- 0.152.2</generator><language>en-us</language><lastBuildDate/><atom:link href="https://askkennyb.com/about/index.xml" rel="self" type="application/rss+xml"/></channel></rss>
|
||||
1
askkennyb/public/about/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/about/</title><link rel=canonical href=https://askkennyb.com/about/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/about/"></head></html>
|
||||
BIN
askkennyb/public/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
askkennyb/public/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
askkennyb/public/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
12
askkennyb/public/categories/devops/index.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/categories/devops/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/categories/devops/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/categories/devops/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="DevOps"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="DevOps"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://askkennyb.com/>Home</a> » <a href=https://askkennyb.com/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> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href=https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/categories/devops/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/categories/devops/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Log: Docker Dreams and YAML Nightmares</title><link>https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/categories/devops/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/categories/devops/</title><link rel=canonical href=https://askkennyb.com/categories/devops/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/categories/devops/"></head></html>
|
||||
7
askkennyb/public/categories/index.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/categories/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/categories/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/categories/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Categories"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Categories"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/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=https://askkennyb.com/categories/devops/>DevOps <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=https://askkennyb.com/categories/meta/>Meta <sup><strong><sup>1</sup></strong></sup></a></li></ul></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/categories/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/categories/index.xml" rel="self" type="application/rss+xml"/><item><title>DevOps</title><link>https://askkennyb.com/categories/devops/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/categories/devops/</guid><description/></item><item><title>Meta</title><link>https://askkennyb.com/categories/meta/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/categories/meta/</guid><description/></item></channel></rss>
|
||||
8
askkennyb/public/categories/meta/index.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/categories/meta/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/categories/meta/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/categories/meta/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Meta"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Meta"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://askkennyb.com/>Home</a> » <a href=https://askkennyb.com/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—let’s build.</p></div><footer class=entry-footer><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Hello, World — Why Ask Kenny B?" href=https://askkennyb.com/blog/hello-world-why-ask-kenny-b/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/categories/meta/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/categories/meta/index.xml" rel="self" type="application/rss+xml"/><item><title>Hello, World — Why Ask Kenny B?</title><link>https://askkennyb.com/blog/hello-world-why-ask-kenny-b/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/categories/meta/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/categories/meta/</title><link rel=canonical href=https://askkennyb.com/categories/meta/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/categories/meta/"></head></html>
|
||||
BIN
askkennyb/public/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 873 B |
BIN
askkennyb/public/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
askkennyb/public/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
1
askkennyb/public/images/logo_words.svg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
askkennyb/public/images/profile.png
Normal file
|
After Width: | Height: | Size: 351 KiB |
13
askkennyb/public/index.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><meta name=generator content="Hugo 0.152.2"><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="index, follow"><title>Ask KennyB</title><meta name=description content="Landing page for Ask Kenny B."><meta name=author content="Kenny Bondelie"><link rel=canonical href=https://askkennyb.com/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/><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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Home"><meta property="og:description" content="Landing page for Ask Kenny B."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Home"><meta name=twitter:description content="Landing page for Ask Kenny B."><script type=application/ld+json>{"@context":"https://schema.org","@type":"Organization","name":"Ask KennyB","url":"https://askkennyb.com/","description":"Sharpening tech leadership through hands-on homelab builds, cloud, and security.","logo":"https://askkennyb.com/favicon.ico","sameAs":["https://www.linkedin.com/in/kennethbondelie"]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/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>👋 I’m 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 & 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 viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></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> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href=https://askkennyb.com/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—let’s build.</p></div><footer class=entry-footer><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Hello, World — Why Ask Kenny B?" href=https://askkennyb.com/blog/hello-world-why-ask-kenny-b/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/</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="https://askkennyb.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Log: Docker Dreams and YAML Nightmares</title><link>https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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>https://askkennyb.com/blog/hello-world-why-ask-kenny-b/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/</title><link rel=canonical href=https://askkennyb.com/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/"></head></html>
|
||||
13
askkennyb/public/posts/index.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/posts/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/posts/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/posts/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Posts"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Posts"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><script type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Posts","item":"https://askkennyb.com/posts/"}]}</script></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span class=active>Posts</span></a></li><li><a href=https://askkennyb.com/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://askkennyb.com/>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> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href=https://askkennyb.com/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—let’s build.</p></div><footer class=entry-footer><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Hello, World — Why Ask Kenny B?" href=https://askkennyb.com/blog/hello-world-why-ask-kenny-b/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/posts/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Log: Docker Dreams and YAML Nightmares</title><link>https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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>https://askkennyb.com/blog/hello-world-why-ask-kenny-b/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/posts/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/posts/</title><link rel=canonical href=https://askkennyb.com/posts/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/posts/"></head></html>
|
||||
3
askkennyb/public/robots.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
User-agent: *
|
||||
Disallow:
|
||||
Sitemap: https://askkennyb.com/sitemap.xml
|
||||
1
askkennyb/public/site.webmanifest
Normal file
@@ -0,0 +1 @@
|
||||
{"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"}
|
||||
1
askkennyb/public/sitemap.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/categories/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/categories/devops/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/tags/docker/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/tags/homelab/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/tags/humor/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/tags/networking/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/posts/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/tags/</loc><lastmod>2025-11-05T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/about/</loc><lastmod>2025-11-03T16:47:38-08:00</lastmod></url><url><loc>https://askkennyb.com/blog/hello-world-why-ask-kenny-b/</loc><lastmod>2025-11-02T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/tags/intro/</loc><lastmod>2025-11-02T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/categories/meta/</loc><lastmod>2025-11-02T00:00:00+00:00</lastmod></url><url><loc>https://askkennyb.com/tags/project/</loc><lastmod>2025-11-02T00:00:00+00:00</lastmod></url></urlset>
|
||||
12
askkennyb/public/tags/docker/index.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/tags/docker/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/tags/docker/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/tags/docker/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Docker"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Docker"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://askkennyb.com/>Home</a> » <a href=https://askkennyb.com/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> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href=https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/tags/docker/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/tags/docker/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Log: Docker Dreams and YAML Nightmares</title><link>https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/tags/docker/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/tags/docker/</title><link rel=canonical href=https://askkennyb.com/tags/docker/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/tags/docker/"></head></html>
|
||||
13
askkennyb/public/tags/homelab/index.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/tags/homelab/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/tags/homelab/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/tags/homelab/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Homelab"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Homelab"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://askkennyb.com/>Home</a> » <a href=https://askkennyb.com/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> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href=https://askkennyb.com/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—let’s build.</p></div><footer class=entry-footer><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Hello, World — Why Ask Kenny B?" href=https://askkennyb.com/blog/hello-world-why-ask-kenny-b/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/tags/homelab/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/tags/homelab/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Log: Docker Dreams and YAML Nightmares</title><link>https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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>https://askkennyb.com/blog/hello-world-why-ask-kenny-b/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/tags/homelab/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/tags/homelab/</title><link rel=canonical href=https://askkennyb.com/tags/homelab/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/tags/homelab/"></head></html>
|
||||
12
askkennyb/public/tags/humor/index.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/tags/humor/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/tags/humor/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/tags/humor/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Humor"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Humor"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://askkennyb.com/>Home</a> » <a href=https://askkennyb.com/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> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href=https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/tags/humor/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/tags/humor/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Log: Docker Dreams and YAML Nightmares</title><link>https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/tags/humor/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/tags/humor/</title><link rel=canonical href=https://askkennyb.com/tags/humor/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/tags/humor/"></head></html>
|
||||
7
askkennyb/public/tags/index.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/tags/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/tags/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/tags/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Tags"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Tags"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/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=https://askkennyb.com/tags/docker/>docker <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=https://askkennyb.com/tags/homelab/>homelab <sup><strong><sup>2</sup></strong></sup></a></li><li><a href=https://askkennyb.com/tags/humor/>humor <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=https://askkennyb.com/tags/intro/>intro <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=https://askkennyb.com/tags/networking/>networking <sup><strong><sup>1</sup></strong></sup></a></li><li><a href=https://askkennyb.com/tags/project/>project <sup><strong><sup>1</sup></strong></sup></a></li></ul></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/tags/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/tags/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker</title><link>https://askkennyb.com/tags/docker/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/tags/docker/</guid><description/></item><item><title>Homelab</title><link>https://askkennyb.com/tags/homelab/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/tags/homelab/</guid><description/></item><item><title>Humor</title><link>https://askkennyb.com/tags/humor/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/tags/humor/</guid><description/></item><item><title>Networking</title><link>https://askkennyb.com/tags/networking/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/tags/networking/</guid><description/></item><item><title>Intro</title><link>https://askkennyb.com/tags/intro/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/tags/intro/</guid><description/></item><item><title>Project</title><link>https://askkennyb.com/tags/project/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/tags/project/</guid><description/></item></channel></rss>
|
||||
8
askkennyb/public/tags/intro/index.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/tags/intro/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/tags/intro/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/tags/intro/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Intro"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Intro"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://askkennyb.com/>Home</a> » <a href=https://askkennyb.com/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—let’s build.</p></div><footer class=entry-footer><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Hello, World — Why Ask Kenny B?" href=https://askkennyb.com/blog/hello-world-why-ask-kenny-b/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/tags/intro/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/tags/intro/index.xml" rel="self" type="application/rss+xml"/><item><title>Hello, World — Why Ask Kenny B?</title><link>https://askkennyb.com/blog/hello-world-why-ask-kenny-b/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/tags/intro/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/tags/intro/</title><link rel=canonical href=https://askkennyb.com/tags/intro/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/tags/intro/"></head></html>
|
||||
12
askkennyb/public/tags/networking/index.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/tags/networking/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/tags/networking/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/tags/networking/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Networking"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Networking"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://askkennyb.com/>Home</a> » <a href=https://askkennyb.com/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> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Project Log: Docker Dreams and YAML Nightmares" href=https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/tags/networking/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/tags/networking/index.xml" rel="self" type="application/rss+xml"/><item><title>Project Log: Docker Dreams and YAML Nightmares</title><link>https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/tags/networking/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/tags/networking/</title><link rel=canonical href=https://askkennyb.com/tags/networking/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/tags/networking/"></head></html>
|
||||
8
askkennyb/public/tags/project/index.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<!doctype html><html lang=en dir=auto data-theme=auto><head><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="index, follow"><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=https://askkennyb.com/tags/project/><link crossorigin=anonymous href=/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css integrity="sha256-0b5HjgrCFFb0eiTpLjx1pft6rC/1gn+UR9vJO03Xa1A=" rel="preload stylesheet" as=style><link rel=icon href=https://askkennyb.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://askkennyb.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://askkennyb.com/favicon-32x32.png><link rel=apple-touch-icon href=https://askkennyb.com/apple-touch-icon.png><link rel=mask-icon href=https://askkennyb.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://askkennyb.com/tags/project/index.xml title=rss><link rel=alternate hreflang=en href=https://askkennyb.com/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>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":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><meta property="og:url" content="https://askkennyb.com/tags/project/"><meta property="og:site_name" content="Ask KennyB"><meta property="og:title" content="Project"><meta property="og:description" content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."><meta property="og:locale" content="en-us"><meta property="og:type" content="website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Project"><meta name=twitter:description content="Sharpening tech leadership through hands-on homelab builds, cloud, and security."></head><body class=list id=top><header class=header><nav class=nav><div class=logo><a href=https://askkennyb.com/ accesskey=h title=" (Alt + H)"><img src=https://askkennyb.com/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" 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 1111.21 3 7 7 0 0021 12.79z"/></svg>
|
||||
<svg id="sun" 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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://askkennyb.com/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://askkennyb.com/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://askkennyb.com/>Home</a> » <a href=https://askkennyb.com/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—let’s build.</p></div><footer class=entry-footer><span title='2025-11-02 00:00:00 +0000 UTC'>November 2, 2025</span> · <span>1 min</span> · <span>Kenny Bondelie</span></footer><a class=entry-link aria-label="post link to Hello, World — Why Ask Kenny B?" href=https://askkennyb.com/blog/hello-world-why-ask-kenny-b/></a></article></main><footer class=footer><span>© 2025 <a href=https://askkennyb.com/>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 viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
|
||||
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script></body></html>
|
||||
1
askkennyb/public/tags/project/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<?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>https://askkennyb.com/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="https://askkennyb.com/tags/project/index.xml" rel="self" type="application/rss+xml"/><item><title>Hello, World — Why Ask Kenny B?</title><link>https://askkennyb.com/blog/hello-world-why-ask-kenny-b/</link><pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate><guid>https://askkennyb.com/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
askkennyb/public/tags/project/page/1/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang=en-us><head><title>https://askkennyb.com/tags/project/</title><link rel=canonical href=https://askkennyb.com/tags/project/><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://askkennyb.com/tags/project/"></head></html>
|
||||
BIN
askkennyb/static/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
askkennyb/static/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
askkennyb/static/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
askkennyb/static/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 873 B |
BIN
askkennyb/static/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
askkennyb/static/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
1
askkennyb/static/images/logo_words.svg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
askkennyb/static/images/profile.png
Normal file
|
After Width: | Height: | Size: 351 KiB |
1
askkennyb/static/site.webmanifest
Normal file
@@ -0,0 +1 @@
|
||||
{"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"}
|
||||
112
askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/bug.yaml
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
name: Bug Report 🐞
|
||||
description: Create a report to help us improve
|
||||
title: "[Bug]: "
|
||||
labels: ["bug", "triage"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report :)
|
||||
- Kindly **DO NOT** ask for instructions.
|
||||
- Use [Discussions](https://github.com/adityatelange/hugo-PaperMod/discussions) section if you have a query or doubts or any other relevant question.
|
||||
- You may join [Discord community](https://discord.gg/ahpmTvhVmp) to interact with fellow contributors and users
|
||||
- Read project's [Wiki](https://github.com/adityatelange/hugo-PaperMod/wiki) for detailed documentation.
|
||||
- Read project's [FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs) section for Frequently asked questions.
|
||||
- Search for previous [Issues](https://github.com/adityatelange/hugo-PaperMod/issues)/[Pull Requests](https://github.com/adityatelange/hugo-PaperMod/pulls) if this issue is already reported or fix has been created.
|
||||
- type: textarea
|
||||
id: what_happened
|
||||
attributes:
|
||||
label: What happened?
|
||||
description: Also tell us, what did you expect to happen?
|
||||
placeholder: A bug happened! Here are the screenshots.. Tell us what you see!
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: steps_to_reproduce
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: How to reproduce this issue. Here are the steps...
|
||||
placeholder: |
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: hugo_version
|
||||
attributes:
|
||||
label: Hugo Version
|
||||
description: What version of Hugo are you running?
|
||||
options:
|
||||
- Hugo >= 0.146.0 (Recommended - Minimum version required for PaperMod)
|
||||
- Hugo < 0.146.0 (Incompatible - Not recommended to build PaperMod on lower versions)
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: papermod_version
|
||||
attributes:
|
||||
label: PaperMod Version
|
||||
description: What version of PaperMod are you running?
|
||||
placeholder: |
|
||||
PaperMod v7.0 or
|
||||
Branch master or
|
||||
Commit-id: 3f50861a0ced88f9b614a43662edeb4c0bc45da8
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: browser_type
|
||||
attributes:
|
||||
label: What kind of devices are you seeing the problem on?
|
||||
multiple: true
|
||||
options:
|
||||
- Mobile
|
||||
- Desktop
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: browsers
|
||||
attributes:
|
||||
label: What browsers are you seeing the problem on?
|
||||
multiple: true
|
||||
options:
|
||||
- Firefox
|
||||
- Chrome
|
||||
- Safari
|
||||
- Microsoft Edge
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: browser_version
|
||||
attributes:
|
||||
label: Browser Version
|
||||
description: Please add browser version or enter user agent string (navigator.userAgent)
|
||||
placeholder: ex. Google Chrome 86.0
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Relevant log output
|
||||
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
||||
render: shell
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: repo_url
|
||||
attributes:
|
||||
label: Repository/Source Code link where this issue can be reproduced
|
||||
description: Please add url of the repository where this issue can be reproduced
|
||||
placeholder: https://github.com/<username>/<repo name>
|
||||
validations:
|
||||
required: false
|
||||
- type: checkboxes
|
||||
id: terms
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/adityatelange/hugo-PaperMod?tab=coc-ov-file#readme).
|
||||
options:
|
||||
- label: I agree to follow this project's Code of Conduct
|
||||
required: true
|
||||
validations:
|
||||
required: true
|
||||
5
askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: PaperMod Discussions
|
||||
url: https://github.com/adityatelange/hugo-PaperMod/discussions
|
||||
about: Please ask and answer questions/doubts here, DO NOT open an issue for questions.
|
||||
32
askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/enhancement.yaml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
name: Enhancement 🚀
|
||||
description: Propose a new feature or change for enhancing the experience.
|
||||
title: "[Enhancement]: "
|
||||
labels: ["enhancement", "triage"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this enhancement form :)
|
||||
- Use [Discussions](https://github.com/adityatelange/hugo-PaperMod/discussions) section if you have a query or doubts or any other relevant question.
|
||||
- You may join [Discord community](https://discord.gg/ahpmTvhVmp) to interact with fellow contributors and users
|
||||
- Read project's [Wiki](https://github.com/adityatelange/hugo-PaperMod/wiki) for detailed documentation.
|
||||
- Read project's [FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs) section for Frequently asked questions.
|
||||
- Search for previous [Issues](https://github.com/adityatelange/hugo-PaperMod/issues)/[Pull Requests](https://github.com/adityatelange/hugo-PaperMod/pulls) if this issue is already reported or fix has been created.
|
||||
- type: textarea
|
||||
id: what_happened
|
||||
attributes:
|
||||
label: What you'd like to propose?
|
||||
description:
|
||||
placeholder:
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: terms
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/adityatelange/hugo-PaperMod?tab=coc-ov-file#readme).
|
||||
options:
|
||||
- label: I agree to follow this project's Code of Conduct
|
||||
required: true
|
||||
validations:
|
||||
required: true
|
||||
44
askkennyb/themes/PaperMod/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
<!--
|
||||
|
||||
## READ BEFORE OPENING A PR
|
||||
|
||||
Thank you for contributing to hugo-PaperMod!
|
||||
Please fill out the following questions to make it easier for us to review your
|
||||
changes. You do not need to check all the boxes below.
|
||||
|
||||
**NOTE**: PaperMod does not have any external dependencies fetched from 3rd party
|
||||
CDN servers. However we do have custom Head/Footer extender templates which you can use
|
||||
to add those to your website.
|
||||
https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#custom-head--footer
|
||||
|
||||
-->
|
||||
|
||||
|
||||
**What does this PR change? What problem does it solve?**
|
||||
|
||||
<!--
|
||||
Describe the changes and their purpose here, as detailed as and if needed.
|
||||
|
||||
Please do not add 2 unrelated changes in a single PR as it is difficult to track/revert those in future.
|
||||
-->
|
||||
|
||||
|
||||
**Was the change discussed in an issue or in the Discussions before?**
|
||||
|
||||
<!--
|
||||
Link issues and relevant Discussions posts here.
|
||||
|
||||
If this PR resolves an issue on GitHub, use "Closes #1234" so that the issue
|
||||
is closed automatically when this PR is merged.
|
||||
-->
|
||||
|
||||
|
||||
## PR Checklist
|
||||
|
||||
- [ ] This change adds/updates translations and I have used the [template present here](https://github.com/adityatelange/hugo-PaperMod/wiki/Translations#want-to-add-your-language-).
|
||||
- [ ] I have enabled [maintainer edits for this PR](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork).
|
||||
- [ ] I have verified that the code works as described/as intended.
|
||||
- [ ] This change adds a Social Icon which has a permissive license to use it.
|
||||
- [ ] This change **does not** include any CDN resources/links.
|
||||
- [ ] This change **does not** include any unrelated scripts such as bash and python scripts.
|
||||
- [ ] This change updates the overridden internal templates from HUGO's repository.
|
||||
77
askkennyb/themes/PaperMod/.github/workflows/gh-pages.yml
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
name: Deploy Hugo PaperMod Demo to Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- "images/**"
|
||||
- "LICENSE"
|
||||
- "README.md"
|
||||
branches:
|
||||
- master
|
||||
- exampleSite
|
||||
workflow_dispatch:
|
||||
# manual run
|
||||
inputs:
|
||||
hugoVersion:
|
||||
description: "Hugo Version"
|
||||
required: false
|
||||
default: "0.146.0"
|
||||
|
||||
# Allow one concurrent deployment
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: true
|
||||
|
||||
# Default to bash
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
jobs:
|
||||
# Build job
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
HUGO_VERSION: ${{ github.event.inputs.hugoVersion || '0.146.0' }}
|
||||
steps:
|
||||
- name: Install Hugo CLI
|
||||
run: |
|
||||
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-amd64.deb \
|
||||
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: exampleSite
|
||||
- name: Setup Pages
|
||||
id: pages
|
||||
uses: actions/configure-pages@v5
|
||||
- name: Get Theme
|
||||
run: git submodule update --init --recursive
|
||||
- name: Update theme to Latest commit
|
||||
run: git submodule update --remote --merge
|
||||
- name: Build with Hugo
|
||||
run: |
|
||||
hugo \
|
||||
--buildDrafts --gc \
|
||||
--baseURL ${{ steps.pages.outputs.base_url }}
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: ./public
|
||||
# Deployment job
|
||||
deploy:
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
22
askkennyb/themes/PaperMod/LICENSE
Normal file
@@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||
Copyright (c) 2021-2025 adityatelange
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
106
askkennyb/themes/PaperMod/README.md
Normal file
@@ -0,0 +1,106 @@
|
||||
<h1 align=center>Hugo PaperMod | <a href="https://adityatelange.github.io/hugo-PaperMod/" rel="nofollow">Demo</a></h1>
|
||||
|
||||
<h4 align=center>☄️ Fast | ☁️ Fluent | 🌙 Smooth | 📱 Responsive</h4>
|
||||
<br>
|
||||
|
||||
> Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper/tree/4330c8b12aa48bfdecbcad6ad66145f679a430b3).<br>
|
||||
> The goal of this project is to add more features and customization to the og theme.
|
||||
|
||||
**Documentation** can be found here: [**📚 Wiki**](https://github.com/adityatelange/hugo-PaperMod/wiki)
|
||||
|
||||
**ExampleSite** can be found here: [**exampleSite**](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite). Demo is built up with [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite) as source.
|
||||
|
||||
[](https://themes.gohugo.io/themes/hugo-papermod/)
|
||||
[](https://github.com/gohugoio/hugo/releases/tag/v0.146.0)
|
||||
[](https://discord.gg/ahpmTvhVmp)
|
||||
[](https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE)
|
||||

|
||||
[](https://x.com/intent/tweet/?text=Checkout%20Hugo%20PaperMod%20%E2%9C%A8%0AA%20fast,%20clean,%20responsive%20Hugo%20theme.&url=https://github.com/adityatelange/hugo-PaperMod&hashtags=Hugo,PaperMod)
|
||||
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<kbd><img src="https://user-images.githubusercontent.com/21258296/114303440-bfc0ae80-9aeb-11eb-8cfa-48a4bb385a6d.png" alt="Mockup image" title="Mockup"/></kbd>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## Features/Mods 💥
|
||||
|
||||
- Uses Hugo's asset generator with pipelining, fingerprinting, bundling and minification by default.
|
||||
- 3 Modes:
|
||||
- [Regular Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#regular-mode-default-mode)
|
||||
- [Home-Info Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#home-info-mode)
|
||||
- [Profile Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#profile-mode)
|
||||
- Table of Content Generation (newer implementation).
|
||||
- Archive of posts.
|
||||
- Social Icons (home-info and profile-mode).
|
||||
- Social-Media Share buttons on posts.
|
||||
- Menu location indicator.
|
||||
- Multilingual support. (with language selector).
|
||||
- Taxonomies.
|
||||
- Cover image for each post (with Responsive image support).
|
||||
- Light/Dark theme (automatic theme switch a/c to browser theme and theme-switch button).
|
||||
- SEO Friendly.
|
||||
- Multiple Author support.
|
||||
- Search Page with Fuse.js
|
||||
- Other Posts suggestion below a post
|
||||
- Breadcrumb Navigation.
|
||||
- Code Block Copy buttons.
|
||||
- Hugo's Chroma syntax highlighter.
|
||||
- No webpack, nodejs and other dependencies are required to edit the theme.
|
||||
|
||||
Read Wiki For More Details => **[PaperMod - Features](https://github.com/adityatelange/hugo-PaperMod/wiki/Features)**
|
||||
|
||||
---
|
||||
|
||||
## Install/Update 📥
|
||||
|
||||
Read Wiki For More Details => **[PaperMod - Installation](https://github.com/adityatelange/hugo-PaperMod/wiki/Installation)**
|
||||
|
||||
---
|
||||
|
||||
## FAQs / How To's Guide 🙋
|
||||
|
||||
Read Wiki For More Details => **[PaperMod-FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs)**
|
||||
|
||||
---
|
||||
|
||||
## Social-Icons/Share-Icons 🖼️
|
||||
|
||||
Read Wiki For More Details => **[PaperMod-Icons](https://github.com/adityatelange/hugo-PaperMod/wiki/Icons)**
|
||||
|
||||
---
|
||||
|
||||
## Release Changelog 📃
|
||||
|
||||
Release ChangeLog has info about stuff added: **[Releases](https://github.com/adityatelange/hugo-PaperMod/releases)**
|
||||
|
||||
---
|
||||
|
||||
## [Pagespeed Insights (100% ?)](https://pagespeed.web.dev/report?url=https://adityatelange.github.io/hugo-PaperMod/) 👀
|
||||
|
||||
---
|
||||
|
||||
## Support 🫶
|
||||
|
||||
- Star 🌟 this repository.
|
||||
- Help spread the word about PaperMod by sharing it on social media and recommending it to your friends. 🗣️
|
||||
- You can also sponsor 🏅 on [Github Sponsors](https://github.com/sponsors/adityatelange) / [Ko-Fi](https://ko-fi.com/adityatelange).
|
||||
|
||||
---
|
||||
|
||||
## Special Thanks 🌟
|
||||
|
||||
- [**Highlight.js**](https://github.com/highlightjs/highlight.js)
|
||||
- [**Fuse.js**](https://github.com/krisk/fuse)
|
||||
- [**Feather Icons**](https://github.com/feathericons/feather)
|
||||
- [**Simple Icons**](https://github.com/simple-icons/simple-icons)
|
||||
- **All Contributors and Supporters**
|
||||
|
||||
---
|
||||
|
||||
## Stargazers over time 📈
|
||||
|
||||
[](https://starchart.cc/adityatelange/hugo-PaperMod)
|
||||
11
askkennyb/themes/PaperMod/assets/css/common/404.css
Normal file
@@ -0,0 +1,11 @@
|
||||
.not-found {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 80%;
|
||||
font-size: 160px;
|
||||
font-weight: 700;
|
||||
}
|
||||
44
askkennyb/themes/PaperMod/assets/css/common/archive.css
Normal file
@@ -0,0 +1,44 @@
|
||||
.archive-posts {
|
||||
width: 100%;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.archive-year {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.archive-year:not(:last-of-type) {
|
||||
border-bottom: 2px solid var(--border);
|
||||
}
|
||||
|
||||
.archive-month {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.archive-month-header {
|
||||
margin: 25px 0;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.archive-month:not(:last-of-type) {
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.archive-entry {
|
||||
position: relative;
|
||||
padding: 5px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.archive-entry-title {
|
||||
margin: 5px 0;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.archive-count,
|
||||
.archive-meta {
|
||||
color: var(--secondary);
|
||||
font-size: 14px;
|
||||
}
|
||||
60
askkennyb/themes/PaperMod/assets/css/common/footer.css
Normal file
@@ -0,0 +1,60 @@
|
||||
.footer,
|
||||
.top-link {
|
||||
font-size: 12px;
|
||||
color: var(--secondary);
|
||||
}
|
||||
|
||||
.footer {
|
||||
max-width: calc(var(--main-width) + var(--gap) * 2);
|
||||
margin: auto;
|
||||
padding: calc((var(--footer-height) - var(--gap)) / 2) var(--gap);
|
||||
text-align: center;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.footer span {
|
||||
margin-inline-start: 1px;
|
||||
margin-inline-end: 1px;
|
||||
}
|
||||
|
||||
.footer span:last-child {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
color: inherit;
|
||||
border-bottom: 1px solid var(--secondary);
|
||||
}
|
||||
|
||||
.footer a:hover {
|
||||
border-bottom: 1px solid var(--primary);
|
||||
}
|
||||
|
||||
.top-link {
|
||||
visibility: hidden;
|
||||
position: fixed;
|
||||
bottom: 60px;
|
||||
right: 30px;
|
||||
z-index: 99;
|
||||
background: var(--tertiary);
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
padding: 12px;
|
||||
border-radius: 64px;
|
||||
transition: visibility 0.5s, opacity 0.8s linear;
|
||||
}
|
||||
|
||||
.top-link,
|
||||
.top-link svg {
|
||||
filter: drop-shadow(0px 0px 0px var(--theme));
|
||||
}
|
||||
|
||||
.footer a:hover,
|
||||
.top-link:hover {
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
.top-link:focus,
|
||||
#theme-toggle:focus {
|
||||
outline: 0;
|
||||
}
|
||||
92
askkennyb/themes/PaperMod/assets/css/common/header.css
Normal file
@@ -0,0 +1,92 @@
|
||||
.nav {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
max-width: calc(var(--nav-width) + var(--gap) * 2);
|
||||
margin-inline-start: auto;
|
||||
margin-inline-end: auto;
|
||||
line-height: var(--header-height);
|
||||
}
|
||||
|
||||
.nav a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.logo,
|
||||
#menu {
|
||||
display: flex;
|
||||
margin: auto var(--gap);
|
||||
}
|
||||
|
||||
.logo {
|
||||
flex-wrap: inherit;
|
||||
}
|
||||
|
||||
.logo a {
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.logo a img, .logo a svg {
|
||||
display: inline;
|
||||
vertical-align: middle;
|
||||
pointer-events: none;
|
||||
transform: translate(0, -10%);
|
||||
border-radius: 6px;
|
||||
margin-inline-end: 8px;
|
||||
}
|
||||
|
||||
button#theme-toggle {
|
||||
font-size: 26px;
|
||||
margin: auto 4px;
|
||||
}
|
||||
|
||||
[data-theme="dark"] #moon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[data-theme="light"] #sun {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#menu {
|
||||
list-style: none;
|
||||
word-break: keep-all;
|
||||
overflow-x: auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#menu li + li {
|
||||
margin-inline-start: var(--gap);
|
||||
}
|
||||
|
||||
#menu a {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#menu .active {
|
||||
font-weight: 500;
|
||||
border-bottom: 2px solid currentColor;
|
||||
}
|
||||
|
||||
.lang-switch li,
|
||||
.lang-switch ul,
|
||||
.logo-switches {
|
||||
display: inline-flex;
|
||||
margin: auto 4px;
|
||||
}
|
||||
|
||||
.lang-switch {
|
||||
display: flex;
|
||||
flex-wrap: inherit;
|
||||
}
|
||||
|
||||
.lang-switch a {
|
||||
margin: auto 3px;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.logo-switches {
|
||||
flex-wrap: inherit;
|
||||
}
|
||||
66
askkennyb/themes/PaperMod/assets/css/common/main.css
Normal file
@@ -0,0 +1,66 @@
|
||||
.main {
|
||||
position: relative;
|
||||
min-height: calc(100vh - var(--header-height) - var(--footer-height));
|
||||
max-width: calc(var(--main-width) + var(--gap) * 2);
|
||||
margin: auto;
|
||||
padding: var(--gap);
|
||||
}
|
||||
|
||||
.page-header h1 {
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.pagination {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.pagination a {
|
||||
color: var(--theme);
|
||||
font-size: 13px;
|
||||
line-height: 36px;
|
||||
background: var(--primary);
|
||||
border-radius: calc(36px / 2);
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.pagination .next {
|
||||
margin-inline-start: auto;
|
||||
}
|
||||
|
||||
|
||||
.social-icons a {
|
||||
display: inline-flex;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.social-icons a svg {
|
||||
height: 26px;
|
||||
width: 26px;
|
||||
}
|
||||
|
||||
code {
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
div.highlight,
|
||||
pre {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.copy-code {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 4px;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
background: rgba(78, 78, 78, 0.8);
|
||||
border-radius: var(--radius);
|
||||
padding: 0 5px;
|
||||
font-size: 14px;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
div.highlight:hover .copy-code,
|
||||
pre:hover .copy-code {
|
||||
display: block;
|
||||
}
|
||||
106
askkennyb/themes/PaperMod/assets/css/common/post-entry.css
Normal file
@@ -0,0 +1,106 @@
|
||||
.first-entry {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
min-height: 320px;
|
||||
margin: var(--gap) 0 calc(var(--gap) * 2) 0;
|
||||
}
|
||||
|
||||
.first-entry .entry-header {
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
}
|
||||
|
||||
.first-entry .entry-header h1 {
|
||||
font-size: 34px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.first-entry .entry-content {
|
||||
margin: 14px 0;
|
||||
font-size: 16px;
|
||||
-webkit-line-clamp: 3;
|
||||
}
|
||||
|
||||
.first-entry .entry-footer {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.home-info .entry-content {
|
||||
-webkit-line-clamp: unset;
|
||||
}
|
||||
|
||||
.post-entry {
|
||||
position: relative;
|
||||
margin-bottom: var(--gap);
|
||||
padding: var(--gap);
|
||||
background: var(--entry);
|
||||
border-radius: var(--radius);
|
||||
transition: transform 0.1s;
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.post-entry:active {
|
||||
transform: scale(0.96);
|
||||
}
|
||||
|
||||
.tag-entry .entry-cover {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.entry-header h2 {
|
||||
font-size: 24px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.entry-content {
|
||||
margin: 8px 0;
|
||||
color: var(--secondary);
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.entry-footer {
|
||||
color: var(--secondary);
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.entry-link {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.entry-hint {
|
||||
color: var(--secondary);
|
||||
}
|
||||
|
||||
.entry-hint-parent {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.entry-cover {
|
||||
font-size: 14px;
|
||||
margin-bottom: var(--gap);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.entry-cover img {
|
||||
border-radius: var(--radius);
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.entry-cover a {
|
||||
box-shadow: 0 1px 0 var(--primary);
|
||||
}
|
||||
417
askkennyb/themes/PaperMod/assets/css/common/post-single.css
Normal file
@@ -0,0 +1,417 @@
|
||||
.page-header,
|
||||
.post-header {
|
||||
margin: 24px auto var(--content-gap) auto;
|
||||
}
|
||||
|
||||
.post-title {
|
||||
margin-bottom: 2px;
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.post-description {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.post-meta,
|
||||
.breadcrumbs {
|
||||
color: var(--secondary);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.breadcrumbs {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.i18n_list {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.post-meta .i18n_list li {
|
||||
list-style: none;
|
||||
margin: auto 3px;
|
||||
}
|
||||
|
||||
.breadcrumbs a {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.post-content {
|
||||
color: var(--content);
|
||||
margin: 30px 0;
|
||||
}
|
||||
|
||||
.post-content h3,
|
||||
.post-content h4,
|
||||
.post-content h5,
|
||||
.post-content h6 {
|
||||
margin: 24px 0 16px;
|
||||
}
|
||||
|
||||
.post-content h1 {
|
||||
margin: 40px auto 32px;
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.post-content h2 {
|
||||
margin: 32px auto 24px;
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
.post-content h3 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.post-content h4 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.post-content h5 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.post-content h6 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.post-content a,
|
||||
.post-meta .i18n_list li a,
|
||||
.toc a:hover {
|
||||
box-shadow: 0 1px 0;
|
||||
box-decoration-break: clone;
|
||||
-webkit-box-decoration-break: clone;
|
||||
}
|
||||
|
||||
.post-content a code {
|
||||
margin: auto 0;
|
||||
border-radius: 0;
|
||||
box-shadow: 0 -1px 0 var(--primary) inset;
|
||||
}
|
||||
|
||||
.post-content del {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.post-content dl,
|
||||
.post-content ol,
|
||||
.post-content p,
|
||||
.post-content figure,
|
||||
.post-content ul {
|
||||
margin-bottom: var(--content-gap);
|
||||
}
|
||||
|
||||
.post-content ol,
|
||||
.post-content ul {
|
||||
padding-inline-start: 20px;
|
||||
}
|
||||
|
||||
.post-content li {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.post-content li p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.post-content dl {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.post-content dt {
|
||||
width: 25%;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.post-content dd {
|
||||
width: 75%;
|
||||
margin-inline-start: 0;
|
||||
padding-inline-start: 10px;
|
||||
}
|
||||
|
||||
.post-content dd~dd,
|
||||
.post-content dt~dt {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.post-content table {
|
||||
margin-bottom: var(--content-gap);
|
||||
}
|
||||
|
||||
.post-content table th,
|
||||
.post-content table:not(.highlighttable, .highlight table, .gist .highlight) td {
|
||||
min-width: 80px;
|
||||
padding: 8px 5px;
|
||||
line-height: 1.5;
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.post-content table th {
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
.post-content table:not(.highlighttable) td code:only-child {
|
||||
margin: auto 0;
|
||||
}
|
||||
|
||||
.post-content .highlight table {
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
.post-content .highlight:not(table) {
|
||||
margin: 10px auto;
|
||||
background: var(--code-block-bg) !important;
|
||||
border-radius: var(--radius);
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
.post-content li>.highlight {
|
||||
margin-inline-end: 0;
|
||||
}
|
||||
|
||||
.post-content ul pre {
|
||||
margin-inline-start: calc(var(--gap) * -2);
|
||||
}
|
||||
|
||||
.post-content .highlight pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.post-content .highlighttable {
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.post-content .highlighttable td:first-child {
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
.post-content .highlighttable td .linenodiv {
|
||||
padding-inline-end: 0 !important;
|
||||
}
|
||||
|
||||
.post-content .highlighttable td .highlight,
|
||||
.post-content .highlighttable td .linenodiv pre {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.post-content code {
|
||||
margin: auto 4px;
|
||||
padding: 4px 6px;
|
||||
font-size: 0.78em;
|
||||
line-height: 1.5;
|
||||
background: var(--code-bg);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.post-content pre code {
|
||||
display: grid;
|
||||
margin: auto 0;
|
||||
padding: 10px;
|
||||
color: rgb(213, 213, 214);
|
||||
background: var(--code-block-bg) !important;
|
||||
border-radius: var(--radius);
|
||||
overflow-x: auto;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.post-content blockquote {
|
||||
margin: 20px 0;
|
||||
padding: 0 14px;
|
||||
border-inline-start: 3px solid var(--primary);
|
||||
}
|
||||
|
||||
.post-content hr {
|
||||
margin: 30px 0;
|
||||
height: 2px;
|
||||
background: var(--tertiary);
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.post-content iframe {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.post-content img {
|
||||
border-radius: 4px;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
.post-content img[src*="#center"] {
|
||||
margin: 1rem auto;
|
||||
}
|
||||
|
||||
.post-content figure.align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.post-content figure>figcaption {
|
||||
color: var(--primary);
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin: 8px 0 16px;
|
||||
}
|
||||
|
||||
.post-content figure>figcaption>p {
|
||||
color: var(--secondary);
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.toc {
|
||||
margin-bottom: var(--content-gap);
|
||||
border: 1px solid var(--border);
|
||||
background: var(--code-bg);
|
||||
border-radius: var(--radius);
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
[data-theme="dark"] .toc {
|
||||
background: var(--entry);
|
||||
}
|
||||
|
||||
.toc details summary {
|
||||
cursor: zoom-in;
|
||||
margin-inline-start: 10px;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.toc details[open] summary {
|
||||
cursor: zoom-out;
|
||||
}
|
||||
|
||||
.toc .details {
|
||||
display: inline;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.toc .inner {
|
||||
margin: 5px 20px;
|
||||
padding: 0 10px;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.toc li ul {
|
||||
margin-inline-start: var(--gap);
|
||||
}
|
||||
|
||||
.toc summary:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.post-footer {
|
||||
margin-top: var(--content-gap);
|
||||
}
|
||||
|
||||
.post-footer>* {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.post-tags {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.post-tags li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.post-tags a,
|
||||
.share-buttons,
|
||||
.paginav {
|
||||
border-radius: var(--radius);
|
||||
background: var(--code-bg);
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.post-tags a {
|
||||
display: block;
|
||||
padding: 0 14px;
|
||||
color: var(--secondary);
|
||||
font-size: 14px;
|
||||
line-height: 34px;
|
||||
background: var(--code-bg);
|
||||
}
|
||||
|
||||
.post-tags a:hover,
|
||||
.paginav a:hover {
|
||||
background: var(--border);
|
||||
}
|
||||
|
||||
.share-buttons {
|
||||
padding: 10px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
overflow-x: auto;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.share-buttons li,
|
||||
.share-buttons a {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.share-buttons a:not(:last-of-type) {
|
||||
margin-inline-end: 12px;
|
||||
}
|
||||
|
||||
h1:hover .anchor,
|
||||
h2:hover .anchor,
|
||||
h3:hover .anchor,
|
||||
h4:hover .anchor,
|
||||
h5:hover .anchor,
|
||||
h6:hover .anchor {
|
||||
display: inline-flex;
|
||||
color: var(--secondary);
|
||||
margin-inline-start: 8px;
|
||||
font-weight: 500;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.paginav {
|
||||
display: flex;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.paginav a {
|
||||
padding-inline-start: 14px;
|
||||
padding-inline-end: 14px;
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
.paginav .title {
|
||||
letter-spacing: 1px;
|
||||
text-transform: uppercase;
|
||||
font-size: small;
|
||||
color: var(--secondary);
|
||||
}
|
||||
|
||||
.paginav .prev,
|
||||
.paginav .next {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.paginav span:hover:not(.title) {
|
||||
box-shadow: 0 1px 0;
|
||||
}
|
||||
|
||||
.paginav .next {
|
||||
margin-inline-start: auto;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
[dir="rtl"] .paginav .next {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1>a>svg {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
img.in-text {
|
||||
display: inline;
|
||||
margin: auto;
|
||||
}
|
||||
43
askkennyb/themes/PaperMod/assets/css/common/profile-mode.css
Normal file
@@ -0,0 +1,43 @@
|
||||
.buttons,
|
||||
.main .profile {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.main .profile {
|
||||
align-items: center;
|
||||
min-height: calc(100vh - var(--header-height) - var(--footer-height) - (var(--gap) * 2));
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.profile .profile_inner {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.profile img {
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.buttons {
|
||||
flex-wrap: wrap;
|
||||
max-width: 400px;
|
||||
}
|
||||
|
||||
.button {
|
||||
background: var(--tertiary);
|
||||
border-radius: var(--radius);
|
||||
margin: 8px;
|
||||
padding: 6px;
|
||||
transition: transform 0.1s;
|
||||
}
|
||||
|
||||
.button-inner {
|
||||
padding: 0 8px;
|
||||
}
|
||||
|
||||
.button:active {
|
||||
transform: scale(0.96);
|
||||
}
|
||||
45
askkennyb/themes/PaperMod/assets/css/common/search.css
Normal file
@@ -0,0 +1,45 @@
|
||||
#searchbox input {
|
||||
padding: 4px 10px;
|
||||
width: 100%;
|
||||
color: var(--primary);
|
||||
font-weight: bold;
|
||||
border: 2px solid var(--tertiary);
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
#searchbox input:focus {
|
||||
border-color: var(--secondary);
|
||||
}
|
||||
|
||||
#searchResults li {
|
||||
list-style: none;
|
||||
border-radius: var(--radius);
|
||||
padding: 10px;
|
||||
margin: 10px 0;
|
||||
position: relative;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
#searchResults {
|
||||
margin: 10px 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#searchResults li:active {
|
||||
transition: transform 0.1s;
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
#searchResults a {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#searchResults .focus {
|
||||
transform: scale(0.98);
|
||||
border: 2px solid var(--tertiary);
|
||||
}
|
||||
18
askkennyb/themes/PaperMod/assets/css/common/terms.css
Normal file
@@ -0,0 +1,18 @@
|
||||
.terms-tags li {
|
||||
display: inline-block;
|
||||
margin: 10px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.terms-tags a {
|
||||
display: block;
|
||||
padding: 3px 10px;
|
||||
background: var(--tertiary);
|
||||
border-radius: 6px;
|
||||
transition: transform 0.1s;
|
||||
}
|
||||
|
||||
.terms-tags a:active {
|
||||
background: var(--tertiary);
|
||||
transform: scale(0.96);
|
||||
}
|
||||
6
askkennyb/themes/PaperMod/assets/css/core/license.css
Normal file
@@ -0,0 +1,6 @@
|
||||
/*
|
||||
PaperMod v8+
|
||||
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||
Copyright (c) 2021-2025 adityatelange
|
||||
*/
|
||||
118
askkennyb/themes/PaperMod/assets/css/core/reset.css
Normal file
@@ -0,0 +1,118 @@
|
||||
*,
|
||||
::after,
|
||||
::before {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
overflow-y: scroll;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
a,
|
||||
button,
|
||||
body,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
font-size: 18px;
|
||||
line-height: 1.6;
|
||||
word-break: break-word;
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
article,
|
||||
aside,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
nav,
|
||||
section,
|
||||
table {
|
||||
display: block;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
body,
|
||||
figure,
|
||||
ul {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
overflow-x: auto;
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
button,
|
||||
input,
|
||||
textarea {
|
||||
padding: 0;
|
||||
font: inherit;
|
||||
background: 0 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
textarea {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
button,
|
||||
input[type=button],
|
||||
input[type=submit] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input:-webkit-autofill,
|
||||
textarea:-webkit-autofill {
|
||||
box-shadow: 0 0 0 50px var(--theme) inset;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
}
|
||||
40
askkennyb/themes/PaperMod/assets/css/core/theme-vars.css
Normal file
@@ -0,0 +1,40 @@
|
||||
:root {
|
||||
--gap: 24px;
|
||||
--content-gap: 20px;
|
||||
--nav-width: 1024px;
|
||||
--main-width: 720px;
|
||||
--header-height: 60px;
|
||||
--footer-height: 60px;
|
||||
--radius: 8px;
|
||||
--theme: rgb(255, 255, 255);
|
||||
--entry: rgb(255, 255, 255);
|
||||
--primary: rgb(30, 30, 30);
|
||||
--secondary: rgb(108, 108, 108);
|
||||
--tertiary: rgb(214, 214, 214);
|
||||
--content: rgb(31, 31, 31);
|
||||
--code-block-bg: rgb(28, 29, 33);
|
||||
--code-bg: rgb(245, 245, 245);
|
||||
--border: rgb(238, 238, 238);
|
||||
color-scheme: light;
|
||||
}
|
||||
|
||||
:root[data-theme="dark"] {
|
||||
--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(--code-bg);
|
||||
}
|
||||
|
||||
[data-theme="dark"] .list {
|
||||
background: var(--theme);
|
||||
}
|
||||
55
askkennyb/themes/PaperMod/assets/css/core/zmedia.css
Normal file
@@ -0,0 +1,55 @@
|
||||
@media screen and (max-width: 768px) {
|
||||
/* theme-vars */
|
||||
:root {
|
||||
--gap: 14px;
|
||||
}
|
||||
|
||||
/* profile-mode */
|
||||
.profile img {
|
||||
transform: scale(0.85);
|
||||
}
|
||||
|
||||
/* post-entry */
|
||||
.first-entry {
|
||||
min-height: 260px;
|
||||
}
|
||||
|
||||
/* archive */
|
||||
.archive-month {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.archive-year {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/* footer */
|
||||
.footer {
|
||||
padding: calc((var(--footer-height) - var(--gap) - 10px) / 2) var(--gap);
|
||||
}
|
||||
}
|
||||
|
||||
/* footer */
|
||||
@media screen and (max-width: 900px) {
|
||||
.list .top-link {
|
||||
transform: translateY(-5rem);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 340px) {
|
||||
.share-buttons {
|
||||
justify-content: unset;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion) {
|
||||
/* terms; profile-mode; post-single; post-entry; post-entry; search; search */
|
||||
.terms-tags a:active,
|
||||
.button:active,
|
||||
.post-entry:active,
|
||||
.top-link,
|
||||
#searchResults .focus,
|
||||
#searchResults li:active {
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
5
askkennyb/themes/PaperMod/assets/css/extended/blank.css
Normal file
@@ -0,0 +1,5 @@
|
||||
/*
|
||||
This is just a placeholder blank stylesheet so as to support adding custom styles budled with theme's default styles
|
||||
|
||||
Read https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#bundling-custom-css-with-themes-assets for more info
|
||||
*/
|
||||
35
askkennyb/themes/PaperMod/assets/css/extended/custom.css
Normal file
@@ -0,0 +1,35 @@
|
||||
/* Body and headings */
|
||||
body { font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif; }
|
||||
h1,h2,h3,h4 { font-family: "Source Serif 4", ui-serif, Georgia, serif; }
|
||||
|
||||
/* Brand accent + links */
|
||||
a { color: #163b8e; }
|
||||
a:hover { color: #27b7c4; }
|
||||
|
||||
/* Card/list accents (safe generic selectors) */
|
||||
.post-entry, .archive-entry, .post-content blockquote {
|
||||
border-color: #27b7c4;
|
||||
}
|
||||
|
||||
/* Bio Block */
|
||||
.bio-block {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1.2rem;
|
||||
margin-top: 2rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.bio-photo {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
box-shadow: 0 2px 5px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.bio-text {
|
||||
max-width: 60ch;
|
||||
font-size: 1.05em;
|
||||
line-height: 1.6;
|
||||
}
|
||||
24
askkennyb/themes/PaperMod/assets/css/includes/chroma-mod.css
Normal file
@@ -0,0 +1,24 @@
|
||||
.chroma {
|
||||
background-color: unset !important;
|
||||
}
|
||||
|
||||
.chroma .hl {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.chroma .lnt {
|
||||
padding: 0 0 0 12px;
|
||||
}
|
||||
|
||||
.highlight pre.chroma code {
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.highlight pre.chroma .line .cl,
|
||||
.chroma .ln {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.chroma .lntd:last-of-type {
|
||||
width: 100%;
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
/* Background */ .bg { color: #cad3f5; background-color: #24273a; }
|
||||
/* PreWrapper */ .chroma { color: #cad3f5; background-color: #24273a; }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { color: #ed8796 }
|
||||
/* CodeLine */ .chroma .cl { }
|
||||
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color: #474733 }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #8087a2 }
|
||||
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #8087a2 }
|
||||
/* Line */ .chroma .line { display: flex; }
|
||||
/* Keyword */ .chroma .k { color: #c6a0f6 }
|
||||
/* KeywordConstant */ .chroma .kc { color: #f5a97f }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #ed8796 }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #8bd5ca }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #c6a0f6 }
|
||||
/* KeywordReserved */ .chroma .kr { color: #c6a0f6 }
|
||||
/* KeywordType */ .chroma .kt { color: #ed8796 }
|
||||
/* Name */ .chroma .n { }
|
||||
/* NameAttribute */ .chroma .na { color: #8aadf4 }
|
||||
/* NameBuiltin */ .chroma .nb { color: #91d7e3 }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { color: #91d7e3 }
|
||||
/* NameClass */ .chroma .nc { color: #eed49f }
|
||||
/* NameConstant */ .chroma .no { color: #eed49f }
|
||||
/* NameDecorator */ .chroma .nd { color: #8aadf4; font-weight: bold }
|
||||
/* NameEntity */ .chroma .ni { color: #8bd5ca }
|
||||
/* NameException */ .chroma .ne { color: #f5a97f }
|
||||
/* NameFunction */ .chroma .nf { color: #8aadf4 }
|
||||
/* NameFunctionMagic */ .chroma .fm { color: #8aadf4 }
|
||||
/* NameLabel */ .chroma .nl { color: #91d7e3 }
|
||||
/* NameNamespace */ .chroma .nn { color: #f5a97f }
|
||||
/* NameOther */ .chroma .nx { }
|
||||
/* NameProperty */ .chroma .py { color: #f5a97f }
|
||||
/* NameTag */ .chroma .nt { color: #c6a0f6 }
|
||||
/* NameVariable */ .chroma .nv { color: #f4dbd6 }
|
||||
/* NameVariableClass */ .chroma .vc { color: #f4dbd6 }
|
||||
/* NameVariableGlobal */ .chroma .vg { color: #f4dbd6 }
|
||||
/* NameVariableInstance */ .chroma .vi { color: #f4dbd6 }
|
||||
/* NameVariableMagic */ .chroma .vm { color: #f4dbd6 }
|
||||
/* Literal */ .chroma .l { }
|
||||
/* LiteralDate */ .chroma .ld { }
|
||||
/* LiteralString */ .chroma .s { color: #a6da95 }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #ed8796 }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #a6da95 }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #a6da95 }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #8aadf4 }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #6e738d }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #a6da95 }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #8aadf4 }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #6e738d }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #a6da95 }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #a6da95 }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #8bd5ca }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #a6da95 }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #a6da95 }
|
||||
/* LiteralNumber */ .chroma .m { color: #f5a97f }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #f5a97f }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #f5a97f }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #f5a97f }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #f5a97f }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #f5a97f }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #f5a97f }
|
||||
/* Operator */ .chroma .o { color: #91d7e3; font-weight: bold }
|
||||
/* OperatorWord */ .chroma .ow { color: #91d7e3; font-weight: bold }
|
||||
/* Punctuation */ .chroma .p { }
|
||||
/* Comment */ .chroma .c { color: #6e738d; font-style: italic }
|
||||
/* CommentHashbang */ .chroma .ch { color: #6e738d; font-style: italic }
|
||||
/* CommentMultiline */ .chroma .cm { color: #6e738d; font-style: italic }
|
||||
/* CommentSingle */ .chroma .c1 { color: #6e738d; font-style: italic }
|
||||
/* CommentSpecial */ .chroma .cs { color: #6e738d; font-style: italic }
|
||||
/* CommentPreproc */ .chroma .cp { color: #6e738d; font-style: italic }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #6e738d; font-weight: bold; font-style: italic }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { color: #ed8796; background-color: #363a4f }
|
||||
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||
/* GenericError */ .chroma .gr { color: #ed8796 }
|
||||
/* GenericHeading */ .chroma .gh { color: #f5a97f; font-weight: bold }
|
||||
/* GenericInserted */ .chroma .gi { color: #a6da95; background-color: #363a4f }
|
||||
/* GenericOutput */ .chroma .go { }
|
||||
/* GenericPrompt */ .chroma .gp { }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { color: #f5a97f; font-weight: bold }
|
||||
/* GenericTraceback */ .chroma .gt { color: #ed8796 }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||
/* TextWhitespace */ .chroma .w { }
|
||||
59
askkennyb/themes/PaperMod/assets/css/includes/scroll-bar.css
Normal file
@@ -0,0 +1,59 @@
|
||||
/* from reset */
|
||||
::-webkit-scrollbar-track {
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--tertiary);
|
||||
border: 5px solid var(--theme);
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
[data-theme="light"] .list::-webkit-scrollbar-thumb {
|
||||
border: 5px solid var(--code-bg);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--secondary);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar:not(.highlighttable, .highlight table, .gist .highlight) {
|
||||
background: var(--theme);
|
||||
}
|
||||
|
||||
/* from post-single */
|
||||
.post-content .highlighttable td .highlight pre code::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.post-content :not(table) ::-webkit-scrollbar-thumb {
|
||||
border: 2px solid var(--code-block-bg);
|
||||
background: rgb(113, 113, 117);
|
||||
}
|
||||
|
||||
.post-content :not(table) ::-webkit-scrollbar-thumb:hover {
|
||||
background: rgb(163, 163, 165);
|
||||
}
|
||||
|
||||
.gist table::-webkit-scrollbar-thumb {
|
||||
border: 2px solid rgb(255, 255, 255);
|
||||
background: rgb(173, 173, 173);
|
||||
}
|
||||
|
||||
.gist table::-webkit-scrollbar-thumb:hover {
|
||||
background: rgb(112, 112, 112);
|
||||
}
|
||||
|
||||
.post-content table::-webkit-scrollbar-thumb {
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
/* from zmedia */
|
||||
@media screen and (min-width: 768px) {
|
||||
|
||||
/* reset */
|
||||
::-webkit-scrollbar {
|
||||
width: 19px;
|
||||
height: 11px;
|
||||
}
|
||||
}
|
||||
152
askkennyb/themes/PaperMod/assets/js/fastsearch.js
Normal file
@@ -0,0 +1,152 @@
|
||||
import * as params from '@params';
|
||||
|
||||
let fuse; // holds our search engine
|
||||
let resList = document.getElementById('searchResults');
|
||||
let sInput = document.getElementById('searchInput');
|
||||
let first, last, current_elem = null
|
||||
let resultsAvailable = false;
|
||||
|
||||
// load our search index
|
||||
window.onload = function () {
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status === 200) {
|
||||
let data = JSON.parse(xhr.responseText);
|
||||
if (data) {
|
||||
// fuse.js options; check fuse.js website for details
|
||||
let options = {
|
||||
distance: 100,
|
||||
threshold: 0.4,
|
||||
ignoreLocation: true,
|
||||
keys: [
|
||||
'title',
|
||||
'permalink',
|
||||
'summary',
|
||||
'content'
|
||||
]
|
||||
};
|
||||
if (params.fuseOpts) {
|
||||
options = {
|
||||
isCaseSensitive: params.fuseOpts.iscasesensitive ?? false,
|
||||
includeScore: params.fuseOpts.includescore ?? false,
|
||||
includeMatches: params.fuseOpts.includematches ?? false,
|
||||
minMatchCharLength: params.fuseOpts.minmatchcharlength ?? 1,
|
||||
shouldSort: params.fuseOpts.shouldsort ?? true,
|
||||
findAllMatches: params.fuseOpts.findallmatches ?? false,
|
||||
keys: params.fuseOpts.keys ?? ['title', 'permalink', 'summary', 'content'],
|
||||
location: params.fuseOpts.location ?? 0,
|
||||
threshold: params.fuseOpts.threshold ?? 0.4,
|
||||
distance: params.fuseOpts.distance ?? 100,
|
||||
ignoreLocation: params.fuseOpts.ignorelocation ?? true
|
||||
}
|
||||
}
|
||||
fuse = new Fuse(data, options); // build the index from the json file
|
||||
}
|
||||
} else {
|
||||
console.log(xhr.responseText);
|
||||
}
|
||||
}
|
||||
};
|
||||
xhr.open('GET', "../index.json");
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
function activeToggle(ae) {
|
||||
document.querySelectorAll('.focus').forEach(function (element) {
|
||||
// rm focus class
|
||||
element.classList.remove("focus")
|
||||
});
|
||||
if (ae) {
|
||||
ae.focus()
|
||||
document.activeElement = current_elem = ae;
|
||||
ae.parentElement.classList.add("focus")
|
||||
} else {
|
||||
document.activeElement.parentElement.classList.add("focus")
|
||||
}
|
||||
}
|
||||
|
||||
function reset() {
|
||||
resultsAvailable = false;
|
||||
resList.innerHTML = sInput.value = ''; // clear inputbox and searchResults
|
||||
sInput.focus(); // shift focus to input box
|
||||
}
|
||||
|
||||
// execute search as each character is typed
|
||||
sInput.onkeyup = function (e) {
|
||||
// run a search query (for "term") every time a letter is typed
|
||||
// in the search box
|
||||
if (fuse) {
|
||||
let results;
|
||||
if (params.fuseOpts) {
|
||||
results = fuse.search(this.value.trim(), {limit: params.fuseOpts.limit}); // the actual query being run using fuse.js along with options
|
||||
} else {
|
||||
results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
|
||||
}
|
||||
if (results.length !== 0) {
|
||||
// build our html if result exists
|
||||
let resultSet = ''; // our results bucket
|
||||
|
||||
for (let item in results) {
|
||||
resultSet += `<li class="post-entry"><header class="entry-header">${results[item].item.title} »</header>` +
|
||||
`<a href="${results[item].item.permalink}" aria-label="${results[item].item.title}"></a></li>`
|
||||
}
|
||||
|
||||
resList.innerHTML = resultSet;
|
||||
resultsAvailable = true;
|
||||
first = resList.firstChild;
|
||||
last = resList.lastChild;
|
||||
} else {
|
||||
resultsAvailable = false;
|
||||
resList.innerHTML = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sInput.addEventListener('search', function (e) {
|
||||
// clicked on x
|
||||
if (!this.value) reset()
|
||||
})
|
||||
|
||||
// kb bindings
|
||||
document.onkeydown = function (e) {
|
||||
let key = e.key;
|
||||
let ae = document.activeElement;
|
||||
|
||||
let inbox = document.getElementById("searchbox").contains(ae)
|
||||
|
||||
if (ae === sInput) {
|
||||
let elements = document.getElementsByClassName('focus');
|
||||
while (elements.length > 0) {
|
||||
elements[0].classList.remove('focus');
|
||||
}
|
||||
} else if (current_elem) ae = current_elem;
|
||||
|
||||
if (key === "Escape") {
|
||||
reset()
|
||||
} else if (!resultsAvailable || !inbox) {
|
||||
return
|
||||
} else if (key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
if (ae == sInput) {
|
||||
// if the currently focused element is the search input, focus the <a> of first <li>
|
||||
activeToggle(resList.firstChild.lastChild);
|
||||
} else if (ae.parentElement != last) {
|
||||
// if the currently focused element's parent is last, do nothing
|
||||
// otherwise select the next search result
|
||||
activeToggle(ae.parentElement.nextSibling.lastChild);
|
||||
}
|
||||
} else if (key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
if (ae.parentElement == first) {
|
||||
// if the currently focused element is first item, go to input box
|
||||
activeToggle(sInput);
|
||||
} else if (ae != sInput) {
|
||||
// if the currently focused element is input box, do nothing
|
||||
// otherwise select the previous search result
|
||||
activeToggle(ae.parentElement.previousSibling.lastChild);
|
||||
}
|
||||
} else if (key === "ArrowRight") {
|
||||
ae.click(); // click on active link
|
||||
}
|
||||
}
|
||||