两个 K3s 集群里大多是第三方镜像,镜像不动也会冒出新 CVE。Trivy Operator 每天重扫并接进 Prometheus 告警,日常要按 CVE ID 分诊,能升级就升级,升不了带证据豁免,并用报告数对工作负载数确认扫描没有静默失败。
Posts for: #homelab
homelab 的 Terraform state 从本地迁到 Cloudflare R2
8 个 Terraform root 的 state 原先只存在一台笔记本上,换台机器就没法接着跑。迁到 R2 的私有桶后用 use_lockfile 加锁,凭据由包装脚本从 Vault 取,改 state 之前先在本地拍一份快照。
在 Cloudflare Tunnel 后面按 key 查 LiteLLM 的用量和来源 IP
LiteLLM 的 spend log 按 key 记了 token 和来源 IP,放在 Cloudflare Tunnel 后面时 IP 全是集群内地址。改用 pre-call hook 读 CF-Connecting-IP,对外的 key 另加别名和限流。
xiaogpt 怎么接管小爱音箱:轮询原理与 homelab 部署
xiaogpt 不改音箱固件,靠每秒轮询小米云的对话记录截下带关键词的问题,再交给大模型回答。在新加坡密码登录会被小米风控拒绝,只能用 passToken;它会轮换,登录失败还会删掉 token 文件,所以在 K3s 里放 PVC、单文件挂载。
容器内存 99% 但没有 OOM:可能是页缓存
容器内存告警冲到 99.45% 却没触发 OOM,峰值里约 87% 是页缓存;同一个容器热缓存下重启只剩 23.70%,最后把告警的分子换成 RSS。
restic 夜备内存告警:排查 fsGroup 触发的整库重读
夜间备份那段时间内存接近 limit,按每次运行重新对齐数据后才发现根因:书库 pod 重建时 kubelet 对 local PV 做 fsGroup 权限处理,restic 因此重读整库。
用 external-dns 接管 homelab 的子域名 DNS
两个 K3s 集群的子域名 DNS 从 Terraform 手改交给 external-dns 之后,加一个子域名只剩一步,真正的难点是把既有记录零停机迁过去,得先预埋 ownership TXT。
把重复 series 拦在入库前:Prometheus 内存瘦身
homelab Prometheus 的 active series 少了一半,起因是 k3s 单进程把同一批 apiserver 和 etcd 指标重复暴露;三层核查确认可以丢就在入库前拦掉,内存峰值跟着降了大半。
Homelab 消息通知:Alertmanager 通过 Gotify 推送告警
在 Homelab K3s 集群中,通过部署 alertmanager_gotify_bridge 将 Prometheus Alertmanager 的告警推送到 Gotify,实现自托管消息通知。记录从 Vault 存储 Token、ESO 同步 Secret、到 Alertmanager 路由配置的完整步骤。
Codex CLI 对接远程 Ollama
Codex CLI 用自定义 Provider 配置对接远程 Ollama,网络走 Tailscale,本地编码助手就能用上 Homelab 上的模型;模型怎么选、本地和远程的能力边界在哪也写了。