Changelog archive — v1.5
Moved verbatim from CHANGELOG.md; never edited.
[v1.5.4] - 2026-02-11
Bug Fixes
- Bump Fly.io proxy VM memory from 256MB to 512MB to prevent Alloy OOM kills.
Documentation
- Add plan documents for Dagger CI/CD adoption and upstream fork strategy.
- Add plan documents for OIDC provider adoption, zot registry hardening, and expanded network segmentation details.
- Review security-model.md: fix op CLI pattern, add Tailscale Operator section.
[v1.5.3] - 2026-02-11
Features
- Add BorgBase offsite backup repository for 3-2-1 backup strategy
- Fly.io proxy serves a friendly error page when upstreams are unreachable (indri offline, Tailscale tunnel down, etc.). Test at
docs.eblu.me/_error. - Add
op-backupmise task for encrypted 1Password disaster recovery backups via borgmatic - Add SMART disk health monitoring for sifaka NAS with smartctl_exporter, Grafana dashboard, Ansible playbook, and Caddy L4 routing via ops.eblu.me.
Bug Fixes
- Replace
op item get --fieldswithop readin all mise tasks (tailnet-up, tailnet-preview, dns-up, dns-preview) to prevent multi-line secret corruption. - Fix 502 errors during Fly.io proxy deploys by deferring health check until Tailscale is connected.
- Fix minikube ansible role not restarting cluster after power loss — status check only examined host VM state, missing stopped kubelet/apiserver.
- Log real client IPs in Fly.io proxy access logs using Fly-Client-IP header instead of showing the internal proxy address.
Infrastructure
- Switch CI container builds from deprecated
docker buildtodocker buildx build(BuildKit). - Install
docker-buildx-pluginin forgejo-runner image to supportdocker buildx build. - Eliminate 502 errors during Fly.io proxy deploys by starting nginx after Tailscale, switching to bluegreen deploys, and using service-level health checks for traffic gating.
Documentation
- Add troubleshooting guide for CNI conflict after unclean shutdown to restart-indri how-to.
- Add migration plan for Forgejo brew-to-source transition
- Document
op readvsop item getconvention for 1Password secret retrieval - Add power infrastructure reference card documenting the battery-backed UPS chain (Anker SOLIX F2000 → CyberPower UPS → homelab).
- Add plan and reference card for UniFi Express 7 Pulumi IaC management.
- Add how-to guide for restoring 1Password backup from borgmatic, with cross-links from disaster recovery, borgmatic, 1password, and backup policy docs
[v1.5.2] - 2026-02-09
Features
- Filter blumeops-tasks to only show dated/recurring tasks when due today or earlier.
- Add
docs-reviewmise task that sorts docs bylast-reviewedfrontmatter date, prioritizing never-reviewed cards. Updated the review-documentation how-to to match.
Bug Fixes
- Fix fly-deploy WARNING by starting nginx before Tailscale, deferring upstream DNS resolution to request time.
Infrastructure
- Migrate all Ansible
op item getcalls toop readURI syntax for cleaner output and remove theregex_replaceworkaround on the Fly deploy token. - Restrict fly.io proxy ACLs to dedicated
tag:flyio-targetendpoints instead of broadtag:k8sandtag:homelabgrants. Migrate all Tailscale Ingresses to a shared ProxyGroup with per-Ingress tag overrides (tag:flyio-targeton docs, loki, prometheus). AddautoApproversfor VIP service routes. Enable--accept-routeson indri for ProxyGroup VIP routing.
[v1.5.1] - 2026-02-08
Features
- Add observability to Fly.io proxy: Alloy collects nginx access logs (→ Loki) and derived metrics (→ Prometheus), with Grafana dashboards for Docs APM and Fly.io proxy health.
Infrastructure
- Add docs.eblu.me and Fly.io health check to services-check
[v1.5.0] - 2026-02-08
Features
- Add Fly.io public reverse proxy infrastructure for exposing services to the internet (first target: docs.eblu.me)
Documentation
- Add how-to guide for exposing services publicly via Fly.io reverse proxy + Tailscale tunnel.
- Update docs for public proxy: canonical URL is now docs.eblu.me, add Fly.io proxy reference card and operations how-to