This documentation accompanies my version controlled homelab where I self host many services which which either better or worsen my life.
I’ve had many iterations of my homelab and this site will document my encounters to help others own the road.
We use an open source and extensible continuous delivery system called Flux.
It’s actually called “Flux2”, but most of the community refers to it as “Flux”.Flux is simply a tool that ensures that the Kubernetes cluster it is managing stays in sync with the configurations presenting in this repository.We use other tools like Renovate to watch for dependency updates and automatically create new pull requests.
When these pull requests are merged, Flux will automatically apply the changes to the cluster.
Thanks to onedr0p, there is a cluster template that allows you to easily get started with your own kubernetes cluster at home. You don’t need to have multiple computers or a fancy setup to get one working.If you’re interested, you can also join and talk wit the community: Home Operations. Several people are involved daily and it makes for some interesting conversations.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Kashall's Home Cluster","colors":{"primary":"#5D4CFE","light":"#8477FF","dark":"#5D4CFE"},"favicon":"/.assets/logo.svg","logo":"https://mintcdn.com/jordanjones/LISrBBVnarL-4y2L/.assets/logo.svg?fit=max\u0026auto=format\u0026n=LISrBBVnarL-4y2L\u0026q=85\u0026s=517c831b6ebb00b00561d5aca7d78cfd","navbar":{"links":[{"label":"Discord","href":"https://discord.gg/home-operations"}],"primary":{"type":"button","label":"Github","href":"https://github.com/kashalls/home-cluster"}},"footer":{"socials":{"github":"https://github.com/kashalls","linkedin":"https://www.linkedin.com/in/jordpjones/"}},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Kubernetes Docs","href":"https://kubernetes.io/docs/home/","icon":"book-open-cover"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"jordanjones","hasAudioNarration":false,"actualSubdomain":"jordanjones","customDomains":["docs.ok8.sh"],"gitSource":{"type":"github","owner":"waifulabs","repo":"infrastructure","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae921fb5bfa35cf9044947d:success","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Home Lab","count":12},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"My Home Operations","count":5},{"language":"default","tag":"Kubernetes and You","count":3},{"language":"default","tag":"Welcome","count":2},{"language":"default","tag":"Storage","count":2}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"introduction","slug":"/introduction","pageMetadata":{"title":"Introduction","description":"The nodes and the bees.","icon":"hand-wave","href":"/introduction","hidden":false},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"The nodes and the bees.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`what-is-this`,children:`What is this?`}),`\n`,_jsx(_components.p,{children:`This documentation accompanies my version controlled homelab where I self host many services which which either better or worsen my life.\nI’ve had many iterations of my homelab and this site will document my encounters to help others own the road.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-does-your-home-operations-work`,children:`How does your home operations work?`}),`\n`,_jsxs(_components.p,{children:[`We use an open source and extensible continuous delivery system called `,_jsx(_components.a,{href:`https://github.com/fluxcd/flux2`,children:`Flux`}),`.\nIt’s actually called “Flux2”, but most of the community refers to it as “Flux”.`]}),`\n`,_jsx(_components.p,{children:`Flux is simply a tool that ensures that the Kubernetes cluster it is managing stays in sync with the configurations presenting in this repository.`}),`\n`,_jsxs(_components.p,{children:[`We use other tools like `,_jsx(_components.a,{href:`https://github.com/renovatebot/renovate`,children:`Renovate`}),` to watch for dependency updates and automatically create new pull requests.\nWhen these pull requests are merged, Flux will automatically apply the changes to the cluster.`]}),`\n`,_jsx(Heading,{level:`2`,id:`neat-how-do-i-start-my-own`,children:`Neat, How do I start my own?`}),`\n`,_jsxs(_components.p,{children:[`Thanks to `,_jsx(_components.a,{href:`https://github.com/onedr0p`,children:`onedr0p`}),`, there is a `,_jsx(_components.a,{href:`https://github.com/onedr0p/flux-cluster-template`,children:`cluster template`}),` that allows you to easily get started with your own kubernetes cluster at home. You don’t need to have multiple computers or a fancy setup to get one working.`]}),`\n`,_jsxs(_components.p,{children:[`If you’re interested, you can also join and talk wit the community: `,_jsx(_components.a,{href:`https://discord.gg/home-operations`,children:`Home Operations`}),`. Several people are involved daily and it makes for some interesting conversations.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Introduction","description":"The nodes and the bees.","icon":"hand-wave","href":"/introduction","hidden":false}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What is this?","slug":"what-is-this","depth":2,"children":[]},{"title":"How does your home operations work?","slug":"how-does-your-home-operations-work","depth":2,"children":[]},{"title":"Neat, How do I start my own?","slug":"neat-how-do-i-start-my-own","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"jordanjones","siteName":"Kashall's Home Cluster","title":"Introduction - Kashall's Home Cluster","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-07T03:55:12.941Z","originalFileLocation":"introduction.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The nodes and the bees.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Kashall\u0026#x27;s Home Cluster\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Introduction - Kashall\u0026#x27;s Home Cluster\">\u003cmeta data-mint-head property=\"og:description\" content=\"The nodes and the bees.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kashall\u0026#x27;s Home Cluster\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.ok8.sh/introduction\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://jordanjones.mintlify.site/_mintlify/api/og/v2?division=Welcome\u0026amp;title=Introduction\u0026amp;description=The+nodes+and+the+bees.\u0026amp;theme=fb7505fb8f64f1ddd1dc5121\u0026amp;signature=f1b9b5d2948b755455f50f62c302bcf998a50cee3aaa3b5196b4dd5b7b0a5e5d\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Introduction - Kashall\u0026#x27;s Home Cluster\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The nodes and the bees.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://jordanjones.mintlify.site/_mintlify/api/og/v2?division=Welcome\u0026amp;title=Introduction\u0026amp;description=The+nodes+and+the+bees.\u0026amp;theme=fb7505fb8f64f1ddd1dc5121\u0026amp;signature=f1b9b5d2948b755455f50f62c302bcf998a50cee3aaa3b5196b4dd5b7b0a5e5d\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/jordanjones/wSnCqkxelxkn0qUj/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Kashall\u0026#x27;s Home Cluster\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5D4CFE\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.ok8.sh/introduction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/introduction.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.ok8.sh/#organization\",\"name\":\"Kashall's Home Cluster\",\"url\":\"https://docs.ok8.sh\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/jordanjones/LISrBBVnarL-4y2L/.assets/logo.svg?fit=max\u0026auto=format\u0026n=LISrBBVnarL-4y2L\u0026q=85\u0026s=517c831b6ebb00b00561d5aca7d78cfd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.ok8.sh#website\",\"name\":\"Kashall's Home Cluster\",\"url\":\"https://docs.ok8.sh\",\"publisher\":{\"@id\":\"https://docs.ok8.sh/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.ok8.sh/introduction#webpage\",\"url\":\"https://docs.ok8.sh/introduction\",\"name\":\"Introduction\",\"description\":\"The nodes and the bees.\",\"dateModified\":\"2026-01-07T03:55:12.941Z\",\"isPartOf\":{\"@id\":\"https://docs.ok8.sh#website\"},\"breadcrumb\":{\"@id\":\"https://docs.ok8.sh/introduction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.ok8.sh/introduction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Kashall's Home Cluster\",\"item\":\"https://docs.ok8.sh\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction\",\"item\":\"https://docs.ok8.sh/introduction\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.ok8.sh/introduction#article\",\"headline\":\"Introduction\",\"name\":\"Introduction\",\"description\":\"The nodes and the bees.\",\"url\":\"https://docs.ok8.sh/introduction\",\"mainEntityOfPage\":{\"@id\":\"https://docs.ok8.sh/introduction#webpage\"},\"dateModified\":\"2026-01-07T03:55:12.941Z\",\"publisher\":{\"@id\":\"https://docs.ok8.sh/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.ok8.sh#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Kashall's Home Cluster\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Kashall's Home Cluster","nav":{"global":{"anchors":[{"anchor":"Kubernetes Docs","href":"https://kubernetes.io/docs/home/","icon":"book-open-cover"}]},"tabs":[{"tab":"Home Lab","groups":[{"group":"Welcome","pages":[{"title":"Introduction","icon":"hand-wave","href":"/introduction"},{"title":"Special Thanks","icon":"medal","description":null,"href":"/special-thanks"}]},{"group":"My Home Operations","pages":[{"title":"Cloud Dependencies","icon":"cloud","href":"/homelab/cloud-dependencies"},{"title":"Github Repository","icon":"github","href":"/homelab/github-repository"},{"title":"The Hardware","icon":"server","href":"/homelab/hardware"},{"title":"Janky Networking","icon":"network-wired","href":"/homelab/networking"},{"title":"Monitoring Everything","icon":"chart-user","href":"/homelab/monitoring"}]},{"group":"Kubernetes and You","pages":[{"title":"Talos Linux","icon":"bird","href":"/kubernetes/talos"},{"title":"Configuration","icon":"gears","href":"/kubernetes/configuration"},{"title":"Deployment","icon":"truck-fast","href":"/kubernetes/deployment"}]},{"group":"Storage","pages":[{"title":"Previous Installations","icon":"clock-rotate-left","href":"/storage/previous-installations"},{"title":"TrueNAS","icon":"badger-honey","href":"/storage/truenas"}]}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/overview"}]}]},"basePath":"","title":"Introduction - Kashall's Home Cluster","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}