mirror of
https://github.com/rtomik/helm-charts.git
synced 2026-07-16 08:14:48 +00:00
5.8 KiB
5.8 KiB
Karakeep Helm Chart
A Helm chart for deploying Karakeep, a bookmark management application, on Kubernetes.
Introduction
This chart deploys Karakeep as a multi-container pod with three services:
- Karakeep — Main bookmark management application
- Chrome — Headless browser for web scraping and preview generation
- MeiliSearch — Search engine for fast bookmark search
All containers share the same pod network and communicate via localhost.
Source code: https://github.com/rtomik/helm-charts/tree/main/charts/karakeep
Prerequisites
- Kubernetes 1.19+
- Helm 3.2.0+
- PV provisioner support in the underlying infrastructure (if persistence is enabled)
Installing the Chart
helm repo add rtomik https://rtomik.github.io/helm-charts
helm install karakeep rtomik/karakeep
Uninstalling the Chart
helm uninstall karakeep
Configuration Examples
Minimal Installation
ingress:
enabled: true
hosts:
- host: karakeep.example.com
paths:
- path: /
pathType: Prefix
tls:
- hosts:
- karakeep.example.com
Production with Secrets
For production, store NEXTAUTH_SECRET in a Kubernetes secret. When ingress is enabled, NEXTAUTH_URL is automatically set to the ingress hostname.
secrets:
create: true
env:
NEXTAUTH_SECRET: "your-secure-32-character-string"
ingress:
enabled: true
hosts:
- host: karakeep.example.com
paths:
- path: /
pathType: Prefix
tls:
- hosts:
- karakeep.example.com
With OpenAI Integration
secrets:
create: true
env:
NEXTAUTH_SECRET: "your-secure-32-character-string"
OPENAI_API_KEY: "your-openai-api-key"
Parameters
Global Parameters
| Name | Description | Default |
|---|---|---|
nameOverride |
Override the chart name | "" |
fullnameOverride |
Override the full chart name | "" |
replicaCount |
Number of replicas | 1 |
revisionHistoryLimit |
Revisions to retain | 3 |
Pod Security Parameters
| Name | Description | Default |
|---|---|---|
podSecurityContext.runAsNonRoot |
Run as non-root | false |
podSecurityContext.runAsUser |
User ID | 0 |
podSecurityContext.fsGroup |
Filesystem group ID | 0 |
Karakeep Parameters
| Name | Description | Default |
|---|---|---|
karakeep.image.repository |
Karakeep image repository | ghcr.io/karakeep-app/karakeep |
karakeep.image.tag |
Karakeep image tag | 0.26.0 |
karakeep.image.pullPolicy |
Image pull policy | IfNotPresent |
karakeep.service.port |
Karakeep service port | 3000 |
karakeep.env |
Karakeep environment variables | See values.yaml |
karakeep.extraEnv |
Additional environment variables | [] |
Chrome Parameters
| Name | Description | Default |
|---|---|---|
chrome.image.repository |
Chrome image repository | gcr.io/zenika-hub/alpine-chrome |
chrome.image.tag |
Chrome image tag | 124 |
chrome.image.pullPolicy |
Image pull policy | IfNotPresent |
chrome.service.port |
Chrome debugging port | 9222 |
MeiliSearch Parameters
| Name | Description | Default |
|---|---|---|
meilisearch.image.repository |
MeiliSearch image repository | getmeili/meilisearch |
meilisearch.image.tag |
MeiliSearch image tag | v1.13.3 |
meilisearch.image.pullPolicy |
Image pull policy | IfNotPresent |
meilisearch.service.port |
MeiliSearch port | 7700 |
meilisearch.resources.limits.cpu |
CPU limit | 500m |
meilisearch.resources.limits.memory |
Memory limit | 1Gi |
meilisearch.resources.requests.cpu |
CPU request | 100m |
meilisearch.resources.requests.memory |
Memory request | 256Mi |
Service Parameters
| Name | Description | Default |
|---|---|---|
service.type |
Service type | ClusterIP |
service.port |
Service port | 3000 |
Ingress Parameters
| Name | Description | Default |
|---|---|---|
ingress.enabled |
Enable ingress | false |
ingress.className |
Ingress class name | "" |
ingress.annotations |
Ingress annotations | See values.yaml |
ingress.hosts |
Ingress hosts | See values.yaml |
ingress.tls |
TLS configuration | See values.yaml |
Persistence Parameters
| Name | Description | Default |
|---|---|---|
persistence.enabled |
Enable persistence | true |
persistence.data.storageClass |
Data volume storage class | "" |
persistence.data.accessMode |
Data volume access mode | ReadWriteOnce |
persistence.data.size |
Data volume size | 5Gi |
persistence.meilisearch.storageClass |
MeiliSearch volume storage class | "" |
persistence.meilisearch.accessMode |
MeiliSearch volume access mode | ReadWriteOnce |
persistence.meilisearch.size |
MeiliSearch volume size | 2Gi |
Secret Parameters
| Name | Description | Default |
|---|---|---|
secrets.create |
Create secret for environment variables | false |
secrets.existingSecret |
Use an existing secret | "" |
secrets.env |
Environment variables for the secret | {} |
Troubleshooting
NEXTAUTH_SECRET Not Set
The default NEXTAUTH_SECRET is a placeholder. For production, override it:
secrets:
create: true
env:
NEXTAUTH_SECRET: "your-secure-32-character-string"
Custom NEXTAUTH_URL
If not using ingress or using a custom domain, override NEXTAUTH_URL manually:
karakeep:
env:
- name: NEXTAUTH_URL
value: "https://your-domain.com"