fukuops/k8s/charts/miniflux/README.md
cătălin 1fd2bfef3d
feat(helm): complete chart normalization with ConfigMap, HPA, and OCI migration
- Added debug mode, structured ConfigMap pattern, and README to all charts
- Migrated all flat-structure charts to hierarchical values under chartname key
- Fixed templates to use correct hierarchical paths
- Renamed helm-rustical key to rustical, added HPA support
- Fixed ingress YAML parsing (oxicloud), nested env vars (rustical)
- Pushed all normalized charts to OCI registry as 1.0.0+ and updated ArgoCD apps
2026-08-14 09:35:19 +02:00

5.4 KiB

miniflux

A Helm chart for Miniflux, a minimalist and open source RSS reader.

TL;DR

helm install miniflux oci://git.roboces.dev/catalin/fukuops/miniflux --version 1.0.1 -n apps-roboces

Prerequisites

  • Kubernetes 1.19+
  • Helm 3+
  • An existing Secret containing:
    • DATABASE_URL - PostgreSQL connection string
    • ADMIN_USERNAME - Admin username (optional if oauth2 is configured)
    • ADMIN_PASSWORD - Admin password (optional if oauth2 is configured)

Configuration

All values are nested under the miniflux: key. Example:

miniflux:
  service:
    type: LoadBalancer
  config:
    database:
      url: "postgres://user:pass@host:5432/miniflux"
    general:
      createAdmin: true
      runMigrations: true
      workerPoolSize: 1
      pollingFrequency: 60
    oauth2:
      enabled: true
      provider: oidc
      redirectUrl: https://feeds.example.com/oauth2/oidc/callback
      oidcDiscoveryEndpoint: https://auth.example.com/application/o/miniflux/
      userCreation: true
    metrics:
      enabled: true
      allowedNetworks: 10.0.0.0/8
  secret:
    existingSecretName: miniflux

Values Reference

Main Settings

Key Type Default Description
miniflux.replicaCount int 1 Number of replicas
miniflux.image.repository string miniflux/miniflux Image repository
miniflux.image.pullpolicy string always Image pull policy
miniflux.image.tag string .Chart.AppVersion Image tag
miniflux.service.type string ClusterIP Service type
miniflux.service.port int 8888 Service port
miniflux.service.targetPort int 8080 Container port
miniflux.ingress.enabled bool false Enable ingress
miniflux.resources object {} Container resources
miniflux.livenessProbe object {} Liveness probe
miniflux.readinessProbe object {} Readiness probe
miniflux.secret.existingSecretName string "" Existing secret name
miniflux.debug.enabled bool false Enable debug mode (adds init container for troubleshooting)
miniflux.nodeSelector object {} Node selector
miniflux.tolerations array [] Tolerations
miniflux.affinity object {} Affinity rules
miniflux.autoscaling.enabled bool false Enable autoscaling
miniflux.autoscaling.minReplicas int 1 Minimum replicas
miniflux.autoscaling.maxReplicas int 3 Maximum replicas
miniflux.autoscaling.targetCPUUtilizationPercentage int 80 Target CPU utilization for HPA
miniflux.autoscaling.targetMemoryUtilizationPercentage int 80 Target memory utilization for HPA

Database Configuration

Key Type Default Description
miniflux.config.database.url string "" PostgreSQL connection URL

General Configuration

Key Type Default Description
miniflux.config.general.createAdmin bool false Create admin user on startup
miniflux.config.general.runMigrations bool false Run database migrations
miniflux.config.general.workerPoolSize int 1 Number of worker threads
miniflux.config.general.pollingFrequency int 60 Feed refresh interval (minutes)
miniflux.config.general.batchSize int 10 Number of feeds to refresh per batch

OAuth2 Configuration

Key Type Default Description
miniflux.config.oauth2.enabled bool false Enable OAuth2 authentication
miniflux.config.oauth2.provider string oidc OAuth2 provider
miniflux.config.oauth2.redirectUrl string "" OAuth redirect URL
miniflux.config.oauth2.oidcDiscoveryEndpoint string "" OIDC discovery endpoint URL
miniflux.config.oauth2.userCreation bool false Allow OAuth users to create accounts

Metrics Configuration

Key Type Default Description
miniflux.config.metrics.enabled bool false Enable metrics endpoint
miniflux.config.metrics.allowedNetworks string "" Networks allowed to access metrics (CIDR)

YouTube Configuration

Key Type Default Description
miniflux.config.youtube.fetchWatchTime bool false Fetch YouTube watch time data

Secret Management

The chart looks for an existing Secret with the name specified in miniflux.secret.existingSecretName. Required secret keys:

  • DATABASE_URL - PostgreSQL connection string
  • ADMIN_USERNAME - Admin username (if config.general.createAdmin=true)
  • ADMIN_PASSWORD - Admin password (if config.general.createAdmin=true)

Troubleshooting

Debug Mode

Enable debug mode to troubleshoot issues by adding an init container with a shell:

miniflux:
  debug:
    enabled: true

This adds an alpine:3.19 init container with sleep infinity that mounts all volumes and inherits env vars. You can exec into it to inspect the environment:

kubectl exec -it <pod-name> -c debug -- sh

When debug mode is enabled, liveness and readiness probes are disabled to prevent restarts.

Check logs

kubectl logs miniflux-0 -n apps-roboces

Verify configmap

kubectl get configmap miniflux-config -n apps-roboces -o yaml