blumeops/argocd/manifests/miniflux/README.md
Erich Blume dd6cf20d51 Remove obsolete secret templates
- Delete 13 .yaml.tpl files replaced by ExternalSecrets
- Update immich/README.md with direct CNPG secret copy instructions
- Update miniflux/README.md with context flag and ESO note

Only 1password-connect/secret-credentials.yaml.tpl remains (bootstrap).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 20:26:37 -08:00

2.1 KiB

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