feat: refactor apps
All checks were successful
lint-test-helm / lint-helm (pull_request) Successful in 46s
lint-test-helm / validate-kubeconform (pull_request) Successful in 26s
render-manifests / render-manifests (pull_request) Successful in 1m28s

This commit is contained in:
2026-04-06 17:48:10 -05:00
parent f1ce1b9f63
commit f58edfc9f9
11 changed files with 52 additions and 176 deletions

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.10.0 version: 7.11.2
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:755aa4db5c7142d46af4a80c9fce49c3c558cc81042c9a00a0bdcd607276e856 digest: sha256:3385cf67283187e62972293322a24c0bd3cf979cd870a3f157728e50b601e4f6
generated: "2026-03-15T20:09:18.053504671Z" generated: "2026-04-06T17:40:21.003745-05:00"

View File

@@ -4,12 +4,12 @@ version: 1.0.0
description: Roundcube description: Roundcube
keywords: keywords:
- roundcube - roundcube
- email - email-client
home: https://wiki.alexlebens.dev/s/68896660-74d8-4166-82bd-f7c282cdb08e home: https://docs.alexlebens.dev/applications/rclone/
sources: sources:
- https://github.com/roundcube/roundcubemail - https://github.com/roundcube/roundcubemail
- https://github.com/cloudnative-pg/cloudnative-pg
- https://hub.docker.com/r/roundcube/roundcubemail - https://hub.docker.com/r/roundcube/roundcubemail
- https://hub.docker.com/_/nginx
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template - https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster - https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster
maintainers: maintainers:
@@ -21,7 +21,7 @@ dependencies:
version: 4.6.2 version: 4.6.2
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.10.0 version: 7.11.2
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target - name: volsync-target
alias: volsync-target-data alias: volsync-target-data

View File

@@ -14,8 +14,5 @@ spec:
data: data:
- secretKey: DES_KEY - secretKey: DES_KEY
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/roundcube/key key: /cl01tl/roundcube/key
metadataPolicy: None
property: DES_KEY property: DES_KEY

View File

