--- theme: gaia _class: lead backgroundColor: #fff backgroundImage: url('https://0.s3.envato.com/files/138380962/Preview%20Image%20White%20Low%20Poly%20Background2.jpg') marp: true --- ![bg left:40% 80%](https://marcusnoble.co.uk/images/marcus.jpg) # **Personal Infrastructure** **Marcus Noble** 🔗 https://marcusnoble.co.uk 🐦 @Marcus_Noble_ ✨ AverageMarcus --- ## A little about me and the past - I work professionally as a "DevOps" engineer at Elsevier with a focus on Kubernetes and containers - Previously a JavaScript developer, now a Go developer - I've been running my own servers for as long back as I can recall (historically cheap VPS's with applications running either directly on the OS or using Dokku) - I like to tinker with "Smart Home" stuff --- ## Where things are at today... * **87** uniquely identifiable devices connected to my home network * A Zigbee network with **32** devices * A single-node Kubernetes cluster running on a dedicated desktop machine hosting **14** applications * An autoscaling 1-3 node Kubernetes cluster hosted on Scaleway running **~30** applications * 1 Raspberry Pi running Home Assistant to control all smart devices in my home * 1 Raspberry Pi running OctoPi to control my 3D printer --- ## Previously * Raspberry Pi 4 running k3s Kubernetes cluster - Only ARM arch support - required me to manually rebuild some images - I had stability and performance issues * Dokku running on a VPS server hosted on bHost (now Mythic Beasts) --- ## Local Network setup **FTTP** - Zen Internet ↯ **ISP Modem** ↯ **Powerline** ↯ **Router** - TP-Link Archer C7 ↯ **Mesh WiFi beacons** - TP-Link Deco M4 (x3) ↯ **87 devices** --- ## Local Network setup 4 devices connected via ethernet Everything else via WiFi All devices have static IPs and assigned hostnames (based on the periodic table of elements) --- ## Kubernetes - local An old desktop machine repurposed as a single-node Kubernetes cluster **OS**: Ubuntu **Kubernetes Version**: Microk8s v1.20.1 **Specs**: CPU - 4 core | Memory - 12Gb | HDD - Lots --- ## Kubernetes - local **Primary Use**: Hosting sensitive or local-specific applications that I want to keep off the internet. E.g. - custom built CCTV monitoring application covering the 8 cameras I currently have set up - automated download tools so I can kick off downloads remotely while I'm out - DNS-based ad blocker (AdGuard) --- ## Kubernetes - cloud Hosted on Scaleway's managed Kubernetes platform, Kapsule. 1-3 *DEV1_M* instances, autoscaled based on load. All defined in code using Terraform and stored in git. **Kubernetes Version**: v1.20 **Specs**: CPU - 3 vCPUs | Memory - 4Gb | HDD - 40Gb + 14 PVCs of varying size --- ## Kubernetes - cloud **Primary Use**: Hosting internet facing services and providing a secure, authenticated tunnel to my local cluster E.g. - My personal blog plus some related sites - Self-hosted alternatives to cloud services: Gitea, Nextcloud, Harbor, Photoprism, etc. - Tekton - handle all my CI/CD needs, triggered by webhooks from Gitea - "Utility" applications to make my life easier: - Convert SVG to DXF - used when creating 3D print designs from SVG - website-to-remarkable - lets me send a webpage as a PDF to my reMarkable tablet for later reading --- ## Time for a quick break ☕️ Questions so far? --- ## Smart Home