[{"data":1,"prerenderedAt":278},["ShallowReactive",2],{"post-\u002Fblog\u002Fhello-from-the-rack":3,"surround-\u002Fblog\u002Fhello-from-the-rack":272},{"id":4,"title":5,"body":6,"date":258,"description":259,"draft":260,"extension":261,"meta":262,"navigation":263,"path":264,"readTime":265,"seo":266,"stem":267,"tags":268,"__hash__":271},"blog\u002Fblog\u002Fhello-from-the-rack.md","Hello from the rack",{"type":7,"value":8,"toc":254},"minimark",[9,13,18,21,44,50,54,57,137,140,182,185,241,247,250],[10,11,12],"p",{},"This is the first entry in the log. It exists for two reasons: I keep solving the same problems twice, and writing things down is the cheapest fix I know.",[14,15,17],"h2",{"id":16},"what-you-will-find-here","What you will find here",[10,19,20],{},"Posts fall into three loose buckets:",[22,23,24,32,38],"ul",{},[25,26,27,31],"li",{},[28,29,30],"strong",{},"Homelab."," Hardware, hypervisors, containers, DNS, backups and the occasional outage.",[25,33,34,37],{},[28,35,36],{},"Music."," Recording guitar, production workflows and how the signal chain actually works.",[25,39,40,43],{},[28,41,42],{},"Projects."," Small tools and experiments, including the site you are reading.",[45,46,47],"tip",{},[10,48,49],{},"Every post is a Markdown file in the repository. Frontmatter carries the title, date and tags, and the tag pages are generated from it.",[14,51,53],{"id":52},"how-posts-look","How posts look",[10,55,56],{},"Code gets a filename and syntax highlighting:",[58,59,65],"pre",{"className":60,"code":61,"filename":62,"language":63,"meta":64,"style":64},"language-yaml shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","services:\n  whoami:\n    image: traefik\u002Fwhoami\n    restart: unless-stopped\n    ports:\n      - \"8080:80\"\n","compose.yaml","yaml","",[66,67,68,81,89,102,113,121],"code",{"__ignoreMap":64},[69,70,73,77],"span",{"class":71,"line":72},"line",1,[69,74,76],{"class":75},"suXOh","services",[69,78,80],{"class":79},"soVBu",":\n",[69,82,84,87],{"class":71,"line":83},2,[69,85,86],{"class":75},"  whoami",[69,88,80],{"class":79},[69,90,92,95,98],{"class":71,"line":91},3,[69,93,94],{"class":75},"    image",[69,96,97],{"class":79},":",[69,99,101],{"class":100},"sTbE_"," traefik\u002Fwhoami\n",[69,103,105,108,110],{"class":71,"line":104},4,[69,106,107],{"class":75},"    restart",[69,109,97],{"class":79},[69,111,112],{"class":100}," unless-stopped\n",[69,114,116,119],{"class":71,"line":115},5,[69,117,118],{"class":75},"    ports",[69,120,80],{"class":79},[69,122,124,127,131,134],{"class":71,"line":123},6,[69,125,126],{"class":79},"      -",[69,128,130],{"class":129},"sbYkP"," \"",[69,132,133],{"class":100},"8080:80",[69,135,136],{"class":129},"\"\n",[10,138,139],{},"Commands are plain shell blocks:",[58,141,145],{"className":142,"code":143,"language":144,"meta":64,"style":64},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","docker compose up -d\ndocker compose logs -f --tail 20\n","bash",[66,146,147,163],{"__ignoreMap":64},[69,148,149,153,156,159],{"class":71,"line":72},[69,150,152],{"class":151},"sYn-s","docker",[69,154,155],{"class":100}," compose",[69,157,158],{"class":100}," up",[69,160,162],{"class":161},"sz9Cv"," -d\n",[69,164,165,167,169,172,175,178],{"class":71,"line":83},[69,166,152],{"class":151},[69,168,155],{"class":100},[69,170,171],{"class":100}," logs",[69,173,174],{"class":161}," -f",[69,176,177],{"class":161}," --tail",[69,179,181],{"class":180},"s7CZa"," 20\n",[10,183,184],{},"Tables are used when a comparison is genuinely tabular:",[186,187,188,204],"table",{},[189,190,191],"thead",{},[192,193,194,198,201],"tr",{},[195,196,197],"th",{},"Area",[195,199,200],{},"Tooling",[195,202,203],{},"Status",[205,206,207,219,230],"tbody",{},[192,208,209,213,216],{},[210,211,212],"td",{},"Containers",[210,214,215],{},"Docker, Compose",[210,217,218],{},"Daily",[192,220,221,224,227],{},[210,222,223],{},"Hypervisor",[210,225,226],{},"Proxmox",[210,228,229],{},"Regular",[192,231,232,235,238],{},[210,233,234],{},"Audio",[210,236,237],{},"DAW, amp sims",[210,239,240],{},"Learning",[242,243,244],"blockquote",{},[10,245,246],{},"Write down the boring parts. They are the ones you will forget.",[10,248,249],{},"That is the whole idea. More soon.",[251,252,253],"style",{},"html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}",{"title":64,"searchDepth":83,"depth":83,"links":255},[256,257],{"id":16,"depth":83,"text":17},{"id":52,"depth":83,"text":53},"2026-09-20","What this log is for, what I plan to write about, and how the posts are put together.",false,"md",{},true,"\u002Fblog\u002Fhello-from-the-rack",null,{"title":5,"description":259},"blog\u002Fhello-from-the-rack",[269,270],"meta","homelab","rCeSNr0zmBBEt-5037QnkcKSJQZK1OqFbwrCM5H8Y9g",[265,273],{"title":274,"path":275,"stem":276,"description":277,"children":-1},"The boring homelab checklist","\u002Fblog\u002Fhomelab-first-checklist","blog\u002Fhomelab-first-checklist","Six things to sort out before you buy a second server, in the order they usually bite.",1793217405787]