Files
omnivore/self-hosting/helm
2024-01-17 17:15:56 +01:00
..
2024-01-17 17:15:56 +01:00
2024-01-17 17:15:56 +01:00

Deployment using Helm

Helm chart to self-host Omnivore.

Notes and General Information

This helm chart uses docker images from sejaeger/omnivore-*. If you want to use the Web-UI or build your own images, checkout ../.build-and-push-images.sh. You will find some hard-coded environment variables (e.g., PG_DB or PG_USER), please don't change them! Those are also hard-coded in the code base and changing them will likely cause problems. Please have a look at the values file and change it accordingly to your setup, especially: postgres hostname, elasticsearch URL, omnivore URL.

Omnivore requires Postgres (+vector extension!) and Elasticsearch to store its information. Please make sure to have them up and running. Using the bitnami Helm charts works perfectly fine. However, for Postgres you need to use a custom built image that contains the vector extension: See this descriptions for more information or simply use sejaeger/postgres-vector from docker hub.

This setup uses a couple of secrets to safely store passwords, tokens and private information. It's your responsibility to generate them and create the following secretes accordingly.

  • omnivore-image-proxy-secret
    • IMAGE_PROXY_SECRET
  • omnivore-jwt-secret
    • JWT_SECRET
  • omnivore-sso-jwt-secret
    • SSO_JWT_SECRET
  • omnivore-pg-password
    • PG_PASSWORD
  • postgres-admin-user-and-password
    • PGPASSWORD
    • POSTGRES_USER
  • elasticsearch-auth-secret
    • ES_PASSWORD
  • omnivore-content-fetch-verification-token
    • VERIFICATION_TOKEN

Deployment

helm repo add bjw-s https://bjw-s.github.io/helm-charts
helm repo update

In order to deploy the manifest for this example, issue the following command:

helm install omnivore bjw-s/app-template --values values.yaml

This will apply the rendered manifest(s) to your cluster.

RSS Subscriptions

Currently, handling RSS subscriptions are not supported for self-hosted instances. However, you can use this simple tool for this: https://github.com/se-jaeger/omnivore-rss-handler-hack.

Adding the following controller and persistence information triggers the rss-handler hourly.

controllers:
  rss-handler-hack:
    type: cronjob
    cronjob:
      schedule: "*/60 * * * *"
      failedJobsHistoryLimit: 1
      successfulJobsHistoryLimit: 3
      concurrencyPolicy: Forbid
    containers:
      rss-handler-hack:
        image:
          repository: sejaeger/omnivore-rss-handler-hack
          tag: v0.2
          imagePullPolicy: IfNotPresent
        env:
          API_URL: "http://omnivore-omnivore-api:8080/api/graphql"
          CACHE_FILE: "/home/cache.json"
          FEEDS_FILE: "/home/feeds.json"
        envFrom:
          - secretRef:
              name: omnivore-api-token

persistence:
  rss-handler-hack:
    type: persistentVolumeClaim
    existingClaim: omnivore-pvc
    advancedMounts:
      rss-handler-hack: # controller name
        rss-handler-hack: # container name
          - path: /home

FEEDS_FILE is used to define the subscriptions:

{
  "blog": "https://blog.example/feed",
  "another-blog": "https://another-blog.example/rss.xml",
}

omnivore-api-token secret contains a single key API_TOKEN, which can be generated using the Omnivore Web-UI.

Currently not Implemented

  • health checks
  • resource limits