<?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 Minoko Labs</title><link>https://minoko.life/tags/homelab/</link><description>Recent content in Homelab on Minoko Labs</description><generator>Hugo -- 0.154.0</generator><language>en-us</language><lastBuildDate>Tue, 27 Jan 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://minoko.life/tags/homelab/index.xml" rel="self" type="application/rss+xml"/><item><title>Mochi: An Algorithmic Trading Backtest Platform on Kubernetes</title><link>https://minoko.life/posts/mochi-backtest-architecture/</link><pubDate>Tue, 27 Jan 2026 12:00:00 +0000</pubDate><guid>https://minoko.life/posts/mochi-backtest-architecture/</guid><description>Architecture of a multi-language backtest pipeline using Argo Workflows, Trino, MinIO, and a React dashboard on a homelab Kubernetes cluster</description></item><item><title>Kubernetes Local PVs and Symlinks Do Not Mix</title><link>https://minoko.life/posts/kubernetes-local-pv-symlink/</link><pubDate>Mon, 26 Jan 2026 20:00:00 +0100</pubDate><guid>https://minoko.life/posts/kubernetes-local-pv-symlink/</guid><description>Why Kubernetes local persistent volumes fail to mount when the hostPath is a symlink, and how to fix it with bind mounts.</description></item><item><title>OSC 52: Copy to Local Clipboard Over SSH</title><link>https://minoko.life/posts/osc52-clipboard-over-ssh/</link><pubDate>Sun, 18 Jan 2026 18:00:00 +0000</pubDate><guid>https://minoko.life/posts/osc52-clipboard-over-ssh/</guid><description>Use OSC 52 escape sequences to copy text from a remote server directly to your local Wayland or X11 clipboard through an SSH connection.</description></item><item><title>Avoiding Stale Builds with Kaniko and Container Registry Caching</title><link>https://minoko.life/posts/kaniko-cache-stale-builds/</link><pubDate>Sun, 18 Jan 2026 14:00:00 +0000</pubDate><guid>https://minoko.life/posts/kaniko-cache-stale-builds/</guid><description>Debug and fix stale container builds caused by Kaniko layer caching and Kubernetes node image caching when using mutable tags like latest.</description></item><item><title>Clean URLs with NGINX Ingress Redirects</title><link>https://minoko.life/posts/nginx-ingress-path-redirect/</link><pubDate>Sun, 18 Jan 2026 12:50:00 +0000</pubDate><guid>https://minoko.life/posts/nginx-ingress-path-redirect/</guid><description>Use a separate Ingress with permanent-redirect annotation to create clean URL redirects when configuration snippets are disabled.</description></item><item><title>VLAN Traffic Separation with MikroTik and OPNsense</title><link>https://minoko.life/posts/vlan-traffic-separation-mikrotik-opnsense/</link><pubDate>Fri, 09 Jan 2026 21:12:46 +0000</pubDate><guid>https://minoko.life/posts/vlan-traffic-separation-mikrotik-opnsense/</guid><description>Configure VLAN separation on a MikroTik CRS310 switch with OPNsense to isolate Kubernetes traffic from bulk data transfers on a dual-homed node.</description></item><item><title>Recovering a MikroTik Switch After VLAN Misconfiguration Lockout</title><link>https://minoko.life/posts/mikrotik-vlan-lockout-recovery/</link><pubDate>Fri, 09 Jan 2026 20:04:49 +0000</pubDate><guid>https://minoko.life/posts/mikrotik-vlan-lockout-recovery/</guid><description>How to regain access to a MikroTik CRS310 switch after a VLAN misconfiguration locks out management access, using MAC-Telnet for Layer 2 recovery.</description></item><item><title>Simplifying SSH Access to Network Devices with SSH Config</title><link>https://minoko.life/posts/ssh-config-network-devices/</link><pubDate>Tue, 06 Jan 2026 21:58:37 +0000</pubDate><guid>https://minoko.life/posts/ssh-config-network-devices/</guid><description>Use SSH config aliases to simplify connections to MikroTik and other network devices with pre-configured usernames and hostnames.</description></item><item><title>Configuring Alertmanager Slack Notifications with kube-prometheus-stack</title><link>https://minoko.life/posts/alertmanager-slack-notifications/</link><pubDate>Sun, 04 Jan 2026 00:55:04 +0000</pubDate><guid>https://minoko.life/posts/alertmanager-slack-notifications/</guid><description>Setting up Prometheus Alertmanager to send notifications to Slack, including gotchas with Prometheus operator compatibility and Linkerd sidecar injection.</description></item><item><title>Adding NetworkPolicies for Defense-in-Depth with Linkerd</title><link>https://minoko.life/posts/networkpolicy-defense-in-depth/</link><pubDate>Sat, 03 Jan 2026 23:49:47 +0000</pubDate><guid>https://minoko.life/posts/networkpolicy-defense-in-depth/</guid><description>Implementing Kubernetes NetworkPolicies alongside Linkerd mTLS to restrict pod-to-pod communication in critical namespaces.</description></item><item><title>In-Cluster GitLab Runner with Kubernetes Executor</title><link>https://minoko.life/posts/in-cluster-gitlab-runner-kubernetes/</link><pubDate>Sat, 03 Jan 2026 20:51:28 +0000</pubDate><guid>https://minoko.life/posts/in-cluster-gitlab-runner-kubernetes/</guid><description>Deploy a GitLab Runner inside your Kubernetes cluster using the Kubernetes executor. CI jobs spawn as pods, use Kaniko for rootless Docker builds, and cache dependencies in MinIO.</description></item><item><title>Enabling HTTPS on Wiki.js with Let's Encrypt via OPNsense</title><link>https://minoko.life/posts/wikijs-https-letsencrypt/</link><pubDate>Sat, 03 Jan 2026 19:49:58 +0000</pubDate><guid>https://minoko.life/posts/wikijs-https-letsencrypt/</guid><description>Migrate Wiki.js from HTTP to HTTPS using a Let&amp;#39;s Encrypt wildcard certificate managed by OPNsense, with automatic synchronization to Kubernetes via a CronJob.</description></item><item><title>Adding Comments with Comentario: Self-Hosted PostgreSQL-Backed Comments</title><link>https://minoko.life/posts/adding-comments-with-comentario/</link><pubDate>Sat, 03 Jan 2026 12:00:00 +0000</pubDate><guid>https://minoko.life/posts/adding-comments-with-comentario/</guid><description>Deploy Comentario as a self-hosted PostgreSQL-backed comment system for Hugo blogs, with GitHub OAuth, custom theming, and HAProxy TLS termination.</description></item><item><title>Exposing an NVIDIA RTX 5070 Ti GPU in Kubernetes with Time-Slicing</title><link>https://minoko.life/posts/nvidia-gpu-kubernetes-blackwell/</link><pubDate>Fri, 02 Jan 2026 23:00:00 +0000</pubDate><guid>https://minoko.life/posts/nvidia-gpu-kubernetes-blackwell/</guid><description>Expose an NVIDIA RTX 5070 Ti Blackwell GPU in Kubernetes with time-slicing support, including PyTorch compatibility requirements for sm_120 compute capability.</description></item><item><title>OPNsense IDS Monitoring with Suricata, Loki, and Grafana</title><link>https://minoko.life/posts/opnsense-ids-monitoring-with-loki/</link><pubDate>Thu, 01 Jan 2026 23:30:00 +0000</pubDate><guid>https://minoko.life/posts/opnsense-ids-monitoring-with-loki/</guid><description>Forward OPNsense Suricata IDS alerts to Loki via syslog and visualize intrusion detection events in Grafana alongside firewall logs.</description></item><item><title>Automatic Certificate Rotation with cert-manager and Linkerd</title><link>https://minoko.life/posts/cert-manager-linkerd-rotation/</link><pubDate>Thu, 01 Jan 2026 12:00:00 +0000</pubDate><guid>https://minoko.life/posts/cert-manager-linkerd-rotation/</guid><description>Automate Linkerd identity issuer certificate rotation using cert-manager, with a CronJob to sync secret formats and Prometheus alerts for expiry warnings.</description></item><item><title>Enabling CPU and Memory Stats in k9s on Bare-Metal Kubernetes</title><link>https://minoko.life/posts/k9s-cpu-memory-metrics/</link><pubDate>Thu, 01 Jan 2026 10:00:00 +0000</pubDate><guid>https://minoko.life/posts/k9s-cpu-memory-metrics/</guid><description>Enable CPU and memory metrics in k9s on bare-metal kubeadm clusters by installing metrics-server with the required kubelet TLS configuration.</description></item><item><title>Automated Dependency Updates with Renovate on GitLab</title><link>https://minoko.life/posts/automated-dependency-updates-with-renovate/</link><pubDate>Wed, 31 Dec 2025 14:00:00 +0000</pubDate><guid>https://minoko.life/posts/automated-dependency-updates-with-renovate/</guid><description>Configure Renovate on GitLab to automatically create merge requests for Dockerfile and git submodule dependency updates using scheduled CI jobs.</description></item><item><title>Upgrading My DMZ Router for Better Performance</title><link>https://minoko.life/posts/dmz-router-upgrade/</link><pubDate>Wed, 31 Dec 2025 14:00:00 +0000</pubDate><guid>https://minoko.life/posts/dmz-router-upgrade/</guid><description>Benchmark network performance before and after upgrading a DMZ router from gigabit to 2.5G, measuring real-world throughput improvements with a MikroTik CRS310.</description></item><item><title>Claude Code on Mobile: Using tmux and Termius for Coding from Your Phone</title><link>https://minoko.life/posts/claude-code-on-mobile-with-tmux-and-termius/</link><pubDate>Wed, 31 Dec 2025 10:00:00 +0000</pubDate><guid>https://minoko.life/posts/claude-code-on-mobile-with-tmux-and-termius/</guid><description>Run Claude Code remotely from your phone using tmux for persistent sessions and Termius for mobile SSH, enabling coding from anywhere.</description></item><item><title>Preventing Your Dual-Homed Linux Box from Bridging Networks</title><link>https://minoko.life/posts/dual-homed-network-isolation-article/</link><pubDate>Tue, 30 Dec 2025 10:00:00 +0000</pubDate><guid>https://minoko.life/posts/dual-homed-network-isolation-article/</guid><description>Prevent a dual-homed Linux workstation from bridging networks using firewalld zones and FORWARD rules, with exceptions for Kubernetes pod networking.</description></item><item><title>GitOps Blog Deployment with ArgoCD and Automatic Image Updates</title><link>https://minoko.life/posts/gitops-blog-deployment-with-argocd/</link><pubDate>Mon, 29 Dec 2025 19:00:00 +0000</pubDate><guid>https://minoko.life/posts/gitops-blog-deployment-with-argocd/</guid><description>Set up a fully automated blog deployment pipeline using ArgoCD and Image Updater, where pushing to main automatically builds, detects, and deploys new container images to Kubernetes.</description></item><item><title>Configuring OPNsense Firewall Rules via API for Cross-VLAN Kubernetes</title><link>https://minoko.life/posts/opnsense-api-kubernetes-firewall/</link><pubDate>Sun, 28 Dec 2025 21:14:00 +0000</pubDate><guid>https://minoko.life/posts/opnsense-api-kubernetes-firewall/</guid><description>Configure OPNsense firewall rules via REST API to allow Kubernetes traffic between VLANs, including firewall rules, node preparation, and HAProxy backend updates for a cross-network cluster.</description></item><item><title>Why You Need --disable-eviction for Homelab Kubernetes Node Drains</title><link>https://minoko.life/posts/disable-eviction-node-drains/</link><pubDate>Sun, 28 Dec 2025 21:00:00 +0000</pubDate><guid>https://minoko.life/posts/disable-eviction-node-drains/</guid><description>Solve PodDisruptionBudget deadlocks in homelab Kubernetes clusters by using --disable-eviction during node drains when running single-replica workloads.</description></item><item><title>Why Your Kubernetes Control Plane Has a NoSchedule Taint</title><link>https://minoko.life/posts/control-plane-taint/</link><pubDate>Sun, 28 Dec 2025 13:00:00 +0000</pubDate><guid>https://minoko.life/posts/control-plane-taint/</guid><description>Understand why Kubernetes control plane nodes have a NoSchedule taint and when you should (or shouldn&amp;#39;t) remove it to run workloads on control plane nodes.</description></item><item><title>Backing Up etcd to MinIO with a Kubernetes CronJob</title><link>https://minoko.life/posts/backing-up-etcd-to-minio/</link><pubDate>Sun, 28 Dec 2025 12:00:00 +0000</pubDate><guid>https://minoko.life/posts/backing-up-etcd-to-minio/</guid><description>Create automated daily etcd backups using a Kubernetes CronJob that snapshots cluster state and uploads to MinIO with automatic retention management.</description></item><item><title>Upgrading Kubernetes with Ansible: A Homelab Guide</title><link>https://minoko.life/posts/upgrading-kubernetes-with-ansible/</link><pubDate>Sat, 27 Dec 2025 20:00:00 +0000</pubDate><guid>https://minoko.life/posts/upgrading-kubernetes-with-ansible/</guid><description>Automate Kubernetes cluster upgrades with Ansible playbooks that handle etcd backups, version validation, serial worker upgrades, and health verification.</description></item><item><title>Backing Up Kubernetes Data to Scaleway Object Storage</title><link>https://minoko.life/posts/backup-minio-to-scaleway/</link><pubDate>Sat, 27 Dec 2025 18:00:00 +0000</pubDate><guid>https://minoko.life/posts/backup-minio-to-scaleway/</guid><description>Set up offsite cloud backups for Kubernetes databases using MinIO mirror and Scaleway Object Storage, with scheduled sync via CronJob and automatic retention.</description></item></channel></rss>