Files
omnivore/self-hosting/helm/README.md
2024-02-14 18:04:40 +01:00

98 lines
3.4 KiB
Markdown

# Deployment using Helm
Helm chart to self-host Omnivore.
## Notes and General Information
This helm chart uses docker images from [`sejaeger/omnivore-*`](https://hub.docker.com/u/sejaeger). 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](values.yaml) and [change it accordingly](https://github.com/bjw-s/helm-charts/blob/main/charts/library/common/values.yaml) to your setup, especially: postgres hostname, omnivore URL.
Omnivore requires Postgres (+vector extension!) to store its information. Please make sure to have it up and running. Using the bitnami Helm charts works perfectly fine but you need to use a custom built image that contains the vector extension: [See this descriptions](https://github.com/pgvector/pgvector/issues/126#issuecomment-1589203644) 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
* omnivore-content-fetch-verification-token
* VERIFICATION_TOKEN
## Deployment
```console
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:
```console
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.
```yaml
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:
```json
{
"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