@@ -4,13 +4,11 @@ roundcube:
type: deployment type: deployment
replicas: 1 replicas: 1
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3
containers: containers:
main: main:
image: image:
repository: roundcube/roundcubemail repository: roundcube/roundcubemail
tag: 1.6.15-fpm-alpine tag: 1.6.15-fpm-alpine@sha256:0e07c1c66d5a1392f0c47cc79e85e0c60095108f715037d7d0aa3fd8cbe2e780
pullPolicy: IfNotPresent
env: env:
- name: ROUNDCUBEMAIL_DB_TYPE - name: ROUNDCUBEMAIL_DB_TYPE
value: pgsql value: pgsql
@@ -53,40 +51,32 @@ roundcube:
value: archive,zipdownload,newmail_notifier value: archive,zipdownload,newmail_notifier
resources: resources:
requests: requests:
cpu: 10m cpu: 1m
memory: 256Mi memory: 40Mi
nginx: nginx:
image: image:
repository: nginx repository: nginx
tag: 1.29.7-alpine-slim tag: 1.29.7-alpine-slim@sha256:0848ca84c476868cbeb6a5c2c009a98821b8540f96c44b1ba06820db50262e35
pullPolicy: IfNotPresent
env: env:
- name: NGINX_HOST - name: NGINX_HOST
value: mail.alexlebens.net value: mail.alexlebens.net
- name: NGINX_PHP_CGI - name: NGINX_PHP_CGI
value: roundcube.roundcube:9000 value: roundcube.roundcube:9000
resources:
requests:
cpu: 10m
memory: 128Mi
cleandb: cleandb:
type: cronjob type: cronjob
cronjob: cronjob:
suspend: false suspend: false
concurrencyPolicy: Forbid timeZone: America/Chicago
timeZone: US/Central
schedule: 30 4 * * * schedule: 30 4 * * *
startingDeadlineSeconds: 90
successfulJobsHistory: 1
failedJobsHistory: 1
backoffLimit: 3 backoffLimit: 3
parallelism: 1 parallelism: 1
containers: containers:
backup: backup:
image: image:
repository: roundcube/roundcubemail repository: roundcube/roundcubemail
tag: 1.6.15-fpm-alpine tag: 1.6.15-fpm-alpine@sha256:0e07c1c66d5a1392f0c47cc79e85e0c60095108f715037d7d0aa3fd8cbe2e780
pullPolicy: IfNotPresent args:
- bin/cleandb.sh
env: env:
- name: ROUNDCUBEMAIL_DB_TYPE - name: ROUNDCUBEMAIL_DB_TYPE
value: pgsql value: pgsql
@@ -123,12 +113,6 @@ roundcube:
value: elastic value: elastic
- name: ROUNDCUBEMAIL_PLUGINS - name: ROUNDCUBEMAIL_PLUGINS
value: archive,zipdownload,newmail_notifier value: archive,zipdownload,newmail_notifier
args:
- bin/cleandb.sh
resources:
requests:
cpu: 100m
memory: 128Mi
configMaps: configMaps:
config: config:
enabled: true enabled: true
@@ -167,11 +151,9 @@ roundcube:
mail: mail:
port: 9000 port: 9000
targetPort: 9000 targetPort: 9000
protocol: HTTP
web: web:
port: 80 port: 80
targetPort: 80 targetPort: 80
protocol: HTTP
route: route:
main: main:
kind: HTTPRoute kind: HTTPRoute
@@ -184,11 +166,8 @@ roundcube:
- mail.alexlebens.net - mail.alexlebens.net
rules: rules:
- backendRefs: - backendRefs:
- group: '' - name: roundcube
kind: Service
name: roundcube
port: 80 port: 80
weight: 100
matches: matches:
- path: - path:
type: PathPrefix type: PathPrefix
@@ -210,7 +189,6 @@ roundcube:
storageClass: ceph-block storageClass: ceph-block
accessMode: ReadWriteOnce accessMode: ReadWriteOnce
size: 5Gi size: 5Gi
retain: true
advancedMounts: advancedMounts:
main: main:
main: main:
@@ -239,35 +217,12 @@ postgres-18-cluster:
destinationBucket: postgres-backups destinationBucket: postgres-backups
externalSecretCredentialPath: /garage/home-infra/postgres-backups externalSecretCredentialPath: /garage/home-infra/postgres-backups
isWALArchiver: true isWALArchiver: true
# - name: garage-remote
# index: 1
# destinationBucket: postgres-backups
# externalSecretCredentialPath: /garage/home-infra/postgres-backups
# retentionPolicy: "90d"
# data:
# compression: bzip2
# - name: external
# index: 1
# endpointURL: https://nyc3.digitaloceanspaces.com
# destinationBucket: postgres-backups-ce540ddf106d186bbddca68a
# externalSecretCredentialPath: /garage/home-infra/postgres-backups
# isWALArchiver: false
scheduledBackups: scheduledBackups:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 40 15 * * *" schedule: "0 40 15 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup
# suspend: true
# immediate: true
# schedule: "0 0 4 * * SAT"
# backupName: garage-remote
# - name: daily-backup
# suspend: true
# immediate: true
# schedule: "0 0 0 * * *"
# backupName: external
volsync-target-data: volsync-target-data:
pvcTarget: roundcube-data pvcTarget: roundcube-data
local: local:

View File

@@ -7,9 +7,9 @@ dependencies:
version: 2.4.0 version: 2.4.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.10.0 version: 7.11.2
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.8.0 version: 0.8.0
digest: sha256:9342eb966ec3e8020aa6b1d6d2ac72d2c4a46c4ed70c5cf52c16ff25d2f2b0fa digest: sha256:95bab760e3dc94ba3affe42d2f91bc274ed520865a461cdaac61ba47eab6f39f
generated: "2026-03-15T20:09:33.800790437Z" generated: "2026-04-06T17:43:01.938961-05:00"

View File

