feat: add sparkyfitness
Some checks failed
lint-test-docker / lint-docker-compose (pull_request) Successful in 1m13s
lint-test-helm / lint-helm (pull_request) Successful in 1m34s
lint-test-helm / validate-kubeconform (pull_request) Failing after 51s

This commit is contained in:
2026-04-13 19:29:06 -05:00
parent 13376bd583
commit f80e96ebf1
9 changed files with 203 additions and 8 deletions

View File

@@ -160,6 +160,7 @@ blocky:
sonarr IN CNAME traefik-cl01tl sonarr IN CNAME traefik-cl01tl
sonarr-4k IN CNAME traefik-cl01tl sonarr-4k IN CNAME traefik-cl01tl
sonarr-anime IN CNAME traefik-cl01tl sonarr-anime IN CNAME traefik-cl01tl
sparkyfitness IN CNAME traefik-cl01tl
stalwart IN CNAME traefik-cl01tl stalwart IN CNAME traefik-cl01tl
tdarr IN CNAME traefik-cl01tl tdarr IN CNAME traefik-cl01tl
tubearchivist IN CNAME traefik-cl01tl tubearchivist IN CNAME traefik-cl01tl

View File

@@ -155,8 +155,8 @@ gatus:
- name: searxng - name: searxng
url: https://searxng.alexlebens.net url: https://searxng.alexlebens.net
<<: *defaults <<: *defaults
- name: roundcube - name: sparkyfitness
url: https://mail.alexlebens.net url: https://sparkyfitness.alexlebens.net
<<: *defaults <<: *defaults
- name: paperless-ngx - name: paperless-ngx
url: https://paperless-ngx.alexlebens.net url: https://paperless-ngx.alexlebens.net
@@ -212,6 +212,9 @@ gatus:
- name: authentik - name: authentik
url: https://authentik.alexlebens.net url: https://authentik.alexlebens.net
<<: *defaults <<: *defaults
- name: roundcube
url: https://mail.alexlebens.net
<<: *defaults
- name: stalwart - name: stalwart
url: https://stalwart.alexlebens.net url: https://stalwart.alexlebens.net
<<: *defaults <<: *defaults

View File

@@ -285,11 +285,11 @@ homepage:
href: https://searxng.alexlebens.net/ href: https://searxng.alexlebens.net/
siteMonitor: http://searxng-browser.searxng:80 siteMonitor: http://searxng-browser.searxng:80
statusStyle: dot statusStyle: dot
- Email: - Fitness Tracker:
icon: sh-roundcube.webp icon: sh-sparkyfitness.webp
description: Roundcube description: Sparky Fitness
href: https://mail.alexlebens.net href: https://sparkyfitness.alexlebens.net
siteMonitor: http://roundcube.roundcube:80 siteMonitor: http://sparkyfitness-frontend.sparkyfitness:80
statusStyle: dot statusStyle: dot
- Documents: - Documents:
icon: sh-paperless-ngx.webp icon: sh-paperless-ngx.webp
@@ -487,7 +487,13 @@ homepage:
href: https://authentik.alexlebens.net href: https://authentik.alexlebens.net
siteMonitor: http://authentik-server.authentik:80 siteMonitor: http://authentik-server.authentik:80
statusStyle: dot statusStyle: dot
- Email: - Email Client:
icon: sh-roundcube.webp
description: Roundcube
href: https://mail.alexlebens.net
siteMonitor: http://roundcube.roundcube:80
statusStyle: dot
- Email Server:
icon: sh-stalwart.webp icon: sh-stalwart.webp
description: Stalwart description: Stalwart
href: https://stalwart.alexlebens.net href: https://stalwart.alexlebens.net

View File

@@ -0,0 +1,12 @@
dependencies:
- name: sparkyfitness
repository: oci://ghcr.io/codewithcj/charts
version: 0.16.5-7
- name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts
version: 7.11.2
- name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0
digest: sha256:cbe47d5c90cb22ba40b6de948b0a49733c6ce40b1be92555d5df3f0f1e610950
generated: "2026-04-13T19:27:44.289967-05:00"

View File

@@ -0,0 +1,32 @@
apiVersion: v2
name: sparkyfitness
version: 1.0.0
description: Sparky Fitness
keywords:
- sparky-fitness
- fitness-tracking
home: https://docs.alexlebens.dev/applications/sparkyfitness/
sources:
- https://github.com/CodeWithCJ/SparkyFitness
- https://github.com/CodeWithCJ/SparkyFitness/pkgs/container/sparkyfitness-server
- https://github.com/CodeWithCJ/SparkyFitness/pkgs/container/sparkyfitness-frontend
- https://github.com/CodeWithCJ/SparkyFitness/tree/main/helm/chart
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/volsync-target
maintainers:
- name: alexlebens
dependencies:
- name: sparkyfitness
version: 0.16.5-7
repository: oci://ghcr.io/codewithcj/charts
- name: postgres-cluster
alias: postgres-18-cluster
version: 7.11.2
repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target
alias: volsync-target-backup
version: 0.8.0
repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/sparkyfitness.png
# renovate: datasource=github-releases depName=CodeWithCJ/SparkyFitness
appVersion: v0.16.5.7

