diff --git a/charts/incubator/streamystats/.helmignore b/charts/incubator/streamystats/.helmignore new file mode 100644 index 00000000000..feb7464da6f --- /dev/null +++ b/charts/incubator/streamystats/.helmignore @@ -0,0 +1,32 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png +icon.webp +icon-small.webp diff --git a/charts/incubator/streamystats/Chart.yaml b/charts/incubator/streamystats/Chart.yaml new file mode 100644 index 00000000000..5363d3dbbd9 --- /dev/null +++ b/charts/incubator/streamystats/Chart.yaml @@ -0,0 +1,42 @@ +annotations: + artifacthub.io/links: |- + - name: support + url: https://discord.com/invite/tVsPTHWTtr + truecharts.org/train: incubator + trueforge.org/category: media + trueforge.org/max_helm_version: "4.1" + trueforge.org/max_kubernetes_version: 1.35.0 + trueforge.org/min_helm_version: "3.14" + trueforge.org/train: incubator +apiVersion: v2 +appVersion: 2.18.0 +dependencies: + - name: common + version: 29.3.4 + repository: oci://oci.trueforge.org/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: Streamystats aggregates and visualizes watch history from Jellyfin, Emby and Plex. +home: https://truecharts.org/charts/stable/streamystats +icon: https://truecharts.org/img/hotlink-ok/chart-icons/streamystats.webp +keywords: + - streamystats + - jellyfin + - emby + - plex + - stats +kubeVersion: '>=1.33.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: streamystats +sources: + - https://github.com/fredrikburmester/streamystats + - https://github.com/trueforge-org/truecharts/tree/master/charts/stable/streamystats + - https://ghcr.io/fredrikburmester/streamystats-nextjs +type: application +version: 0.1.0 diff --git a/charts/incubator/streamystats/README.md b/charts/incubator/streamystats/README.md new file mode 100644 index 00000000000..2b8cc49d247 --- /dev/null +++ b/charts/incubator/streamystats/README.md @@ -0,0 +1,3 @@ +--- +title: README +--- diff --git a/charts/incubator/streamystats/icon-small.webp b/charts/incubator/streamystats/icon-small.webp new file mode 100644 index 00000000000..a2cceaf7e9a Binary files /dev/null and b/charts/incubator/streamystats/icon-small.webp differ diff --git a/charts/incubator/streamystats/icon.webp b/charts/incubator/streamystats/icon.webp new file mode 100644 index 00000000000..702ab25a7b2 Binary files /dev/null and b/charts/incubator/streamystats/icon.webp differ diff --git a/charts/incubator/streamystats/templates/NOTES.txt b/charts/incubator/streamystats/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/charts/incubator/streamystats/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/charts/incubator/streamystats/templates/common.yaml b/charts/incubator/streamystats/templates/common.yaml new file mode 100644 index 00000000000..b51394e00a4 --- /dev/null +++ b/charts/incubator/streamystats/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.v1.common.loader.all" . }} diff --git a/charts/incubator/streamystats/values.yaml b/charts/incubator/streamystats/values.yaml new file mode 100644 index 00000000000..1de72156767 --- /dev/null +++ b/charts/incubator/streamystats/values.yaml @@ -0,0 +1,104 @@ +# yaml-language-server: $schema=./values.schema.json +image: + repository: ghcr.io/fredrikburmester/streamystats-nextjs + pullPolicy: IfNotPresent + tag: 2.18.0@sha256:2057cfd30ebcc614119eecbfff40fd7d5f19e8411db528eb6f48b222ae077bbf + +jobServerImage: + repository: ghcr.io/fredrikburmester/streamystats-job-server + pullPolicy: IfNotPresent + tag: 2.18.0@sha256:669037d3a9726e51bd9a10056badd200becd980b5023f01edb9b3a0007646264 + +securityContext: + container: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + readOnlyRootFilesystem: false + +streamystats: + # SESSION_SECRET used to sign session cookies. The chart refuses to start without one. openssl rand -base64 48 + sessionSecret: "change-me" + +service: + main: + ports: + main: + port: 3000 + protocol: http + jobserver: + enabled: true + targetSelector: jobserver + ports: + main: + enabled: true + port: 3005 + protocol: http + +workload: + main: + enabled: true + type: Deployment + podSpec: + containers: + main: + enabled: true + primary: true + env: + NODE_ENV: production + HOSTNAME: "0.0.0.0" + PORT: "{{ .Values.service.main.ports.main.port }}" + DATABASE_URL: '{{ printf "postgresql://%s:%s@%s:5432/%s" .Values.cnpg.main.user (urlquery .Values.cnpg.main.creds.password) (.Values.cnpg.main.creds.host | trimAll "\"") .Values.cnpg.main.database }}' + JOB_SERVER_URL: "http://{{ printf \"%s-%s\" .Release.Name \"jobserver\" }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.jobserver.ports.main.port }}" + SESSION_SECRET: "{{ .Values.streamystats.sessionSecret }}" + probes: + liveness: + path: /api/health + readiness: + path: /api/health + startup: + path: /api/health + jobserver: + enabled: true + type: Deployment + podSpec: + containers: + jobserver: + enabled: true + primary: true + imageSelector: jobServerImage + env: + NODE_ENV: production + PORT: "{{ .Values.service.jobserver.ports.main.port }}" + HOST: "0.0.0.0" + DATABASE_URL: '{{ printf "postgresql://%s:%s@%s:5432/%s" .Values.cnpg.main.user (urlquery .Values.cnpg.main.creds.password) (.Values.cnpg.main.creds.host | trimAll "\"") .Values.cnpg.main.database }}' + SESSION_SECRET: "{{ .Values.streamystats.sessionSecret }}" + SESSION_POLL_INTERVAL_MS: "5000" + CRON_ACTIVITY_SYNC: "*/1 * * * *" + CRON_RECENT_ITEMS_SYNC: "*/1 * * * *" + CRON_USER_SYNC: "*/1 * * * *" + CRON_PEOPLE_SYNC: "*/15 * * * *" + CRON_EMBEDDINGS_SYNC: "*/15 * * * *" + CRON_GEOLOCATION_SYNC: "*/5 * * * *" + CRON_FINGERPRINT_SYNC: "0 4 * * *" + CRON_JOB_CLEANUP: "*/1 * * * *" + CRON_OLD_JOB_CLEANUP: "0 3 * * *" + CRON_FULL_SYNC: "0 2 * * *" + CRON_DELETED_ITEMS_CLEANUP: "0 * * * *" + SKIP_STARTUP_FULL_SYNC: "false" + probes: + liveness: + port: "{{ .Values.service.jobserver.ports.main.port }}" + path: /health + readiness: + port: "{{ .Values.service.jobserver.ports.main.port }}" + path: /health + startup: + port: "{{ .Values.service.jobserver.ports.main.port }}" + path: /health + +cnpg: + main: + enabled: true + user: postgres + database: streamystats