@@ -5,12 +5,16 @@ description: Rybbit
keywords: keywords:
- rybbit - rybbit
- analytics - analytics
home: https://wiki.alexlebens.dev/s/ home: https://docs.alexlebens.dev/applications/rybbit/
sources: sources:
- https://github.com/rybbit-io/rybbit - https://github.com/rybbit-io/rybbit
- https://github.com/rybbit-io/rybbit/pkgs/container/rybbit-backend
- https://github.com/rybbit-io/rybbit/pkgs/container/rybbit-client
- https://hub.docker.com/r/clickhouse/clickhouse-server/
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template - https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/cloudflared - https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/cloudflared
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster - 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: maintainers:
- name: alexlebens - name: alexlebens
dependencies: dependencies:
@@ -23,7 +27,7 @@ dependencies:
version: 2.4.0 version: 2.4.0
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.10.0 version: 7.11.2
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target - name: volsync-target
alias: volsync-target-clickhouse-data alias: volsync-target-clickhouse-data

View File

@@ -14,29 +14,17 @@ spec:
data: data:
- secretKey: clickhouse-user - secretKey: clickhouse-user
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/rybbit/clickhouse key: /cl01tl/rybbit/clickhouse
metadataPolicy: None
property: user property: user
- secretKey: clickhouse-password - secretKey: clickhouse-password
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/rybbit/clickhouse key: /cl01tl/rybbit/clickhouse
metadataPolicy: None
property: password property: password
- secretKey: better-auth-secret - secretKey: better-auth-secret
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/rybbit/auth key: /cl01tl/rybbit/auth
metadataPolicy: None
property: better-auth-secret property: better-auth-secret
- secretKey: mapbox-token - secretKey: mapbox-token
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/rybbit/auth key: /cl01tl/rybbit/auth
metadataPolicy: None
property: mapbox-token property: mapbox-token

View File