View File

@@ -0,0 +1,46 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: sparkyfitness-key-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sparkyfitness-key-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: api_encryption_key
remoteRef:
key: /cl01tl/sparkyfitness/key
property: api_encryption_key
- secretKey: better_auth_secret
remoteRef:
key: /cl01tl/sparkyfitness/key
property: better_auth_secret
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: sparkyfitness-oidc-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sparkyfitness-oidc-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: client_id
remoteRef:
key: /authentik/oidc/sparkyfitness
property: client
- secretKey: client_secret
remoteRef:
key: /authentik/oidc/sparkyfitness
property: secret

View File

@@ -0,0 +1,93 @@
sparkyfitness:
config:
timezone: America/Chicago
allowPrivateNetworkCors: true
extraTrustedOrigins: https://sparkyfitness.alexlebens.net
oidc:
enabled: true
providerSlug: sparky-fitness
providerName: Authentik
issuerUrl: https://authentik.alexlebens.net
logoUrl: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/authentik.webp
secrets:
existingSecret: sparkyfitness-oidc-secret
httpRoute:
enabled: true
hostname: https://sparkyfitness.alexlebens.net
parentRef:
name: traefik-gateway
namespace: traefik
server:
image:
repository: ghcr.io/codewithcj/sparkyfitness-server
tag: v0.16.5.7@sha256:7cdb8cb3ae7f90c7590dac3b92cea3a8e24d51b28eb836a1f6d5201cd45bc080
resources:
requests:
cpu: 100m
memory: 200Mi
limits:
cpu: null
memory: null
secrets:
generate: false
existingSecret: sparkyfitness-key-secret
appDatabase:
existingSecret: sparkyfitness-postgresql-18-cluster-app
persistence:
backup:
size: 5Gi
accessMode: ReadWriteOnce
storageClass: ceph-block
uploads:
size: 10Gi
accessMode: ReadWriteOnce
storageClass: ceph-block
frontend:
image:
repository: ghcr.io/codewithcj/sparkyfitness-server
tag: v0.16.5.7@sha256:c57a0a07b3470bd0c280d63d02b45adfe7360441b396e9bd445d7b0d22823356
resources:
requests:
cpu: 10m
memory: 40Mi
limits:
cpu: null
memory: null
postgresql:
enabled: false
externalDatabase:
host: sparkyfitness-postgresql-18-cluster-rw
port: 5432
database: app
auth:
existingSecret: sparkyfitness-postgresql-18-cluster-app
postgres-18-cluster:
mode: standalone
recovery:
method: objectStore
objectStore:
index: 1
backup:
objectStore:
- name: garage-local
index: 1
destinationBucket: postgres-backups
externalSecretCredentialPath: /garage/home-infra/postgres-backups
isWALArchiver: true
scheduledBackups:
- name: live-backup
suspend: false
immediate: true
schedule: "0 0 16 * * *"
backupName: garage-local
volsync-target-backup:
pvcTarget: sparkyfitness-server-backup
local:
enabled: true
schedule: 26 11 * * *
remote:
enabled: true
schedule: 26 12 * * *
external:
enabled: true
schedule: 26 13 * * *

View File

@@ -137,6 +137,7 @@ customDNS:
sonarr IN CNAME traefik-cl01tl sonarr IN CNAME traefik-cl01tl
sonarr-4k IN CNAME traefik-cl01tl sonarr-4k IN CNAME traefik-cl01tl
sonarr-anime IN CNAME traefik-cl01tl sonarr-anime IN CNAME traefik-cl01tl
sparkyfitness IN CNAME traefik-cl01tl
stalwart IN CNAME traefik-cl01tl stalwart IN CNAME traefik-cl01tl
tdarr IN CNAME traefik-cl01tl tdarr IN CNAME traefik-cl01tl
tubearchivist IN CNAME traefik-cl01tl tubearchivist IN CNAME traefik-cl01tl

View File

@@ -158,6 +158,7 @@ customDNS:
sonarr IN CNAME traefik-cl01tl sonarr IN CNAME traefik-cl01tl
sonarr-4k IN CNAME traefik-cl01tl sonarr-4k IN CNAME traefik-cl01tl
sonarr-anime IN CNAME traefik-cl01tl sonarr-anime IN CNAME traefik-cl01tl
sparkyfitness IN CNAME traefik-cl01tl
stalwart IN CNAME traefik-cl01tl stalwart IN CNAME traefik-cl01tl
tdarr IN CNAME traefik-cl01tl tdarr IN CNAME traefik-cl01tl
tubearchivist IN CNAME traefik-cl01tl tubearchivist IN CNAME traefik-cl01tl