blumeops/argocd/manifests/miniflux
Erich Blume 07e9c810ca Add RuntimeDefault seccomp profiles to all managed workloads
Addresses 32 CIS Kubernetes Benchmark failures from Prowler scan
(core_seccomp_profile_docker_default). Applied pod-level seccomp
RuntimeDefault to 18 deployments/statefulsets and 2 cronjobs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 16:19:40 -07:00
..
deployment.yaml Add RuntimeDefault seccomp profiles to all managed workloads 2026-03-24 16:19:40 -07:00
ingress-tailscale.yaml Fix Grafana widget fields (lowercase) and hide Miniflux read count 2026-03-18 06:28:41 -07:00
kustomization.yaml Update kustomization tags to OCI-labeled builds (613f05d) 2026-03-19 06:34:12 -07:00
README.md Remove obsolete secret templates 2026-01-28 20:26:37 -08:00
service.yaml P4: Miniflux migration + PostgreSQL consolidation (#33) 2026-01-20 09:04:47 -08:00

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