@@ -4,13 +4,11 @@ rybbit:
type: deployment type: deployment
replicas: 1 replicas: 1
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3
containers: containers:
main: main:
image: image:
repository: ghcr.io/rybbit-io/rybbit-backend repository: ghcr.io/rybbit-io/rybbit-backend
tag: v2.5.0 tag: v2.5.0@sha256:fd00f61abe592f872a0e4ac13f8c7b190ab2810e72f898faea4809d7ced46eef
pullPolicy: IfNotPresent
env: env:
- name: NODE_ENV - name: NODE_ENV
value: production value: production
@@ -71,17 +69,12 @@ rybbit:
key: mapbox-token key: mapbox-token
probes: probes:
liveness: liveness:
enabled: false enabled: true
custom: true custom: true
spec: spec:
exec: httpGet:
command: path: /api/health
- CMD port: 3001
- wget
- --no-verbose
- --tries=1
- --spider
- http://127.0.0.1:3001/api/health
failureThreshold: 5 failureThreshold: 5
initialDelaySeconds: 10 initialDelaySeconds: 10
periodSeconds: 30 periodSeconds: 30
@@ -90,18 +83,16 @@ rybbit:
resources: resources:
requests: requests:
cpu: 10m cpu: 10m
memory: 256Mi memory: 200Mi
client: client:
type: deployment type: deployment
replicas: 1 replicas: 1
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3
containers: containers:
main: main:
image: image:
repository: harbor.alexlebens.net/images/rybbit-client repository: ghcr.io/rybbit-io/rybbit-client
tag: v2.4.0 tag: v2.5.0@sha256:741908be311a23ee4e58c5f82c6740bf75bbe4f7430ff2aec420f6189b1378b8
pullPolicy: IfNotPresent
env: env:
- name: NODE_ENV - name: NODE_ENV
value: production value: production
@@ -112,18 +103,16 @@ rybbit:
resources: resources:
requests: requests:
cpu: 10m cpu: 10m
memory: 256Mi memory: 100Mi
clickhouse: clickhouse:
type: deployment type: deployment
replicas: 1 replicas: 1
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3
containers: containers:
main: main:
image: image:
repository: clickhouse/clickhouse-server repository: clickhouse/clickhouse-server
tag: 26.3.3 tag: 26.3.3@sha256:5cfbc0598ee3bd850ac1b2ab150e6c9ec7b9207f1a97617e015325fb5df053d0
pullPolicy: IfNotPresent
env: env:
- name: CLICKHOUSE_DB - name: CLICKHOUSE_DB
value: analytics value: analytics
@@ -139,17 +128,12 @@ rybbit:
key: clickhouse-password key: clickhouse-password
probes: probes:
liveness: liveness:
enabled: false enabled: true
custom: true custom: true
spec: spec:
exec: httpGet:
command: path: /ping
- CMD port: 8123
- wget
- --no-verbose
- --tries=1
- --spider
- http://localhost:8123/ping
failureThreshold: 5 failureThreshold: 5
initialDelaySeconds: 10 initialDelaySeconds: 10
periodSeconds: 30 periodSeconds: 30
@@ -157,8 +141,8 @@ rybbit:
timeoutSeconds: 5 timeoutSeconds: 5
resources: resources:
requests: requests:
cpu: 10m cpu: 40m
memory: 256Mi memory: 300Mi
configMaps: configMaps:
config: config:
enabled: true enabled: true
@@ -208,28 +192,24 @@ rybbit:
http: http:
port: 3001 port: 3001
targetPort: 3001 targetPort: 3001
protocol: HTTP
client: client:
controller: client controller: client
ports: ports:
http: http:
port: 3002 port: 3002
targetPort: 3002 targetPort: 3002
protocol: TCP
clickhouse: clickhouse:
controller: clickhouse controller: clickhouse
ports: ports:
http: http:
port: 8123 port: 8123
targetPort: 8123 targetPort: 8123
protocol: TCP
persistence: persistence:
clickhouse: clickhouse:
forceRename: clickhouse-data forceRename: clickhouse-data
storageClass: ceph-block storageClass: ceph-block
accessMode: ReadWriteOnce accessMode: ReadWriteOnce
size: 10Gi size: 10Gi
retain: true
advancedMounts: advancedMounts:
clickhouse: clickhouse:
main: main:
@@ -271,35 +251,12 @@ postgres-18-cluster:
destinationBucket: postgres-backups destinationBucket: postgres-backups
externalSecretCredentialPath: /garage/home-infra/postgres-backups externalSecretCredentialPath: /garage/home-infra/postgres-backups
isWALArchiver: true isWALArchiver: true
# - name: garage-remote
# index: 1
# destinationBucket: postgres-backups
# externalSecretCredentialPath: /garage/home-infra/postgres-backups
# retentionPolicy: "90d"
# data:
# compression: bzip2
# - name: external
# index: 1
# endpointURL: https://nyc3.digitaloceanspaces.com
# destinationBucket: postgres-backups-ce540ddf106d186bbddca68a
# externalSecretCredentialPath: /garage/home-infra/postgres-backups
# isWALArchiver: false
scheduledBackups: scheduledBackups:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 45 15 * * *" schedule: "0 45 15 * * *"
backupName: garage-local backupName: garage-local
# - name: weekly-backup
# suspend: true
# immediate: true
# schedule: "0 0 4 * * SAT"
# backupName: garage-remote
# - name: daily-backup
# suspend: true
# immediate: true
# schedule: "0 0 0 * * *"
# backupName: external
volsync-target-clickhouse-data: volsync-target-clickhouse-data:
pvcTarget: clickhouse-data pvcTarget: clickhouse-data
moverSecurityContext: moverSecurityContext:

View File

@@ -5,9 +5,7 @@ description: S3 Exporter
keywords: keywords:
- s3-exporter - s3-exporter
- storage - storage
- monitoring home: https://docs.alexlebens.dev/applications/s3-exporter/
- metrics
home: https://wiki.alexlebens.dev/s/
sources: sources:
- https://github.com/molu8bits/s3bucket_exporter - https://github.com/molu8bits/s3bucket_exporter
- https://hub.docker.com/r/molu8bits/s3bucket_exporter - https://hub.docker.com/r/molu8bits/s3bucket_exporter
@@ -19,5 +17,6 @@ dependencies:
alias: s3-exporter alias: s3-exporter
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 4.6.2
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/amazon-s3.webp
# renovate: datasource=github-releases depName=molu8bits/s3bucket_exporter # renovate: datasource=github-releases depName=molu8bits/s3bucket_exporter
appVersion: 1.0.2 appVersion: 1.0.2

View File

