blumeops/argocd/manifests/miniflux
Erich Blume 6e8d11c6bb Add :kustomized sentinel tag to manifest images, review devpi
Bare image references in manifests were ambiguous — unclear whether the
tag was intentionally omitted or managed by kustomize. Add :kustomized
sentinel to all 37 image refs overridden by kustomize images transformer.
Add sync notes for tailscale-operator proxyclass (CRD fields not processed
by kustomize). Mark devpi reviewed (6.19.1 is current).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 08:15:06 -08:00
..
deployment.yaml Add :kustomized sentinel tag to manifest images, review devpi 2026-03-06 08:15:06 -08:00
ingress-tailscale.yaml Recategorize homepage into Content and Misc groups (#179) 2026-02-13 09:09:22 -08:00
kustomization.yaml Update homepage, navidrome, ntfy, miniflux image tags after mirror migration 2026-02-24 21:06:08 -08:00
README.md Remove obsolete secret templates 2026-01-28 20:26:37 -08:00
service.yaml

Miniflux Kubernetes Deployment

RSS/Atom feed reader deployed via ArgoCD.

Prerequisites

  • CloudNativePG PostgreSQL cluster running in databases namespace
  • Miniflux database and user created in PostgreSQL (from Phase 3 migration)
  • Tailscale operator installed

Setup

  1. Create the namespace and database secret:
kubectl create namespace miniflux

# The miniflux user password is auto-generated by CNPG in blumeops-pg-app secret
kubectl --context=minikube-indri create secret generic miniflux-db -n miniflux \
  --from-literal=url="$(kubectl --context=minikube-indri -n databases get secret blumeops-pg-app -o jsonpath='{.data.uri}' | base64 -d)"

# Note: This secret is not managed by ExternalSecrets since the source of truth
# is the CNPG-generated secret.
  1. Apply the ArgoCD application:
kubectl apply -f argocd/apps/miniflux.yaml
argocd app sync miniflux

Access

Configuration

Environment variables in deployment.yaml:

  • POLLING_FREQUENCY: How often to check feeds (minutes)
  • BATCH_SIZE: Number of feeds to refresh per interval
  • CLEANUP_ARCHIVE_UNREAD_DAYS: Days to keep unread entries
  • CLEANUP_ARCHIVE_READ_DAYS: Days to keep read entries

Management

# View logs
kubectl -n miniflux logs -f deployment/miniflux

# Restart deployment
kubectl -n miniflux rollout restart deployment/miniflux

# Check health
curl https://feed.tail8d86e.ts.net/healthcheck

Database Connection

Connects to PostgreSQL via internal k8s DNS: blumeops-pg-rw.databases.svc.cluster.local:5432

The database is also accessible externally via Tailscale at: pg.tail8d86e.ts.net:5432

Restore from Backup

If the database needs to be restored from a borgmatic backup:

  1. List archives: borgmatic list
  2. Extract dump from archive using borg extract to /tmp/restore
  3. Restore with pg_restore --clean --if-exists --no-owner --no-acl
  4. Fix ownership - ensure user miniflux owns all tables, sequences, and types in the public schema (restore runs as eblume)
  5. Restart miniflux deployment