cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit 9b702999bc2feb5d43e3d3bd88fa13260dc1275d
parent e6c4e62295818b62a85fe7eaddaa73a5334a93da
Author: MTRNord <mtrnord1@gmail.com>
Date:   Thu,  3 Apr 2025 11:12:28 +0200

Set up xandikos

Diffstat:
Mapps/2024_cluster/kustomization.yaml | 1+
Mapps/base/element_changedetection/element_deployment.yaml | 400++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mapps/base/envoy-gateway/release.yaml | 12++++++++++++
Aapps/base/xandikos/kustomization.yaml | 5+++++
Aapps/base/xandikos/release.yaml | 301+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 519 insertions(+), 200 deletions(-)

diff --git a/apps/2024_cluster/kustomization.yaml b/apps/2024_cluster/kustomization.yaml @@ -47,3 +47,4 @@ resources: - ../base/actualbudget-server - ../base/uptime-kuma - ../base/element_changedetection + - ../base/xandikos diff --git a/apps/base/element_changedetection/element_deployment.yaml b/apps/base/element_changedetection/element_deployment.yaml @@ -1,225 +1,225 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: element-changedetection-data - namespace: changedetection + name: element-changedetection-data + namespace: changedetection spec: - storageClassName: ceph-filesystem - accessModes: - - ReadWriteMany - resources: - requests: - storage: 15Gi + storageClassName: ceph-filesystem + accessModes: + - ReadWriteMany + resources: + requests: + storage: 15Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: element-changedetection-sonic-data - namespace: changedetection + name: element-changedetection-sonic-data + namespace: changedetection spec: - storageClassName: ceph-filesystem - accessModes: - - ReadWriteMany - resources: - requests: - storage: 256Mi + storageClassName: ceph-filesystem + accessModes: + - ReadWriteMany + resources: + requests: + storage: 256Mi --- apiVersion: apps/v1 kind: Deployment metadata: - name: element-changedetection - namespace: changedetection + name: element-changedetection + namespace: changedetection spec: - replicas: 1 - selector: - matchLabels: - app: element-changedetection - strategy: - rollingUpdate: - maxSurge: 25% - maxUnavailable: 25% - type: RollingUpdate - template: - metadata: - labels: - app: element-changedetection - spec: - containers: - - image: archivebox/archivebox:latest - imagePullPolicy: Always - name: element-changedetection - command: - - /app/bin/docker_entrypoint.sh - args: - #- init - #- --setup - - server - - --reload - - 0.0.0.0:8000 - env: - - name: ADMIN_USERNAME - value: "MTRNord" - - name: ADMIN_PASSWORD - valueFrom: - secretKeyRef: - name: element-changedetection - key: admin_password - - name: ALLOWED_HOSTS - value: "element-changes.midnightthoughts.space" - - name: CSRF_TRUSTED_ORIGINS - value: "https://element-changes.midnightthoughts.space" - - name: TZ - value: "Europe/Berlin" - - name: PUBLIC_INDEX - value: "True" - - name: PUBLIC_SNAPSHOTS - value: "False" - - name: PUBLIC_ADD_VIEW - value: "False" - - name: SEARCH_BACKEND_ENGINE - value: "sonic" - - name: SEARCH_BACKEND_HOST_NAME - value: "localhost" - - name: TIMEOUT - value: "720" - - name: SEARCH_BACKEND_PASSWORD - valueFrom: - secretKeyRef: - name: element-changedetection - key: search_backend_password - livenessProbe: - failureThreshold: 3 - httpGet: - path: / - port: 8000 - httpHeaders: - - name: Host - value: "element-changes.midnightthoughts.space" - readinessProbe: - httpGet: - path: / - port: 8000 - httpHeaders: - - name: Host - value: "element-changes.midnightthoughts.space" - resources: - requests: - ephemeral-storage: 1024Mi - cpu: 100m - memory: 200Mi - limits: {} - volumeMounts: - - mountPath: /data - name: element-changedetection-data - - mountPath: /tmp - name: tmp - - image: archivebox/archivebox:latest - imagePullPolicy: Always - name: element-changedetection-scheduler - env: - - name: PUID - value: "911" - - name: PGID - value: "911" - - name: TIMEOUT - value: "720" - - name: SEARCH_BACKEND_ENGINE - value: "sonic" - - name: SEARCH_BACKEND_HOST_NAME - value: "localhost" - - name: SEARCH_BACKEND_PASSWORD - valueFrom: - secretKeyRef: + replicas: 1 + selector: + matchLabels: + app: element-changedetection + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + labels: + app: element-changedetection + spec: + containers: + - image: archivebox/archivebox:latest + imagePullPolicy: Always name: element-changedetection - key: search_backend_password - command: - - /app/bin/docker_entrypoint.sh - args: - - schedule - - --tag - - element-blog - - --every - - "*/15 * * * *" - - --foreground - - --update - - --depth=1 - - https://element.io/blog/rss/ - resources: - requests: - ephemeral-storage: 1024Mi - cpu: 1000m - memory: 1000Mi - limits: {} - volumeMounts: - - mountPath: /data - name: element-changedetection-data - - mountPath: /tmp - name: tmp - - image: archivebox/sonic:latest - imagePullPolicy: Always - name: element-changedetection-sonic - env: - - name: SEARCH_BACKEND_PASSWORD - valueFrom: - secretKeyRef: - name: element-changedetection - key: search_backend_password - resources: - requests: - ephemeral-storage: 1024Mi - cpu: 100m - memory: 200Mi - limits: {} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - #add: - # - SYS_ADMIN - readOnlyRootFilesystem: true - runAsNonRoot: false - volumeMounts: - - mountPath: /var/lib/sonic/store - name: element-changedetection-sonic-data - - mountPath: /tmp - name: tmp - volumes: - - name: element-changedetection-sonic-data - persistentVolumeClaim: - claimName: element-changedetection-sonic-data - - name: tmp - emptyDir: - sizeLimit: 2048Mi + command: + - /app/bin/docker_entrypoint.sh + args: + #- init + #- --setup + - server + - --reload + - 0.0.0.0:8000 + env: + - name: ADMIN_USERNAME + value: "MTRNord" + - name: ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: element-changedetection + key: admin_password + - name: ALLOWED_HOSTS + value: "element-changes.midnightthoughts.space" + - name: CSRF_TRUSTED_ORIGINS + value: "https://element-changes.midnightthoughts.space" + - name: TZ + value: "Europe/Berlin" + - name: PUBLIC_INDEX + value: "True" + - name: PUBLIC_SNAPSHOTS + value: "False" + - name: PUBLIC_ADD_VIEW + value: "False" + - name: SEARCH_BACKEND_ENGINE + value: "sonic" + - name: SEARCH_BACKEND_HOST_NAME + value: "localhost" + - name: TIMEOUT + value: "720" + - name: SEARCH_BACKEND_PASSWORD + valueFrom: + secretKeyRef: + name: element-changedetection + key: search_backend_password + livenessProbe: + failureThreshold: 3 + httpGet: + path: / + port: 8000 + httpHeaders: + - name: Host + value: "element-changes.midnightthoughts.space" + readinessProbe: + httpGet: + path: / + port: 8000 + httpHeaders: + - name: Host + value: "element-changes.midnightthoughts.space" + resources: + requests: + ephemeral-storage: 1024Mi + cpu: 100m + memory: 200Mi + limits: {} + volumeMounts: + - mountPath: /data + name: element-changedetection-data + - mountPath: /tmp + name: tmp + - image: archivebox/archivebox:latest + imagePullPolicy: Always + name: element-changedetection-scheduler + env: + - name: PUID + value: "911" + - name: PGID + value: "911" + - name: TIMEOUT + value: "720" + - name: SEARCH_BACKEND_ENGINE + value: "sonic" + - name: SEARCH_BACKEND_HOST_NAME + value: "localhost" + - name: SEARCH_BACKEND_PASSWORD + valueFrom: + secretKeyRef: + name: element-changedetection + key: search_backend_password + command: + - /app/bin/docker_entrypoint.sh + args: + - schedule + - --tag + - element-blog + - --every + - "*/15 * * * *" + - --foreground + - --update + - --depth=1 + - https://element.io/blog/rss/ + resources: + requests: + ephemeral-storage: 1024Mi + cpu: 1000m + memory: 1000Mi + limits: {} + volumeMounts: + - mountPath: /data + name: element-changedetection-data + - mountPath: /tmp + name: tmp + - image: archivebox/sonic:latest + imagePullPolicy: Always + name: element-changedetection-sonic + env: + - name: SEARCH_BACKEND_PASSWORD + valueFrom: + secretKeyRef: + name: element-changedetection + key: search_backend_password + resources: + requests: + ephemeral-storage: 1024Mi + cpu: 100m + memory: 200Mi + limits: {} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + #add: + # - SYS_ADMIN + readOnlyRootFilesystem: true + runAsNonRoot: false + volumeMounts: + - mountPath: /var/lib/sonic/store + name: element-changedetection-sonic-data + - mountPath: /tmp + name: tmp + volumes: + - name: element-changedetection-sonic-data + persistentVolumeClaim: + claimName: element-changedetection-sonic-data + - name: tmp + emptyDir: + sizeLimit: 2048Mi --- apiVersion: v1 kind: Service metadata: - labels: - app: element-changedetection - name: element-changedetection-srv - namespace: changedetection + labels: + app: element-changedetection + name: element-changedetection-srv + namespace: changedetection spec: - ports: - - port: 8000 - protocol: TCP - targetPort: 8000 - selector: - app: element-changedetection - type: ClusterIP + ports: + - port: 8000 + protocol: TCP + targetPort: 8000 + selector: + app: element-changedetection + type: ClusterIP --- apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: - name: element-changedetection - namespace: changedetection + name: element-changedetection + namespace: changedetection spec: - parentRefs: - - name: envoy-gateway - namespace: envoy-gateway - hostnames: - - "element-changes.midnightthoughts.space" - rules: - - backendRefs: - - name: element-changedetection-srv - port: 8000 + parentRefs: + - name: envoy-gateway + namespace: envoy-gateway + hostnames: + - "element-changes.midnightthoughts.space" + rules: + - backendRefs: + - name: element-changedetection-srv + port: 8000 diff --git a/apps/base/envoy-gateway/release.yaml b/apps/base/envoy-gateway/release.yaml @@ -430,6 +430,18 @@ spec: certificateRefs: - kind: Secret name: element-changes.midnightthoughts.space + - name: https-midnightthoughts-dav + protocol: HTTPS + hostname: "dav.midnightthoughts.space" + port: 443 + allowedRoutes: + namespaces: + from: "All" + tls: + mode: Terminate + certificateRefs: + - kind: Secret + name: dav.midnightthoughts.space - name: https-nordgedanken-root protocol: HTTPS hostname: "nordgedanken.dev" diff --git a/apps/base/xandikos/kustomization.yaml b/apps/base/xandikos/kustomization.yaml @@ -0,0 +1,5 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: xandikos +resources: + - release.yaml diff --git a/apps/base/xandikos/release.yaml b/apps/base/xandikos/release.yaml @@ -0,0 +1,301 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: xandikos + namespace: xandikos +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 100Mi +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5b2dpdzIveERjM2FOV3Uz + MTZsVEhaV2pHVmFtT2E0OURCa3BoUUdSZFdjCm5DWmprdzYzTjJSNDA0OStTL3pY + amsvc21mTjdndXZsMzRYM3JSOW5UREkKLS0tIHkrNmdOakFQREVBcm9KQTY0dVVY + WlB4SXViYkcvLy9kMlNHd3NWeTR2THcKH2u+ehSawhRtHoWlnLCbrYvLspOJpG/r + 0UIYAhI95ofk8upsTs0Yt9sI3VTssVbmqIZ5nGWwuEG2Wygtvu7VzQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-04-03T09:11:21Z" + mac: ENC[AES256_GCM,data:kdSiawd4mAyYlRxAEy4JPbmjdyQlnYUsokojaykAbX9Lv7ww+evMHZ8i4SDVD9bc0rB5ufp29uSIDZmeFRuhUATtP5lGbjbva7QQRgCncIkWVcNj9LmfDYhIx3TLb+6/JlAi/miD10M3L4ZJ8Ln/j3lMcfw3N5gIvXDJCXwH+YA=,iv:gdquXNPE5xHpzapS4tNTjkhFb0R0Jjj1c3U94HCcwnc=,tag:cnOkjLIjRuOVqOJHbso9/Q==,type:str] + pgp: [] + encrypted_regex: ^(adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.9.1 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: xandikos + namespace: xandikos +spec: + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + replicas: 1 + selector: + matchLabels: + app: xandikos + template: + metadata: + labels: + app: xandikos + spec: + containers: + - name: xandikos + image: ghcr.io/jelmer/xandikos + imagePullPolicy: Always + command: + - python3 + - -m + - xandikos.web + - --port=8080 + - -d/data + - --defaults + - --listen-address=0.0.0.0 + - --current-user-principal=/jelmer + - --route-prefix=/dav + resources: + limits: + cpu: "2" + memory: 2Gi + requests: + cpu: "0.1" + memory: 10M + livenessProbe: + httpGet: + path: /health + port: 8081 + initialDelaySeconds: 30 + periodSeconds: 3 + timeoutSeconds: 90 + ports: + - containerPort: 8081 + volumeMounts: + - name: xandikos-volume + mountPath: /data + securityContext: + fsGroup: 1000 + volumes: + - name: xandikos-volume + persistentVolumeClaim: + claimName: xandikos +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5b2dpdzIveERjM2FOV3Uz + MTZsVEhaV2pHVmFtT2E0OURCa3BoUUdSZFdjCm5DWmprdzYzTjJSNDA0OStTL3pY + amsvc21mTjdndXZsMzRYM3JSOW5UREkKLS0tIHkrNmdOakFQREVBcm9KQTY0dVVY + WlB4SXViYkcvLy9kMlNHd3NWeTR2THcKH2u+ehSawhRtHoWlnLCbrYvLspOJpG/r + 0UIYAhI95ofk8upsTs0Yt9sI3VTssVbmqIZ5nGWwuEG2Wygtvu7VzQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-04-03T09:11:21Z" + mac: ENC[AES256_GCM,data:kdSiawd4mAyYlRxAEy4JPbmjdyQlnYUsokojaykAbX9Lv7ww+evMHZ8i4SDVD9bc0rB5ufp29uSIDZmeFRuhUATtP5lGbjbva7QQRgCncIkWVcNj9LmfDYhIx3TLb+6/JlAi/miD10M3L4ZJ8Ln/j3lMcfw3N5gIvXDJCXwH+YA=,iv:gdquXNPE5xHpzapS4tNTjkhFb0R0Jjj1c3U94HCcwnc=,tag:cnOkjLIjRuOVqOJHbso9/Q==,type:str] + pgp: [] + encrypted_regex: ^(adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.9.1 +--- +apiVersion: v1 +kind: Service +metadata: + name: xandikos + namespace: xandikos + labels: + app: xandikos +spec: + ports: + - port: 8080 + name: web + selector: + app: xandikos + type: ClusterIP +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5b2dpdzIveERjM2FOV3Uz + MTZsVEhaV2pHVmFtT2E0OURCa3BoUUdSZFdjCm5DWmprdzYzTjJSNDA0OStTL3pY + amsvc21mTjdndXZsMzRYM3JSOW5UREkKLS0tIHkrNmdOakFQREVBcm9KQTY0dVVY + WlB4SXViYkcvLy9kMlNHd3NWeTR2THcKH2u+ehSawhRtHoWlnLCbrYvLspOJpG/r + 0UIYAhI95ofk8upsTs0Yt9sI3VTssVbmqIZ5nGWwuEG2Wygtvu7VzQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-04-03T09:11:21Z" + mac: ENC[AES256_GCM,data:kdSiawd4mAyYlRxAEy4JPbmjdyQlnYUsokojaykAbX9Lv7ww+evMHZ8i4SDVD9bc0rB5ufp29uSIDZmeFRuhUATtP5lGbjbva7QQRgCncIkWVcNj9LmfDYhIx3TLb+6/JlAi/miD10M3L4ZJ8Ln/j3lMcfw3N5gIvXDJCXwH+YA=,iv:gdquXNPE5xHpzapS4tNTjkhFb0R0Jjj1c3U94HCcwnc=,tag:cnOkjLIjRuOVqOJHbso9/Q==,type:str] + pgp: [] + encrypted_regex: ^(adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.9.1 +--- +apiVersion: v1 +kind: Secret +metadata: + name: basic-auth-credentials + namespace: xandikos +data: + .htpasswd: ENC[AES256_GCM,data:Agc55rRWqvR4eFwKUXYrLoT0oRYES6D5bCJn/QHaeQQjpHn4XIOrNYZHSvjDRcpA+tMwoh9qUbU=,iv:rovP1QyzIuCstp1DX65foEJw9alcE5mCleA9XI59K/s=,tag:g8Mumi0E3YZGvVE4d9U4vA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5b2dpdzIveERjM2FOV3Uz + MTZsVEhaV2pHVmFtT2E0OURCa3BoUUdSZFdjCm5DWmprdzYzTjJSNDA0OStTL3pY + amsvc21mTjdndXZsMzRYM3JSOW5UREkKLS0tIHkrNmdOakFQREVBcm9KQTY0dVVY + WlB4SXViYkcvLy9kMlNHd3NWeTR2THcKH2u+ehSawhRtHoWlnLCbrYvLspOJpG/r + 0UIYAhI95ofk8upsTs0Yt9sI3VTssVbmqIZ5nGWwuEG2Wygtvu7VzQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-04-03T09:11:21Z" + mac: ENC[AES256_GCM,data:kdSiawd4mAyYlRxAEy4JPbmjdyQlnYUsokojaykAbX9Lv7ww+evMHZ8i4SDVD9bc0rB5ufp29uSIDZmeFRuhUATtP5lGbjbva7QQRgCncIkWVcNj9LmfDYhIx3TLb+6/JlAi/miD10M3L4ZJ8Ln/j3lMcfw3N5gIvXDJCXwH+YA=,iv:gdquXNPE5xHpzapS4tNTjkhFb0R0Jjj1c3U94HCcwnc=,tag:cnOkjLIjRuOVqOJHbso9/Q==,type:str] + pgp: [] + encrypted_regex: ^(adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.9.1 +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: xandikos-wellknown + namespace: xandikos +spec: + parentRefs: + - name: envoy-gateway + namespace: envoy-gateway + hostnames: + - midnightthoughts.space + rules: + - matches: + - path: + value: /.well-known/caldav + filters: + - type: URLRewrite + urlRewrite: + path: + type: ReplaceFullPath + replaceFullPath: /user/calendars + backendRefs: + - name: xandikos + port: 8080 + - matches: + - path: + value: /.well-known/carddav + filters: + - type: URLRewrite + urlRewrite: + path: + type: ReplaceFullPath + replaceFullPath: /user/contacts + backendRefs: + - name: xandikos + port: 8080 +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5b2dpdzIveERjM2FOV3Uz + MTZsVEhaV2pHVmFtT2E0OURCa3BoUUdSZFdjCm5DWmprdzYzTjJSNDA0OStTL3pY + amsvc21mTjdndXZsMzRYM3JSOW5UREkKLS0tIHkrNmdOakFQREVBcm9KQTY0dVVY + WlB4SXViYkcvLy9kMlNHd3NWeTR2THcKH2u+ehSawhRtHoWlnLCbrYvLspOJpG/r + 0UIYAhI95ofk8upsTs0Yt9sI3VTssVbmqIZ5nGWwuEG2Wygtvu7VzQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-04-03T09:11:21Z" + mac: ENC[AES256_GCM,data:kdSiawd4mAyYlRxAEy4JPbmjdyQlnYUsokojaykAbX9Lv7ww+evMHZ8i4SDVD9bc0rB5ufp29uSIDZmeFRuhUATtP5lGbjbva7QQRgCncIkWVcNj9LmfDYhIx3TLb+6/JlAi/miD10M3L4ZJ8Ln/j3lMcfw3N5gIvXDJCXwH+YA=,iv:gdquXNPE5xHpzapS4tNTjkhFb0R0Jjj1c3U94HCcwnc=,tag:cnOkjLIjRuOVqOJHbso9/Q==,type:str] + pgp: [] + encrypted_regex: ^(adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.9.1 +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: xandikos + namespace: xandikos +spec: + parentRefs: + - name: envoy-gateway + namespace: envoy-gateway + hostnames: + - dav.midnightthoughts.space + rules: + - backendRefs: + - name: xandikos + port: 8080 +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5b2dpdzIveERjM2FOV3Uz + MTZsVEhaV2pHVmFtT2E0OURCa3BoUUdSZFdjCm5DWmprdzYzTjJSNDA0OStTL3pY + amsvc21mTjdndXZsMzRYM3JSOW5UREkKLS0tIHkrNmdOakFQREVBcm9KQTY0dVVY + WlB4SXViYkcvLy9kMlNHd3NWeTR2THcKH2u+ehSawhRtHoWlnLCbrYvLspOJpG/r + 0UIYAhI95ofk8upsTs0Yt9sI3VTssVbmqIZ5nGWwuEG2Wygtvu7VzQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-04-03T09:11:21Z" + mac: ENC[AES256_GCM,data:kdSiawd4mAyYlRxAEy4JPbmjdyQlnYUsokojaykAbX9Lv7ww+evMHZ8i4SDVD9bc0rB5ufp29uSIDZmeFRuhUATtP5lGbjbva7QQRgCncIkWVcNj9LmfDYhIx3TLb+6/JlAi/miD10M3L4ZJ8Ln/j3lMcfw3N5gIvXDJCXwH+YA=,iv:gdquXNPE5xHpzapS4tNTjkhFb0R0Jjj1c3U94HCcwnc=,tag:cnOkjLIjRuOVqOJHbso9/Q==,type:str] + pgp: [] + encrypted_regex: ^(adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.9.1 +--- +apiVersion: gateway.envoyproxy.io/v1alpha1 +kind: SecurityPolicy +metadata: + name: basic-auth + namespace: xandikos +spec: + targetRefs: + - group: gateway.networking.k8s.io + kind: HTTPRoute + name: xandikos + basicAuth: + users: + name: basic-auth-credentials +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5b2dpdzIveERjM2FOV3Uz + MTZsVEhaV2pHVmFtT2E0OURCa3BoUUdSZFdjCm5DWmprdzYzTjJSNDA0OStTL3pY + amsvc21mTjdndXZsMzRYM3JSOW5UREkKLS0tIHkrNmdOakFQREVBcm9KQTY0dVVY + WlB4SXViYkcvLy9kMlNHd3NWeTR2THcKH2u+ehSawhRtHoWlnLCbrYvLspOJpG/r + 0UIYAhI95ofk8upsTs0Yt9sI3VTssVbmqIZ5nGWwuEG2Wygtvu7VzQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-04-03T09:11:21Z" + mac: ENC[AES256_GCM,data:kdSiawd4mAyYlRxAEy4JPbmjdyQlnYUsokojaykAbX9Lv7ww+evMHZ8i4SDVD9bc0rB5ufp29uSIDZmeFRuhUATtP5lGbjbva7QQRgCncIkWVcNj9LmfDYhIx3TLb+6/JlAi/miD10M3L4ZJ8Ln/j3lMcfw3N5gIvXDJCXwH+YA=,iv:gdquXNPE5xHpzapS4tNTjkhFb0R0Jjj1c3U94HCcwnc=,tag:cnOkjLIjRuOVqOJHbso9/Q==,type:str] + pgp: [] + encrypted_regex: ^(adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.9.1