@@ -14,24 +14,15 @@ spec:
data: data:
- secretKey: AWS_ACCESS_KEY_ID - secretKey: AWS_ACCESS_KEY_ID
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/all-access key: /digital-ocean/home-infra/all-access
metadataPolicy: None
property: AWS_ACCESS_KEY_ID property: AWS_ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY - secretKey: AWS_SECRET_ACCESS_KEY
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/all-access key: /digital-ocean/home-infra/all-access
metadataPolicy: None
property: AWS_SECRET_ACCESS_KEY property: AWS_SECRET_ACCESS_KEY
- secretKey: AWS_REGION - secretKey: AWS_REGION
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/prometheus-exporter key: /digital-ocean/home-infra/prometheus-exporter
metadataPolicy: None
property: AWS_REGION property: AWS_REGION
--- ---
@@ -51,15 +42,9 @@ spec:
data: data:
- secretKey: AWS_ACCESS_KEY_ID - secretKey: AWS_ACCESS_KEY_ID
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/s3-exporter key: /garage/home-infra/s3-exporter
metadataPolicy: None
property: ACCESS_KEY_ID property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY - secretKey: AWS_SECRET_ACCESS_KEY
remoteRef: remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/s3-exporter key: /garage/home-infra/s3-exporter
metadataPolicy: None
property: ACCESS_SECRET_KEY property: ACCESS_SECRET_KEY

View File

@@ -4,13 +4,11 @@ s3-exporter:
type: deployment type: deployment
replicas: 1 replicas: 1
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3
containers: containers:
main: main:
image: image:
repository: molu8bits/s3bucket_exporter repository: molu8bits/s3bucket_exporter
tag: 1.0.2 tag: 1.0.2@sha256:75fc839c5f12cdbf20babab534959c96356b4483743e730409132bbda6944505
pullPolicy: IfNotPresent
env: env:
- name: S3_NAME - name: S3_NAME
value: digital-ocean value: digital-ocean
@@ -37,19 +35,17 @@ s3-exporter:
value: false value: false
resources: resources:
requests: requests:
cpu: 10m cpu: 1m
memory: 64Mi memory: 40Mi
garage-local: garage-local:
type: deployment type: deployment
replicas: 1 replicas: 1
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3
containers: containers:
main: main:
image: image:
repository: molu8bits/s3bucket_exporter repository: molu8bits/s3bucket_exporter
tag: 1.0.2 tag: 1.0.2@sha256:75fc839c5f12cdbf20babab534959c96356b4483743e730409132bbda6944505
pullPolicy: IfNotPresent
env: env:
- name: S3_NAME - name: S3_NAME
value: garage-local value: garage-local
@@ -73,19 +69,17 @@ s3-exporter:
value: true value: true
resources: resources:
requests: requests:
cpu: 10m cpu: 1m
memory: 64Mi memory: 40Mi
garage-remote: garage-remote:
type: deployment type: deployment
replicas: 1 replicas: 1
strategy: Recreate strategy: Recreate
revisionHistoryLimit: 3
containers: containers:
main: main:
image: image:
repository: molu8bits/s3bucket_exporter repository: molu8bits/s3bucket_exporter
tag: 1.0.2 tag: 1.0.2@sha256:75fc839c5f12cdbf20babab534959c96356b4483743e730409132bbda6944505
pullPolicy: IfNotPresent
env: env:
- name: S3_NAME - name: S3_NAME
value: garage-remote value: garage-remote
@@ -109,8 +103,8 @@ s3-exporter:
value: true value: true
resources: resources:
requests: requests:
cpu: 10m cpu: 1m
memory: 64Mi memory: 40Mi
service: service:
digital-ocean: digital-ocean:
controller: digital-ocean controller: digital-ocean
@@ -118,21 +112,18 @@ s3-exporter:
metrics: metrics:
port: 9655 port: 9655
targetPort: 9655 targetPort: 9655
protocol: TCP
garage-local: garage-local:
controller: garage-local controller: garage-local
ports: ports:
metrics: metrics:
port: 9655 port: 9655
targetPort: 9655 targetPort: 9655
protocol: TCP
garage-remote: garage-remote:
controller: garage-remote controller: garage-remote
ports: ports:
metrics: metrics:
port: 9655 port: 9655
targetPort: 9655 targetPort: 9655
protocol: TCP
serviceMonitor: serviceMonitor:
digital-ocean: digital-ocean:
selector: selector: