[{"data":1,"prerenderedAt":319},["ShallowReactive",2],{"blog-\u002Fposts\u002Fgithub-repository":3,"blog-sidebar-posts":266},{"id":4,"title":5,"body":6,"category":248,"date":249,"description":250,"draft":251,"extension":252,"icon":253,"meta":254,"navigation":255,"order":239,"path":256,"section":248,"seo":257,"sidebarTitle":258,"stem":259,"tags":260,"updated":264,"__hash__":265},"blog\u002Fposts\u002Fgithub-repository.md","Github Repository",{"type":7,"value":8,"toc":237},"minimark",[9,26,31,36,39,51,74,144,148,157,160,168,172,186,193,196,218,225,229],[10,11,12,13,17,18,25],"p",{},"You don't have to build your gitops homelab around github. There are plenty of people who use GitLab or other git-based providers.\nFlux lists their ",[14,15,16],"em",{},"supported"," bootstrap providers on ",[19,20,24],"a",{"href":21,"rel":22},"https:\u002F\u002Ffluxcd.io\u002Fflux\u002Finstallation\u002F#bootstrap-providers",[23],"nofollow","their documentation",".",[27,28,30],"h2",{"id":29},"configuration","Configuration",[32,33,35],"h3",{"id":34},"actions-repository-secrets","Actions > Repository Secrets",[10,37,38],{},"These are required if you are using my workflow actions to automate some tasks in your cluster.",[10,40,41,45,46,25],{},[42,43,44],"code",{},"BOT_*"," secrets are required if you are using a custom github application with your actions.\nAll of these values will be located at your ",[19,47,50],{"href":48,"rel":49},"https:\u002F\u002Fgithub.com\u002Fsettings\u002Fapps\u002F",[23],"application's settings",[10,52,53,56,57,60,61,64,65,67,68,56,71,25],{},[42,54,55],{},"CLOUDFLARE_ACCOUNT_ID"," and ",[42,58,59],{},"CLOUDFLARE_API_TOKEN"," optional as they allow the ",[42,62,63],{},"schemas.yaml"," action to publish schematics to some of the cluster resources.\n",[42,66,59],{}," has the permissions ",[42,69,70],{},"Account \u002F Cloudflare Pages \u002F Edit",[42,72,73],{},"User \u002F User Details \u002F Read",[75,76,77,90],"table",{},[78,79,80],"thead",{},[81,82,83,87],"tr",{},[84,85,86],"th",{},"Name",[84,88,89],{},"Description",[91,92,93,102,110,118,125,136],"tbody",{},[81,94,95,99],{},[96,97,98],"td",{},"BOT_APP_ID",[96,100,101],{},"The github application id.",[81,103,104,107],{},[96,105,106],{},"BOT_APP_PRIVATE_KEY",[96,108,109],{},"A base64 encoded private key from your application.",[81,111,112,115],{},[96,113,114],{},"BOT_USERNAME",[96,116,117],{},"Your bot's literal username.",[81,119,120,122],{},[96,121,55],{},[96,123,124],{},"Found on any domain's overview page under Account ID.",[81,126,127,129],{},[96,128,59],{},[96,130,131,132],{},"Create one at ",[19,133,134],{"href":134,"rel":135},"https:\u002F\u002Fdash.cloudflare.com\u002Fprofile\u002Fapi-tokens",[23],[81,137,138,141],{},[96,139,140],{},"KUBECONFIG",[96,142,143],{},"A base64 encoded kubeconfig generated from your cluster.",[32,145,147],{"id":146},"self-hosted-runners","Self Hosted Runners",[10,149,150,151,156],{},"I self-host an ",[19,152,155],{"href":153,"rel":154},"https:\u002F\u002Fgithub.com\u002Factions\u002Factions-runner-controller",[23],"actions-runner-controller"," in my cluster.\nThis helps run some sensitive workflows inside my cluster and doesn't require me to expose it to the outside world.",[10,158,159],{},"You'll need to provide roughly the same information as listed above.",[10,161,162,163],{},"View more: ",[19,164,167],{"href":165,"rel":166},"https:\u002F\u002Fgithub.com\u002Fwaifulabs\u002Finfrastructure\u002Ftree\u002Fmain\u002Fkubernetes\u002Fmain\u002Fapps\u002Factions-runner-system",[23],"home-cluster\u002Fkubernetes\u002Fmain\u002Fapps\u002Factions-runner-system",[32,169,171],{"id":170},"webhooks","Webhook(s)",[10,173,174,175,180,181,185],{},"I utilize Flux's ",[19,176,179],{"href":177,"rel":178},"https:\u002F\u002Ffluxcd.io\u002Fflux\u002Fguides\u002Fwebhook-receivers\u002F",[23],"Webhook Receivers",".\nBy design, flux is ",[182,183,184],"strong",{},"pull-based",", meaning it runs on an interval unless told to pull otherwise.",[10,187,188,189,192],{},"You can utilize these receivers to make super responsive ",[182,190,191],{},"push-based"," pipelines.",[10,194,195],{},"Some specific settings:",[197,198,199,206,212],"ul",{},[200,201,202,205],"li",{},[42,203,204],{},"Content type",": application\u002Fx-www-form-urlencoded",[200,207,208,211],{},[42,209,210],{},"SSL Verification",": Enabled",[200,213,214,217],{},[42,215,216],{},"Which events?",": Just push.",[10,219,162,220],{},[19,221,224],{"href":222,"rel":223},"https:\u002F\u002Fgithub.com\u002Fwaifulabs\u002Finfrastructure\u002Ftree\u002Fmain\u002Fkubernetes\u002Fmain\u002Fapps\u002Fflux-system\u002Faddons\u002Fapp\u002Fwebhooks\u002Fgithub",[23],"home-cluster\u002Fkubernetes\u002Fmain\u002Fapps\u002Faddons",[32,226,228],{"id":227},"deploy-keys","Deploy Keys",[10,230,231,232,236],{},"Flux uses ",[19,233,228],{"href":234,"rel":235},"https:\u002F\u002Ffluxcd.io\u002Fflux\u002Finstallation\u002Fbootstrap\u002Fgithub\u002F#github-deploy-keys",[23]," to allow bootstraping flux over SSH instead of HTTPS.\nI don't really use it for this as I have a whole system already revolving around HTTP\u002FS.\nI instead use it for ImagePolicy(s) as Flux is configured to check for specific application updates faster that Renovate is.\nThis is mostly for me when I am developing an application and I don't want to keep pushing the same commit to update the digest.",{"title":238,"searchDepth":239,"depth":239,"links":240},"",2,[241],{"id":29,"depth":239,"text":30,"children":242},[243,245,246,247],{"id":34,"depth":244,"text":35},3,{"id":146,"depth":244,"text":147},{"id":170,"depth":244,"text":171},{"id":227,"depth":244,"text":228},"homelab","2024-09-21","Some of the things I do in my github repository that isn't shown",false,"md","i-ph-github-logo",{},true,"\u002Fposts\u002Fgithub-repository",{"title":5,"description":250},null,"posts\u002Fgithub-repository",[261,262,263],"gitops","flux","github","2025-11-15","0ffgA_Cl3iEPvnZcO3qRdJ2wDIfUx3VytJD4vih7-QE",[267,275,276,284,289,294,300,305,310,314],{"title":268,"sidebarTitle":258,"description":269,"path":270,"icon":271,"order":258,"section":272,"category":273,"date":274},"Hello, world","The site has a blog now. Here's what to expect.","\u002Fposts\u002Fhello-world","i-ph-hand-waving","blog","meta","2026-10-05",{"title":5,"sidebarTitle":258,"description":250,"path":256,"icon":253,"order":239,"section":248,"category":248,"date":249},{"title":277,"sidebarTitle":278,"description":238,"path":279,"icon":280,"order":281,"section":282,"category":282,"date":283},"Allowing Custom Secure Boot Keys on the Minisforum MS-01","MS-01 Secure Boot","\u002Fposts\u002Fms01-secure-boot","i-ph-key",4,"guides","2024-09-17",{"title":285,"sidebarTitle":258,"description":286,"path":287,"icon":288,"order":244,"section":282,"category":282,"date":283},"Proxy DHCP PXE Booting","Utilize dnsmasq to allow PXE bootstraping your Kubernetes nodes seamlessly.","\u002Fposts\u002Fproxy-dhcp-booting","i-ph-arrows-left-right",{"title":290,"sidebarTitle":258,"description":291,"path":292,"icon":293,"order":239,"section":282,"category":282,"date":283},"Understanding Talos","Talos provides a secure, immutable, minimal and confusing operating system for new users.","\u002Fposts\u002Funderstanding-talos","i-ph-bird",{"title":295,"sidebarTitle":258,"description":238,"path":296,"icon":297,"order":298,"section":248,"category":248,"date":299},"Cloud Dependencies","\u002Fposts\u002Fcloud-dependencies","i-ph-cloud",1,"2024-09-16",{"title":301,"sidebarTitle":258,"description":302,"path":303,"icon":271,"order":298,"section":248,"category":304,"date":299},"Introduction","The nodes and the bees.","\u002Fposts\u002Fintroduction","welcome",{"title":306,"sidebarTitle":258,"description":307,"path":308,"icon":309,"order":281,"section":248,"category":248,"date":299},"Janky Networking","See how my network comes to a crawl once RSTP is disabled...","\u002Fposts\u002Fnetworking","i-ph-network",{"title":311,"sidebarTitle":258,"description":238,"path":312,"icon":313,"order":239,"section":248,"category":304,"date":299},"Special Thanks","\u002Fposts\u002Fspecial-thanks","i-ph-medal",{"title":315,"sidebarTitle":258,"description":238,"path":316,"icon":317,"order":239,"section":248,"category":318,"date":299},"TrueNAS","\u002Fposts\u002Ftruenas","i-simple-icons-truenas","storage",1792630416446]