mirror of
https://github.com/michaelthomson0797/fleet-infra.git
synced 2026-03-22 03:27:21 +00:00
Compare commits
158 Commits
refactor/s
...
renovate/c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f0b55736d | ||
|
|
1778bdc826 | ||
|
|
7af68faa55 | ||
|
|
f58f0143f2 | ||
|
|
df6ba41e32 | ||
|
|
e48a710164 | ||
|
043dfe5e42
|
|||
|
191f2c747e
|
|||
|
2cf472ed35
|
|||
|
38c5b1b2df
|
|||
|
0b38af2492
|
|||
|
f776bdccaf
|
|||
|
c2d39fb5b7
|
|||
|
a491af0099
|
|||
|
2ba715a948
|
|||
|
156e26b9a5
|
|||
|
bc5b430426
|
|||
|
2c8f7a0ef1
|
|||
|
27c6abb459
|
|||
|
f1d0cbeedd
|
|||
|
8f4c2dc1b3
|
|||
|
c9ab918716
|
|||
|
22eb8f3817
|
|||
|
2278720656
|
|||
| 03f4c29ec9 | |||
|
a1474579a5
|
|||
|
48f6f5e1b5
|
|||
|
e072415e68
|
|||
|
75d3669947
|
|||
|
290617d375
|
|||
|
fd0663d455
|
|||
|
28f4c67477
|
|||
|
eeef0657ed
|
|||
|
f66dd41bf5
|
|||
|
3673d4a32c
|
|||
|
fd9ea70d25
|
|||
|
b2a695cce8
|
|||
|
ed607e8dde
|
|||
|
39b820b704
|
|||
|
32e9573888
|
|||
|
7c63381686
|
|||
|
4c04890598
|
|||
|
3f2eb57074
|
|||
|
6730b79a87
|
|||
|
4504b2635b
|
|||
|
23e681529d
|
|||
|
5bb12088eb
|
|||
|
437ad8d5fc
|
|||
|
e497126f24
|
|||
|
1aacc702e7
|
|||
|
202f41968a
|
|||
|
322d16c104
|
|||
|
2780080af9
|
|||
|
6e63085fb3
|
|||
|
f12e27c5c6
|
|||
| 8ff38d1cbf | |||
|
|
744e5a8cce | ||
|
2582696e53
|
|||
|
28c142c348
|
|||
|
8cb9a318ca
|
|||
|
9b43e6b7e5
|
|||
|
b1aa0ae0ae
|
|||
|
969a3adf32
|
|||
|
6708cd2f91
|
|||
|
dffee43871
|
|||
|
66c98c84c1
|
|||
|
6489eb02fe
|
|||
|
3d31e8ec54
|
|||
|
586e5c245e
|
|||
|
f74e995af7
|
|||
|
5685149b77
|
|||
|
8e974c6e91
|
|||
|
ea570f1ef9
|
|||
|
f15974712d
|
|||
|
dff4173e0a
|
|||
|
b0d723a730
|
|||
|
cb7f79cea9
|
|||
|
3a8a8807df
|
|||
|
53956bc121
|
|||
|
3536b46c4c
|
|||
|
2a8197698b
|
|||
|
646dfa1c6c
|
|||
|
876c260d8a
|
|||
|
109fef07f8
|
|||
|
2dc7088a07
|
|||
|
b60f464b14
|
|||
|
9cb1f1776f
|
|||
|
636e162ccc
|
|||
|
3a4a6160c7
|
|||
|
dff7ee1b25
|
|||
| 914ac3e05f | |||
|
8d6275c5c0
|
|||
|
aad9cc733f
|
|||
|
b631e5b0c8
|
|||
|
2567371b24
|
|||
| 824d17e48e | |||
| 680f33f67c | |||
|
417dbcaa02
|
|||
|
eb58e2925c
|
|||
|
47e6e2c559
|
|||
|
463f5b5de6
|
|||
|
310084743b
|
|||
|
b8a80b1207
|
|||
|
fef24dc3cb
|
|||
|
d66d0a5898
|
|||
|
0aafd83d11
|
|||
|
682a5d7f15
|
|||
|
95204ab87d
|
|||
|
b43e1a8021
|
|||
|
9043b3fe8c
|
|||
|
0f6c348cd7
|
|||
|
61f793a53c
|
|||
|
2effdb5a11
|
|||
|
3af28c1327
|
|||
|
a481b39804
|
|||
|
daecd18a1c
|
|||
|
cd87cb6db0
|
|||
|
e4cd178558
|
|||
|
1bc927163f
|
|||
|
aaa23b83fc
|
|||
|
988c557214
|
|||
|
2688eace91
|
|||
|
a70c3c6359
|
|||
|
c9f9d7ed8f
|
|||
|
84061baea7
|
|||
|
6cd81a298b
|
|||
|
a713647197
|
|||
|
f74da6a76d
|
|||
|
75f07226aa
|
|||
|
05a3648e1c
|
|||
|
4f032d88e0
|
|||
|
a68e34a8d6
|
|||
|
073e66ea82
|
|||
|
6749d92a43
|
|||
|
b8c7e8a353
|
|||
|
e77a8f51b2
|
|||
|
28e587a792
|
|||
|
fc9aeea582
|
|||
|
099dabb671
|
|||
|
f8ab829e77
|
|||
|
5ed48c7bcf
|
|||
|
50c82802c2
|
|||
|
2ec6f85316
|
|||
|
c90d1c0f63
|
|||
|
e335b184c8
|
|||
|
aa06e70feb
|
|||
|
9372f79c4c
|
|||
|
79d4e6f303
|
|||
|
e5f1a78c8d
|
|||
|
118e172313
|
|||
|
dfbd0532c9
|
|||
|
249096bc1c
|
|||
|
99f6236262
|
|||
|
cc4afd2003
|
|||
|
ba3fdcbdd4
|
|||
|
36e18d5575
|
|||
|
cfd5d5e6d0
|
|||
| ca695f44a0 |
3
.sops.yaml
Normal file
3
.sops.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
creation_rules:
|
||||||
|
- encrypted_regex: ^(data|stringData)$
|
||||||
|
age: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
32
apps/actual/deployment.yaml
Normal file
32
apps/actual/deployment.yaml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: actual
|
||||||
|
namespace: actual
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: actual
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: actual
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: actual
|
||||||
|
image: docker.io/actualbudget/actual-server:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
env:
|
||||||
|
- name: ACTUAL_PORT
|
||||||
|
value: "5006"
|
||||||
|
ports:
|
||||||
|
- containerPort: 5006
|
||||||
|
name: http
|
||||||
|
protocol: TCP
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: data
|
||||||
|
volumes:
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: actual-data
|
||||||
28
apps/actual/ingress.yaml
Normal file
28
apps/actual/ingress.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: actual
|
||||||
|
namespace: actual
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: actual.michaelthomson.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: ImplementationSpecific
|
||||||
|
path: /
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: actual
|
||||||
|
port:
|
||||||
|
name: http
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- actual.michaelthomson.dev
|
||||||
|
secretName: actual-tls
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: roundcubemail-temp-pvc
|
name: actual-data
|
||||||
namespace: roundcube
|
namespace: actual
|
||||||
spec:
|
spec:
|
||||||
storageClassName: longhorn
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 10Gi
|
storage: 10Gi
|
||||||
|
storageClassName: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: readarr
|
name: actual
|
||||||
namespace: media
|
namespace: actual
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
app: readarr
|
app: actual
|
||||||
ports:
|
ports:
|
||||||
- port: 80
|
- port: 80
|
||||||
targetPort: http
|
targetPort: http
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: baikal.michaelthomson.dev
|
|
||||||
namespace: baikal
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: baikal.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- michaelthomson.ddns.net
|
|
||||||
providerSpecific:
|
|
||||||
- name: external-dns.alpha.kubernetes.io/cloudflare-proxied
|
|
||||||
value: "true"
|
|
||||||
@@ -4,6 +4,9 @@ metadata:
|
|||||||
name: baikal
|
name: baikal
|
||||||
namespace: baikal
|
namespace: baikal
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
spec:
|
spec:
|
||||||
@@ -21,4 +24,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- baikal.michaelthomson.dev
|
- baikal.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: baikal-tls
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: calibre-web-config
|
|
||||||
namespace: calibre-web
|
|
||||||
data:
|
|
||||||
PUID: "1000"
|
|
||||||
PGID: "1000"
|
|
||||||
TZ: "America/Toronto"
|
|
||||||
DOCKER_MODS: "linuxserver/mods:universal-calibre"
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: calibre-web
|
|
||||||
namespace: calibre-web
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: calibre-web
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: calibre-web
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: calibre-web
|
|
||||||
image: lscr.io/linuxserver/calibre-web:latest
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: calibre-web-config
|
|
||||||
optional: false
|
|
||||||
ports:
|
|
||||||
- containerPort: 8083
|
|
||||||
name: http
|
|
||||||
protocol: TCP
|
|
||||||
volumeMounts:
|
|
||||||
- name: config
|
|
||||||
mountPath: /config
|
|
||||||
- mountPath: /books
|
|
||||||
name: data
|
|
||||||
volumes:
|
|
||||||
- name: config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: calibre-web-config
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: calibre-web-data
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: calibre.michaelthomson.dev
|
|
||||||
namespace: calibre-web
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: calibre.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: calibre-web
|
|
||||||
namespace: calibre-web
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: calibre.michaelthomson.dev
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- pathType: ImplementationSpecific
|
|
||||||
path: /
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: calibre-web
|
|
||||||
port:
|
|
||||||
name: http
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- calibre.michaelthomson.dev
|
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: calibre-web-config
|
|
||||||
namespace: calibre-web
|
|
||||||
spec:
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 4Gi
|
|
||||||
storageClassName: longhorn
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: calibre-web-data
|
|
||||||
namespace: calibre-web
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
storageClassName: longhorn
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 8Gi
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: calibre-web
|
|
||||||
namespace: calibre-web
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: calibre-web
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: http
|
|
||||||
name: http
|
|
||||||
23
apps/gitea/actions/release.yaml
Normal file
23
apps/gitea/actions/release.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: actions
|
||||||
|
namespace: gitea
|
||||||
|
spec:
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: actions
|
||||||
|
version:
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: gitea
|
||||||
|
interval: 15m
|
||||||
|
releaseName: actions
|
||||||
|
values:
|
||||||
|
enabled: true
|
||||||
|
existingSecret: actions-secret
|
||||||
|
existingSecretKey: token
|
||||||
|
giteaRootURL: http://gitea-http:3000
|
||||||
|
statefulset:
|
||||||
|
persistence:
|
||||||
|
size: 1Gi
|
||||||
22
apps/gitea/actions/secret.yaml
Normal file
22
apps/gitea/actions/secret.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
token: ENC[AES256_GCM,data:k6dhRoR3XCITRikJStLu1+gkW8Xcrt/EnKtq/LtMOdDOC906nyDbLbLXo4yWkUPb4wOT7/FHtjM=,iv:v/7sYpp//k4NgIHIxrSgUCK0ddTS2knRXt7bv/tK6BQ=,tag:t8yskoe9Q+T1UFhzmdEgSQ==,type:str]
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: actions-secret
|
||||||
|
namespace: gitea
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYUWxLU2Z5bmJSYUs2YS9q
|
||||||
|
bFFCSEJlTGtuNEFjVGtsMDFySW5TNnF6RTBzClpMdk9CRU9kTHoyVEJZU1JITnRS
|
||||||
|
aVhjMm9ndTBXYklkWUpMV0hYNWtrVFkKLS0tIEJLRmF5NVNNamlkSWNjam1lY1pF
|
||||||
|
MmtSTTJET3VWQStHN25DeDV6aGRrVkkKcMOwuTZY/meJjQZgzmAU37mUS4VjG7H/
|
||||||
|
q8c+keASqJI511XhWi8K938U8YREge7sDw8sa+RrXpoiy3zyipZOLQ==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-12-17T20:36:08Z"
|
||||||
|
mac: ENC[AES256_GCM,data:wr1ngpRm44ueRUsfITsQa9tuWffScHsz66QCfilsc8fO8gprb0eicYAgJ6J7JygGO7hZdnLB4z1Q/5bZFmdsvK2Oz3tV/NX/gZVGbFDqPFHfjDU+5rl7lrBnRh6D1RwvYqJzNL38dDO5oUXTOfDGijS574qB4EpyUnu7+AbJwtE=,iv:7kXdBFzz/M0Kynuk3fmnWWRV7VLN0BXELrYqt/VtQ9s=,tag:FqCzxPTwnL0yBX0+SrWbZA==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.11.0
|
||||||
@@ -1,15 +1,23 @@
|
|||||||
kind: SealedSecret
|
apiVersion: v1
|
||||||
apiVersion: bitnami.com/v1alpha1
|
data:
|
||||||
|
password: ENC[AES256_GCM,data:wcJdmRnN4nFOaIiM/Lyp8fceSRKpJW9laUYsZU/9UCmreJP3YHGFdw==,iv:35aJWV/ReimElkgHDEvd1VMi1+fL8ayB2YO5Ej6Iqrs=,tag:Vl665zuBbhsU28zXH+Madw==,type:str]
|
||||||
|
username: ENC[AES256_GCM,data:vnhGaPemu1i1kpHOPvRg8w==,iv:Ika50tGu/d6m6UxzUpZFhK/SxLsUMmB/GNeeFPmszdU=,tag:wC5CLp+5OhzLKYolmr1aTg==,type:str]
|
||||||
|
kind: Secret
|
||||||
metadata:
|
metadata:
|
||||||
name: gitea-admin-secret
|
name: admin-secret
|
||||||
namespace: gitea
|
namespace: gitea
|
||||||
creationTimestamp:
|
sops:
|
||||||
spec:
|
age:
|
||||||
template:
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
metadata:
|
enc: |
|
||||||
name: gitea-admin-secret
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
namespace: gitea
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLMFNmREJGMStuTEhyRi9w
|
||||||
creationTimestamp:
|
OTc4RTlrWWJwNlc2Z3liOXQrd1Jmc0VMQ3hJCjlJMzJDdDYvNWhtUVF6ZlBmR0Nx
|
||||||
encryptedData:
|
RGNrZWlBcnpjSjZLaU95aGZjcXZVNWcKLS0tIHk0UkFnWkxFRHB3THQ1UytRSzdL
|
||||||
password: AgAajDLwVR0AFIKlQLIQU12BIKOu4qYIBIdhTJCPYrA5fj4yZZQBnAukYevTJYf76B0dYR6VzTg3uRVqHm1ve3iM73izGKR3Vab6EuWsXpS+JtqBzPuTuZCL0E+8Q+5JPacn/mOEhk97C1oUv4ZJJgPOPE88ySti+tN0T2UqUp2c1Umys4ZEuRQfESAmgwe08HV30XvkB5EZW68mjzwEry/tYKNLFnon2njNvm3/jObaWDjHeKl0pjFRoyKcTqZHgk92y+jU78ubDQlcsQiP8PRlcHKLxjEexguLYJzZGnTUVMCOMn64FN2H4mW2bBi0Apx/FsrNZQeHf1/WcLTci4ccObnhFi6kjrdZFBc/YBcXviyLrDw+CzUz1ZFSIdGxOHhJm09yJ2YmssuhxeLQ/Y8g6UUSSf2cwcAC4e7gl7EIAayod7wFQySTur7MCuKduV/e50l0OOLYHuB7DwEEhG0LONQ54FF3yrqUhOwn6C3qYPSB10ibbVFuiTreROosIpDoaZ/2TLkjcmHRiRRD7XxXusEjjvd6MH0dCrMc4NM9Dflrf3uZNuuY+tvpAr6bOnOFAN+k7+ttuskuwHmFiuy1UGkFwAs1zMcCStAYdv6+qtwi6+xIAih0XOLV43cQ3R+bZiT8yQZb3wj7oBW6rR6xJ9MpI1fexbedtJWJywfOzdCuopFV9JZWVlXurmPFoSVzEZ7CRvVvRlgS2p2PFsIzpytDW2lvlc9DwBtrrGw=
|
ZTB2WVBmWnZLT3FsekFhSHFkQ1RLNlkKbQfo7CDYk/EadaE6SEmsCZX5ubOTcbD3
|
||||||
username: AgBtjjUFVdKLXE6/+MxXhBjRkUwqg1wAvw5Sl8W8FYYBLV56PzvSl8OqWPcpNwiquvYHZTdv2/vLyVEkk3YuhxYK5SGaIb8Ap4q8OJcdK5xFKKjLCx8kzkJ5Rwa11VfqWOTqwjgrSRgfjRI3Sc9xyrAMkQUgXbI3qdj5WfP6o6YDy6fK0Qm4bTD6F/+qj3xRkonWGY54268xdlHhzNR72Cqu4Wfl6BbiLafEU4U1mrxsSzJlno5LYyCC/g8WkkIrX3JrIYUt3wuTUheA/mhqCuLPH66iW6+lSyKoH2ruUn6p8i5uRltQNI8rYLxa3zdH7Ju3AXlUSv1FHv4zanCsG1SBaWrNsiKCAvEODB2IKGNENpkBkD7Uw51TvqZFoSZyyMbQIZLeCwcaRGtAPPGz2rKG7LcWIBpjy+J7dekmT0M1ObwbjyacluLmt/zw1FBL3JHPBv5RRBVGOmNFztmBobErRcBaOam9jg3SBAdOJfDuAcWOE68CKAUcRJ6wR+dqoP5zOwYtmFva7YRb35gO5XmwbNuCKlsR7ZOl3323aJ3Ill1A329XcPgsB2YmlXXHN9xAtsodDRKnT+t2pxVk1DtRWh+M8Ixy+QlYzhQBdb878G/ZKb5PI67S1RcGU7DROld/9bQBYfIxa2+F3JC+IjUJFVRrHn87BbE16OCPKgOaq+P3n0R8jwwcDDEwSssjVrC3VvcelBsj3aOUvg==
|
lj4rj1v2dYME/wDj9rFp5IwESalXwKzUVzC8e1GuzbY6pDQPx5EW4Q==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-12-17T20:36:08Z"
|
||||||
|
mac: ENC[AES256_GCM,data:ApUlG4FA/KYrwm6u/6qNU2Cqz08MxRNmiBmiwCZgNF4aX0CWzRZ9+VbO/jIJUpzKB3W7EdpbiyuT7Ie3h0lwYIZY5xUXP4CDxsZ+TozAFJq/CgXs/BacTZIVhSEL93W+O4ett/UuIL66rtuiZcBY0CdM80j7aTy20ilse8wwusM=,iv:UWdNu4hW6OcMHkqQcrzmLZlU4gevBwAMInbjtC9R3hI=,tag:W+SgpfrOvR9HnGRfnGSgwQ==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.11.0
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: gitea.michaelthomson.dev
|
|
||||||
namespace: gitea
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: gitea.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- michaelthomson.ddns.net
|
|
||||||
providerSpecific:
|
|
||||||
- name: external-dns.alpha.kubernetes.io/cloudflare-proxied
|
|
||||||
value: "false"
|
|
||||||
|
|
||||||
@@ -1,22 +1,22 @@
|
|||||||
{
|
apiVersion: v1
|
||||||
"kind": "SealedSecret",
|
data:
|
||||||
"apiVersion": "bitnami.com/v1alpha1",
|
mailer: ENC[AES256_GCM,data:baGCpPHJejjMFeiBcgSroJWqmUj/8PzvwAdzZ+nLacen2I91iaIRIgztvsk=,iv:6M2+sKRc1ZC5CqY4X43xgGO/CeWOfjMVzNgelYd0V6c=,tag:I15tnxf8CQaLu+/0GNdeOA==,type:str]
|
||||||
"metadata": {
|
kind: Secret
|
||||||
"name": "gitea-mailer-config-secret",
|
metadata:
|
||||||
"namespace": "gitea",
|
name: gitea-mailer-config-secret
|
||||||
"creationTimestamp": null
|
namespace: gitea
|
||||||
},
|
sops:
|
||||||
"spec": {
|
age:
|
||||||
"template": {
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
"metadata": {
|
enc: |
|
||||||
"name": "gitea-mailer-config-secret",
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
"namespace": "gitea",
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJMmxwWGZUb2JRK0FHdFd6
|
||||||
"creationTimestamp": null
|
SFN5MGdZR3puUDNhMElTTy96SnVRUzJwYjFvCkJsdlJCRG9zVXdzOEY1REQ4NWRw
|
||||||
},
|
R05taHVZMlpySXVXWmNIc25VYng4WWsKLS0tIERoL0tUVmUvbG5ha0h0cWIvZDND
|
||||||
"type": "Opaque"
|
NkI0eUlmYjg3Zk9iVmNkZVpXWkh2TW8K/coOzGAPF42522cM6DZVAEEv3LmZaIhu
|
||||||
},
|
BVyl8ijATNLMIfiFpP5bHpljPHrn3lGP70RzwoCV15t1fC6pjeParA==
|
||||||
"encryptedData": {
|
-----END AGE ENCRYPTED FILE-----
|
||||||
"mailer": "AgDViQgjYRiW3AjnwQZWKauZKoSMmf/LqaOiAZTE1yxULaIE3quXZjm6vkZTtvYqT2eDkKe20O5iTDyBdsO3+29LRnnOm6kF/y4cZ/JOiWfh6nJ0hx6g+MybG3rq4GcWQj7C5OQCi97ctHYemDaWoNKkjwSvNpt+pKcEaBgaqyWQ1knLxP8BaPg51R8CnIe5opn7+AsQwiwi9JX4ucrU46QqLVTg3KT+CobRlEFqtU3jd2CQuj1CN4Y/XgtQFHh3hLB+c05HV6sd0xwo9zMKUSQe2k++5Z5esGj4Hu25UXn36iwmJCfueMor2Y0yOBndPNNviRMMgKjE383retjL1o6n8HkIo5YTrKd18EyuQcq/EdhA8kb3uKX4N1EtOrFLlMGAUKliV42e+3w3IfXtFC9bvTpHivmKIQwZSlPQbF1SVFIbhiBdvNClYJpR61P7ZS6h0D57Tf3vmRpKTSlrHH01sbaKDd9+/kVGUQ0Lk4XRXK0JyTJkNDIiEBuiBB3H/GEZ27k4heBFav6w06gp3zhoOhmhq4XJcFWcselOJeY5cqSUzhLx440zMwwPWvEDH+/nrbhanx6KGFU5Lm6qX7tMn54+P4Ch/vAcnPs/0sXNx0xleGsRVEis+2/EmbdSDwe42+orKxbpQU1bEj7Rqtwiwk4VsTKXgPfzKXcgMMXo+4vvP4t8rCRo1hMkx1EXhKascwntdOb1Nz52QZvij02eNiQhDA2exuG8Room1Ox9Sb4="
|
lastmodified: "2025-12-17T20:36:08Z"
|
||||||
}
|
mac: ENC[AES256_GCM,data:QBxnUAGg6xchZ9iqKK8gAmdJhDfma5BZlJVRZcfzGM57diuO2OE4JDbjW5gqf21OACL4d2funVlXRVlioLoe0tfZJY3AAedOmyQVXdrr0PwarbPztbWAFVvIMeQWPZUyPd3GxgaAATeBVCanSEgVTIOVqCN/DXNSHY2XcQ9x9Y0=,iv:ugLYt5NxsTIy0wUul748IGIzayG+zPQ/z5kH3T9IfiE=,tag:3yTjZ+MMMVNmi/8p321fFg==,type:str]
|
||||||
}
|
encrypted_regex: ^(data|stringData)$
|
||||||
}
|
version: 3.11.0
|
||||||
|
|||||||
@@ -7,12 +7,11 @@ spec:
|
|||||||
chart:
|
chart:
|
||||||
spec:
|
spec:
|
||||||
chart: gitea
|
chart: gitea
|
||||||
version: 11.x
|
version: 12.x
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: gitea
|
name: gitea
|
||||||
interval: 15m
|
interval: 15m
|
||||||
timeout: 5m
|
|
||||||
releaseName: gitea
|
releaseName: gitea
|
||||||
values:
|
values:
|
||||||
global:
|
global:
|
||||||
@@ -26,12 +25,15 @@ spec:
|
|||||||
port: 2222
|
port: 2222
|
||||||
clusterIP:
|
clusterIP:
|
||||||
annotations:
|
annotations:
|
||||||
metallb.universe.tf/loadBalancerIPs: 192.168.2.248
|
metallb.io/loadBalancerIPs: 192.168.18.248
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
className: traefik
|
className: traefik
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "false"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
hosts:
|
hosts:
|
||||||
@@ -42,7 +44,7 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- gitea.michaelthomson.dev
|
- gitea.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: gitea-tls
|
||||||
|
|
||||||
persistence:
|
persistence:
|
||||||
claimName: gitea-shared-storage
|
claimName: gitea-shared-storage
|
||||||
@@ -53,6 +55,8 @@ spec:
|
|||||||
config:
|
config:
|
||||||
server:
|
server:
|
||||||
SSH_PORT: 2222
|
SSH_PORT: 2222
|
||||||
|
actions:
|
||||||
|
ENABLED: true
|
||||||
service:
|
service:
|
||||||
DISABLE_REGISTRATION: true
|
DISABLE_REGISTRATION: true
|
||||||
REGISTER_EMAIL_CONFIRM: true
|
REGISTER_EMAIL_CONFIRM: true
|
||||||
@@ -67,7 +71,7 @@ spec:
|
|||||||
SMTP_PORT: 465
|
SMTP_PORT: 465
|
||||||
USER: gitea@michaelthomson.dev
|
USER: gitea@michaelthomson.dev
|
||||||
admin:
|
admin:
|
||||||
existingSecret: gitea-admin-secret
|
existingSecret: admin-secret
|
||||||
email: "gitea@michaelthomson.dev"
|
email: "gitea@michaelthomson.dev"
|
||||||
additionalConfigSources:
|
additionalConfigSources:
|
||||||
- secret:
|
- secret:
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: hoarder.michaelthomson.dev
|
|
||||||
namespace: hoarder
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: hoarder.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- michaelthomson.ddns.net
|
|
||||||
providerSpecific:
|
|
||||||
- name: external-dns.alpha.kubernetes.io/cloudflare-proxied
|
|
||||||
value: "true"
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: bitnami.com/v1alpha1
|
|
||||||
kind: SealedSecret
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: hoarder-secrets
|
|
||||||
namespace: hoarder
|
|
||||||
spec:
|
|
||||||
encryptedData:
|
|
||||||
MEILI_MASTER_KEY: AgCHcsgG2eNFA8M//KlFEXsD8v+kh9MWiIPr/vWBXqOtoyCoA5vTcrWdQvnmO+ic93kiBy2sTRa2thR2UQd9h3GnC4+MkTGZDLmbiArlE6HltuSWUnqaZESop8NBu8p3mFJ3kX8sLA3RzEZrj4/rmFT3CFym5v6vXjXxGaaT2C0VjsCxeOnGjcEyfm4gaptNP14v43bRRsxZtLo1F/pI1vkMPMbcQPsGXuiIkOxbaMAgGdlybMX1q7ZWWdXEHb/o+RDN2D2c9GJeZDgk/znT1A8IwfAUue1BpF2VamtFxoX2aI2w0xjGeJ7ffUOS3VzuBSAITsw4lb+7gCmC7FByqjxCmoiBI3L20XcFoWMmvNFKqsOPDVduNCJeYAZQHSNfC0SxGIu1tUw1T66NijsItDPH5vjH6BGvWyS3E+YMkxEHMV6ZJWkk3+S0gMRURSEo3Dr/MCby2x6MPbaKFB06u2Vyr0XWRUAXlphzndO0Ibt9P/KVldNX+ZueVxoZkxt+PiJqhWb6ZT8s0VBPmWleufbyjkZoa00KVM4/IGrSBJdLboGGmHU1p1EZGzpMEexCp/G0iEuNqkLJo8cCRxrHH6zsVunIpXnTYg+6Ob032+LDGGG2jKGKsjAlKKod/TIpL15poZZoVIv57IkLYd6bYASDQ9M4NpSJ3gyyIe+jICHBGFQ4t/mBfzlfy4fpjpFRxGNOQhr6TNBIgda9QI17OTkNDyace9Ltqu6CUIDvgOUYUH/gTBfYFtSk0NZWPJdJ+aA=
|
|
||||||
NEXT_PUBLIC_SECRET: AgB3LRSR+Y/VbTXIHpqlMUR1ec3LXdsghJ8vmMGEB+674W+x36ciekTkv8fGPj+XJXnXgPqCMrAr/Wd6ExrkW/nI2ZxDvbYLQ4POW34b5vF8IV0KD2kARUz5UGmVJOsCRSdlqqEsED72U2Cotw8voYOpEk7GfWZPTAyg6iv6pJyIa3gXEtdKV4k8XOQmMvdAui/0iAoTOeMpP6Qe2hGqCvSCtrsw+aj+ptUlQkP9pOQW6Uo/XMebwwZVSkgFOr6pEPhr70qMbi31ERR1at/vNYArQy8PXmUxJGsRF5KgjD+Nq6rrZPXJFjEk6qx+MAcysJ6rCJeYiCmZMZHabZ9CrhFTVdwtSO2su6B19hXS7fACzIrFNr5Z23NAn6+SoDodXo+Bqa+1ldHFzZl9ve0eoHEB8sG1qVvA5wWMtPm4D2mxd0UTlK0/EqY1jP+EvWNC05v/uD4toIEX3HEZCqdPqghmWxwq8qCm3ZpYvmxQwZxWHZdpxIen262vMZ6s5yZVC/n/v2EVmswqllUBvBCHq6WBBZqF5tgYBsuwy4qf976HMGvXXVx/WcE92eA3iT1olUnFJ7I4Isdp28tFl8jv5JLHJJozzWI91iwPUAwT5xFXi/2Jtk9Oe7QNjsEpYqnxxbogbMS6UZL4TJ1QNsyY29iue+E9q2Eck9Btb8xDtpSH2FNKNo/3FNcbe6hNXdwEbqoGIcNPZNNGDMOFVq6EeTmyxxR3CZYahHt65BXO0K/Smv8n4NSwI0e5T7Hn4S5o8JM=
|
|
||||||
NEXTAUTH_SECRET: AgChzv5iFZC4pFksnh7blvLWRn/2VsCqjOqkRnFQFTApAKf6CyfUgkFy5yBgbwqtS4oak6jtadtVZQuiWXrY2bIRvROwL4AEqGvteUhURSL7Hy/3oRd6BoBiT/zoiTkBmZRBG1LsI6KjCWXvjKAQGsoJ6sPQOGVGZ2eb57ne51op7xrhAyWbCuuy5tw237Qb/DnTgqeIQ4SmgTytLd5jO6nZ1yhzpmUW6ynu8TLy3ar3vIecc7IQkS7mmnXJgGilUrNUkdNjFdxkALBPah4a0qgwaRrZVh0MLa4Kvud5iYEC6Y5YFxZ2/6pH/OA0+aEw4gWdENyxDRVmxkwHpN22Ya1svvEI1V3RD7RQFA4psLClly3bJDpE96NIS0gSbpGzo2xszf3iKX5U5WjnGEODg9udQ+/RZvluU1NjwkPP5wFpAZU1YC5w2OUtZH/tQQ0Lumn1YsgXeH/oEtXfMgSTWD0Yoxwv7r+bFPb03OUllTG8AFVrP0Uigz9sl/td1u9zvrPFQMNPITSUOFrMbnVA0riKVGqFkkfxSp93lRpKHx7sA7LWyrZfYdcEGsaxMdBWGUcuv4OCtCHQhuyuxkJc7/Dygg3roxPyaehU/j5fY962qnRtv2Okmpf1Lm9VvuB83+ZhnJJNFgWVh6rPUgA+v0rVKOpzSYHpP878EMf3wz08wghhFmhlBSimAftMa8B9zSBkzlqfm6ByrtUNsKSuPE3k1H4YjusxRKFu4DXgo0eiZWmVQWb+YzhS4/zp5aJU3lA=
|
|
||||||
OPENAI_API_KEY: AgDISqGkHBSMNAmZa5uXoE2DAPy0FbxoZB1ngYRVGbQWN6LxW/3u+O+qtggo1qd+yaPTXJTi5DST22CNLZfk+pdYtMsTb3lQrEM0BkiACDsppOah9pz675xdZrAZG1+BlwGDfyRyKmww6t12D01MEl5g5dgXSA5ZHzPkhR4BySWzbVTN5oF3Yj/7twDkE8ignpdD0lIzPEqoOjdgeQ7g1cUAOTjbj9Q46S75kIaXhzIRnForZi3wbnhFn8pzcuNMERYfxms4u2x5cfUHyRTjblsS7KRIN2ymtsVauCdpmbe6bf3q7WCZ1XE7HcHdDpDK5N0kZRSHVMQUTp3kGripMiBb5aAfYOQBm+6Rjd0OE49dwEfgOV/zecOPZeTp70xwS3RhjioJlVRzHUIYZ9PRjt0gLqEULAQzF8E0FoQcwcjCxtEqTwLHNcVJ3xUBrt/Oq4yTgKspuu+Mb45UUlxyfZUaXrMZp73OE5qFVeUUjGRze6iQ2Hd5znOWH7BUqN+esEzqIyzhhREBSdyKmGdV33eYLcFrnaQkClilf5xeIbKjfA3QLl/3gtdteU3IiYd0PPNXPQr7aYK1buDsLExDo1M9tZM19eypLphStnOtXxtdHFua0jit6Cr7tVFRSF1gJYmtrLpcK5q5bnAt1KCZ2DBQCMgSQhOd1v9t0DQB7dbqgm5+44OJRZDOyhgE03qG57tdsTgr6ufL3Q+wfbo60VVl6JnR+MqgDbTrXvwzWyt5junDDL/FI/MLE9HAH7y5UDCyoHALEAhecE6FF+H34g5NHxQKxHTb6Id5uBdGcSTPDmJO+hwHwTvvSQUQPknGQzFURRw9cLTk+IeTjCfrQE1mIYnk9M5aa0CHWSALB8eXovWUiY1o7A3WYZkIFIz4+bcIws1ihd0M/vGr/cnczDZR5WeIqg==
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: hoarder-secrets
|
|
||||||
namespace: hoarder
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: ha.michaelthomson.dev
|
|
||||||
namespace: homeassistant
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: ha.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -4,6 +4,7 @@ metadata:
|
|||||||
name: homeassistant
|
name: homeassistant
|
||||||
namespace: homeassistant
|
namespace: homeassistant
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
spec:
|
spec:
|
||||||
@@ -21,4 +22,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- ha.michaelthomson.dev
|
- ha.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: homeassistant-tls
|
||||||
|
|||||||
@@ -3,9 +3,12 @@ kind: Cluster
|
|||||||
metadata:
|
metadata:
|
||||||
name: immich-postgres
|
name: immich-postgres
|
||||||
namespace: immich
|
namespace: immich
|
||||||
|
annotations:
|
||||||
|
# needed to allow for recovery from same name cluster backup
|
||||||
|
cnpg.io/skipEmptyWalArchiveCheck: enabled
|
||||||
spec:
|
spec:
|
||||||
imageName: ghcr.io/tensorchord/cloudnative-vectorchord:17-0.3.0
|
imageName: ghcr.io/tensorchord/cloudnative-vectorchord:17-0.3.0
|
||||||
instances: 1
|
instances: 2
|
||||||
|
|
||||||
postgresql:
|
postgresql:
|
||||||
shared_preload_libraries:
|
shared_preload_libraries:
|
||||||
@@ -18,15 +21,44 @@ spec:
|
|||||||
login: true
|
login: true
|
||||||
|
|
||||||
bootstrap:
|
bootstrap:
|
||||||
initdb:
|
# initdb:
|
||||||
database: immich
|
# database: immich
|
||||||
owner: immich
|
# owner: immich
|
||||||
secret:
|
# secret:
|
||||||
name: immich-postgres-user
|
# name: immich-postgres-user
|
||||||
postInitSQL:
|
# postInitSQL:
|
||||||
- CREATE EXTENSION IF NOT EXISTS "vchord" CASCADE;
|
# - CREATE EXTENSION IF NOT EXISTS "vchord" CASCADE;
|
||||||
- CREATE EXTENSION IF NOT EXISTS "earthdistance" CASCADE;
|
# - CREATE EXTENSION IF NOT EXISTS "earthdistance" CASCADE;
|
||||||
|
# NOTE: uncomment this and commend the above initdb when recovering
|
||||||
|
recovery:
|
||||||
|
source: immich-postgres
|
||||||
|
|
||||||
storage:
|
storage:
|
||||||
size: 8Gi
|
size: 8Gi
|
||||||
storageClass: longhorn
|
storageClass: longhorn-pg
|
||||||
|
|
||||||
|
externalClusters:
|
||||||
|
- name: immich-postgres
|
||||||
|
barmanObjectStore:
|
||||||
|
destinationPath: "s3://mthomson-cnpg-backup/immich/"
|
||||||
|
endpointURL: "https://s3.ca-central-1.wasabisys.com"
|
||||||
|
s3Credentials:
|
||||||
|
accessKeyId:
|
||||||
|
name: wasabi-secret
|
||||||
|
key: ACCESS_KEY_ID
|
||||||
|
secretAccessKey:
|
||||||
|
name: wasabi-secret
|
||||||
|
key: ACCESS_SECRET_KEY
|
||||||
|
|
||||||
|
backup:
|
||||||
|
barmanObjectStore:
|
||||||
|
destinationPath: "s3://mthomson-cnpg-backup/immich/"
|
||||||
|
endpointURL: "https://s3.ca-central-1.wasabisys.com"
|
||||||
|
s3Credentials:
|
||||||
|
accessKeyId:
|
||||||
|
name: wasabi-secret
|
||||||
|
key: ACCESS_KEY_ID
|
||||||
|
secretAccessKey:
|
||||||
|
name: wasabi-secret
|
||||||
|
key: ACCESS_SECRET_KEY
|
||||||
|
retentionPolicy: "10d"
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: immich.michaelthomson.dev
|
|
||||||
namespace: immich
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: immich.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- michaelthomson.ddns.net
|
|
||||||
providerSpecific:
|
|
||||||
- name: external-dns.alpha.kubernetes.io/cloudflare-proxied
|
|
||||||
value: "true"
|
|
||||||
11
apps/immich/podmonitor.yaml
Normal file
11
apps/immich/podmonitor.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: monitoring.coreos.com/v1
|
||||||
|
kind: PodMonitor
|
||||||
|
metadata:
|
||||||
|
name: immich-postgres
|
||||||
|
namespace: immich
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
cnpg.io/cluster: immich-postgres
|
||||||
|
podMetricsEndpoints:
|
||||||
|
- port: metrics
|
||||||
@@ -12,23 +12,26 @@ spec:
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: immich
|
name: immich
|
||||||
interval: 15m
|
interval: 15m
|
||||||
timeout: 5m
|
|
||||||
releaseName: immich
|
releaseName: immich
|
||||||
values:
|
values:
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
containers:
|
||||||
|
main:
|
||||||
|
image:
|
||||||
|
tag: v2.1.0
|
||||||
env:
|
env:
|
||||||
DB_HOSTNAME: "immich-postgres-rw"
|
DB_HOSTNAME: "immich-postgres-rw"
|
||||||
DB_USERNAME: "immich"
|
DB_USERNAME: "immich"
|
||||||
DB_DATABASE_NAME: "immich"
|
DB_DATABASE_NAME: "immich"
|
||||||
DB_PASSWORD: "immich"
|
DB_PASSWORD: "immich"
|
||||||
image:
|
|
||||||
tag: v1.134.0
|
|
||||||
|
|
||||||
immich:
|
immich:
|
||||||
persistence:
|
persistence:
|
||||||
library:
|
library:
|
||||||
existingClaim: immich-data
|
existingClaim: immich-data
|
||||||
|
|
||||||
redis:
|
valkey:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
server:
|
server:
|
||||||
@@ -37,6 +40,9 @@ spec:
|
|||||||
main:
|
main:
|
||||||
enabled: true
|
enabled: true
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
hosts:
|
hosts:
|
||||||
@@ -46,7 +52,7 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- immich.michaelthomson.dev
|
- immich.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: immich-tls
|
||||||
|
|
||||||
machine-learning:
|
machine-learning:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
11
apps/immich/scheduled-backup.yaml
Normal file
11
apps/immich/scheduled-backup.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: ScheduledBackup
|
||||||
|
metadata:
|
||||||
|
name: scheduled-backup
|
||||||
|
namespace: immich
|
||||||
|
spec:
|
||||||
|
schedule: "0 0 0 * * *"
|
||||||
|
backupOwnerReference: self
|
||||||
|
#immediate: true
|
||||||
|
cluster:
|
||||||
|
name: immich-postgres
|
||||||
23
apps/immich/wasabi-secret.yaml
Normal file
23
apps/immich/wasabi-secret.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
ACCESS_KEY_ID: ENC[AES256_GCM,data:ad1Xc2tUS5JCGiaOoL5udd058QxG592R7a+66A==,iv:erHAPm5E5w2B0fZ/sagwTsT16MTLnbYzmamT9OS3fEE=,tag:TMRosj0L+u3JL3o6ig0/rw==,type:str]
|
||||||
|
ACCESS_SECRET_KEY: ENC[AES256_GCM,data:QJ3RkLWP8QNPt+JoD1B3ZCQkZKH82ImgnR8ZgfPPnEDFYj2rRuTbZva33yL/wAz95ll8YbjxtQw=,iv:cO96syX0ZdukwhKvvtrTzQcy0qQGEiL3NSxigcop+EQ=,tag:JS9sT+iFgdFMkTM74ore2w==,type:str]
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: wasabi-secret
|
||||||
|
namespace: immich
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPa1lwSXVIM0ZRa1NhZ3lv
|
||||||
|
U05sZi9WbkVidVVDYVdXWWNZejRHNW9MNUF3CkNFVjc2bjFUZXhuQzAxUDBDVGxi
|
||||||
|
VGpZcHdZMHVWVW40NDRvY2RURFJ5OEUKLS0tIGlwRmNTZi9WWEhuWnB5TW1leVZt
|
||||||
|
eWpOMDdyakJEcWxYaFZiZ05nbCtWU00KmfoVxNBH7N44v/Xxcmjw/D/YQ93DA7yU
|
||||||
|
6/kk/7R2ya2JWtuqkOx9QPU8/TKaucU5V/IxPhoWquytevHkL5QhUw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-12-17T20:36:08Z"
|
||||||
|
mac: ENC[AES256_GCM,data:1iNzgy+OKP7tZXkiMLr/9oFLjLnEEKAkQdzceFkGUYiq7gHmujuplt9vU2JS+Kc7l5m9FyB7cFOjHpJec08owJf7gDXcHBkUQmGGIU6eso/n/G5lj2bDKoQgrZcS3+cgpDGY/oiFh34ZapSL1uEbgQudRWsfQZr7o8iHLGEir4s=,iv:md9IZ9n2ecQDnBHIkBGZHhc34uIi9aWzbsDbZo2hx/U=,tag:U3m6q5TfHiii7cGPsK0MOw==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.11.0
|
||||||
@@ -2,7 +2,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: chrome
|
name: chrome
|
||||||
namespace: hoarder
|
namespace: karakeep
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
@@ -2,7 +2,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: chrome
|
name: chrome
|
||||||
namespace: hoarder
|
namespace: karakeep
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
app: chrome
|
app: chrome
|
||||||
@@ -2,7 +2,7 @@ apiVersion: v1
|
|||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: data-pvc
|
name: data-pvc
|
||||||
namespace: hoarder
|
namespace: karakeep
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteOnce
|
- ReadWriteOnce
|
||||||
@@ -1,14 +1,17 @@
|
|||||||
apiVersion: networking.k8s.io/v1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
metadata:
|
metadata:
|
||||||
name: hoarder-web-ingress
|
name: karakeep-web-ingress
|
||||||
namespace: hoarder
|
namespace: karakeep
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
spec:
|
spec:
|
||||||
rules:
|
rules:
|
||||||
- host: "hoarder.michaelthomson.dev"
|
- host: "karakeep.michaelthomson.dev"
|
||||||
http:
|
http:
|
||||||
paths:
|
paths:
|
||||||
- path: "/"
|
- path: "/"
|
||||||
@@ -20,5 +23,5 @@ spec:
|
|||||||
number: 3000
|
number: 3000
|
||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- hoarder.michaelthomson.dev
|
- karakeep.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: karakeep-web-ingress-tls
|
||||||
30
apps/karakeep/karakeep-secrets.yaml
Normal file
30
apps/karakeep/karakeep-secrets.yaml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
MEILI_MASTER_KEY: ENC[AES256_GCM,data:hGTazo5p3b+k9c1FsCzV8lkCKFqEv/pXbAF0FqnYK0euPusL20skBIBP/hZQCllL9ZIpHuHAK8ZA57TMrnBtBA==,iv:E/1DsMVmQ6r3IgF0g4UBvW0rLTUmc4OOBx7FJh0/fP8=,tag:I9NzdG8hkndQEEa+RwHGJA==,type:str]
|
||||||
|
NEXT_PUBLIC_SECRET: ENC[AES256_GCM,data:x0lLGcfMX4o76y+wpSUh4oTh4bm0CIw8+epVX3uO8BpN79xYFLMV3EzbUOi4Isldb0zdPzK6xlnF7tqCvTDY9Wq/SUs=,iv:vIfucp8BM9FaXUtoUUTXCQuRWTngFokKFpIwhA/IpXI=,tag:RykRRY1q2iV9zqe3rvxSkA==,type:str]
|
||||||
|
NEXTAUTH_SECRET: ENC[AES256_GCM,data:Z9GlM3phYB9WtU2K2HH9oAU7F7xZP48IsbK1JrwE72GZP53MiZmGDzTTzU/aP9DfG71PWqEgCPC56bQFr7UtvQ==,iv:SNNpv6J44Q4hxRvgzNNgt7NMUAoNMDAy3Ff7jrFAimQ=,tag:kvp3H+DgVAtXMwKzIPTJRA==,type:str]
|
||||||
|
OAUTH_ALLOW_DANGEROUS_EMAIL_ACCOUNT_LINKING: ENC[AES256_GCM,data:qQAQg6sCJO0=,iv:EqNG67j5uII6+TBnMY9wt6E1jq52vevccfs+pmn4zs8=,tag:UP2omHyj5qCw/jIErW8GVw==,type:str]
|
||||||
|
OAUTH_CLIENT_ID: ENC[AES256_GCM,data:IK87xFx5N0he669UzhYLeFbpfAcZB039p8bgw+6AGDi17MIRBmoQkVJ1bvnGM+EaG7A7ezdrEQk=,iv:OG2HE2ubV/2ZIllyKIFnA7nRNEZfCoyh7AX+M8rLqtk=,tag:uCf8YI9RymbjLzVR2h/btQ==,type:str]
|
||||||
|
OAUTH_CLIENT_SECRET: ENC[AES256_GCM,data:OA6t3SU4uhD3AXFYxk06dhYdQhESr2LaWJ58jTGDCIGS2hIb6Sx7tS1nlDK/7G2LB8IZbRDfLSXc+DoYlQ/WwIlFSi9gDbiBYpk0ZYtfuo0hapc0MMCOpdvh7nc9d1p5/tMkX/ZbO0N2BHSBVbtwWaXntDDUd5YJxRubE6pnN3jKRbqY6BGfSdWytf47n8SEK6O2NWIgxnvlkKPLX0H/iKOxaTKHpasyEVv9xw==,iv:31nVzU3o4TuIGlH35oD5PRXbWWIX8FZ2u0OnYorM7sY=,tag:5Y8YFbt28UPDKr7EVJjApQ==,type:str]
|
||||||
|
OAUTH_PROVIDER_NAME: ENC[AES256_GCM,data:lcMWx1XJ/86FVyB4,iv:jVH7sDJo7Gag+hWNbUf9FC+jGqjts7liXomeOeW0eJ0=,tag:ISkJ2s/ZMOdLsxKh1Iauqg==,type:str]
|
||||||
|
OAUTH_WELLKNOWN_URL: ENC[AES256_GCM,data:/29zd+yLKKPQs9KfYCDOOPLqpay3Hd/+6YE3NcufDCiBCGEzHE9YtqrwyYGhq/Z3RPBNB85aYgCZbEVVgTezOvMGeoOUWzrQirD0ZF7JYPQt+jbpLRKMgsD9YF9iySRCPickdp17Hh6ukwhPfcf1ucT5tT9sjXm6JVFJFg==,iv:hzF9F9btpP/7Add/g/E0RlPDO5npIbVaj0JoJ0Na/SA=,tag:c2rigTpq0vtct4FCIBPE6Q==,type:str]
|
||||||
|
OPENAI_API_KEY: ENC[AES256_GCM,data:am/9P6389pS9IrxX2oAiMP5NawG8oj77rY8mgfJCjaXfGOPARIGtOSkmFVyY1oQR51oi3jDAg++JR72IW5k1NFkQp9JehMZeNXgLIc3aBIVIjJ+8G+q4AZ63TJrPAnDd+XiXf0aOAyyMzwmRY/j9Gu4cZXGxvqdz5HAmQMwcBfpWRXpEA1+YnDea2YhXW796JHI6WPBD4dzFMUZ1q5PGWwMOsAi6ArIXTN30EK1AqM8EIlK5quubbRxbJCI16DGDzIbXnuLB7MW8mvzm93Yz1Q39Q01reO3XZbihLw==,iv:G9XIKNcqUIizhgzj0POi0tQ/nHOne3DLeDtRaP0lXUg=,tag:o1zZ8ZoYbQZad3ciV9lqjg==,type:str]
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: karakeep-secrets
|
||||||
|
namespace: karakeep
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAreXJUVW5FVUsrc2k0RUk0
|
||||||
|
ZkZRS3pZUXFaTUdManhKVWp1S0JiaHRQV200CjVUYlAwN09TelNsK1l4aTQzSEF0
|
||||||
|
SFVkQnUwaFAvbGN5Z0dVTVdMdmRXR1kKLS0tIEk4S2FINWU1ZmtSYWFsVm94UTVS
|
||||||
|
RTBKZEtZMUhLMEFlejNEek5iL0J5Q28Kk07rkAd/qNVyS40Iz7yfSJMpa2pGtvrj
|
||||||
|
0YBKgyDoKmQ1aNzPo5aiaKyaUdh1PYrkAI7q5J+rmXj/70DR662nSA==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-12-17T20:36:08Z"
|
||||||
|
mac: ENC[AES256_GCM,data:4gHyTL/1DH/s4S/GdQOS7THzXNwo0xvMGdUqtEwgsjTSnoEZQMiUFLGOSnCy3LVG6JiPvCrJKDRrralrdaoSSWcmwy3pA/EG2eS58ooa02Hum2DgJ9XO25ZNSj16/gGJwgnEscGHSsAjRA3guAPAIbGip6DrhJJ3EfgVXT+J0OI=,iv:gV6QwYfTXiz4bfJNmW5yiZflspI3zULTEtVsWxirjvE=,tag:388de9lUv88lH3JoGsnlug==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.11.0
|
||||||
@@ -2,7 +2,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: meilisearch
|
name: meilisearch
|
||||||
namespace: hoarder
|
namespace: karakeep
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
@@ -24,7 +24,7 @@ spec:
|
|||||||
name: meilisearch
|
name: meilisearch
|
||||||
envFrom:
|
envFrom:
|
||||||
- secretRef:
|
- secretRef:
|
||||||
name: hoarder-secrets
|
name: karakeep-secrets
|
||||||
volumes:
|
volumes:
|
||||||
- name: meilisearch
|
- name: meilisearch
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
@@ -2,7 +2,7 @@ apiVersion: v1
|
|||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: meilisearch-pvc
|
name: meilisearch-pvc
|
||||||
namespace: hoarder
|
namespace: karakeep
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteOnce
|
- ReadWriteOnce
|
||||||
@@ -2,7 +2,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: meilisearch
|
name: meilisearch
|
||||||
namespace: hoarder
|
namespace: karakeep
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
app: meilisearch
|
app: meilisearch
|
||||||
@@ -2,24 +2,26 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: web
|
name: web
|
||||||
namespace: hoarder
|
namespace: karakeep
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: hoarder-web
|
app: karakeep-web
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app: hoarder-web
|
app: karakeep-web
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: web
|
- name: web
|
||||||
image: ghcr.io/hoarder-app/hoarder:release
|
image: ghcr.io/karakeep-app/karakeep
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 3000
|
- containerPort: 3000
|
||||||
env:
|
env:
|
||||||
|
- name: NEXTAUTH_URL
|
||||||
|
value: https://karakeep.michaelthomson.dev
|
||||||
- name: MEILI_ADDR
|
- name: MEILI_ADDR
|
||||||
value: http://meilisearch:7700
|
value: http://meilisearch:7700
|
||||||
- name: BROWSER_WEB_URL
|
- name: BROWSER_WEB_URL
|
||||||
@@ -27,13 +29,13 @@ spec:
|
|||||||
- name: DATA_DIR
|
- name: DATA_DIR
|
||||||
value: /data
|
value: /data
|
||||||
- name: DISABLE_SIGNUPS
|
- name: DISABLE_SIGNUPS
|
||||||
value: "true"
|
value: "false"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: /data
|
- mountPath: /data
|
||||||
name: data
|
name: data
|
||||||
envFrom:
|
envFrom:
|
||||||
- secretRef:
|
- secretRef:
|
||||||
name: hoarder-secrets
|
name: karakeep-secrets
|
||||||
volumes:
|
volumes:
|
||||||
- name: data
|
- name: data
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
@@ -2,10 +2,10 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: web
|
name: web
|
||||||
namespace: hoarder
|
namespace: karakeep
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
app: hoarder-web
|
app: karakeep-web
|
||||||
ports:
|
ports:
|
||||||
- protocol: TCP
|
- protocol: TCP
|
||||||
port: 3000
|
port: 3000
|
||||||
23
apps/kube-prometheus-stack/admin-secret.yaml
Normal file
23
apps/kube-prometheus-stack/admin-secret.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
admin-password: ENC[AES256_GCM,data:FXusij+QSZCfG5Cp1VFTsDXmzYc=,iv:KuscQB1tHeTY4d7EPEozOO9FqlhBwZL2hNix7gGpu6s=,tag:wX7us8uCsHlfudM6sx/vAw==,type:str]
|
||||||
|
admin-user: ENC[AES256_GCM,data:aOqM1iNeX30=,iv:iwxNPSNsrxEr7zTmKRWmLK3BNu5UIj055l1p3I24xKo=,tag:eUfhUyD8vHh8YKFZpAX2ww==,type:str]
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: admin-secret
|
||||||
|
namespace: kube-prometheus-stack
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyU2FJWjVseDY5ZGlJd2xs
|
||||||
|
OHBPQUpiS1ZocTZVeWVOVFdEaGt3dkN4OFFJCmd4M1lYbGYzelNhaDl0Tm5IUGww
|
||||||
|
OVc3M2Z5U3JGYVpuV21UQnJlZzM3Nk0KLS0tIDlma0J4amZKYWo4enpMdTI1YUZJ
|
||||||
|
aXBLVnBtMFpLc3B3djdzZDBiWXhwdmMKSlkc7MFkV6lDJ0J+k2GdIlpbNa438bre
|
||||||
|
2QOOgd3QeomniAmM0pemCR9PIVA3Uf+3DhMs1foZ6uYugJMMsd6esQ==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-12-19T20:36:08Z"
|
||||||
|
mac: ENC[AES256_GCM,data:KocjA27Zp0Y/DVemOVvjOATT7QIQjydpJIYQpjr1UnB8l748E+VGkvra2vLyV11BQz3uLija/2v0WNmQs5f+ZLvoTuQro6l9HxSk4zkkgfMzkqzlWIVFsj2Z0SrNtLl+bQMkDeOuMeeB+hAtOtwoc04X9n78PIW+2SGsq2Z94Co=,iv:KfRKGFC0geEburKxnXJJJqZUmVXhET2WnEON+gxlQp8=,tag:cTnOwHZNcP3Z5aCvF+IS3Q==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.11.0
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: grafana.michaelthomson.dev
|
|
||||||
namespace: kube-prometheus-stack
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: grafana.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: prometheus.michaelthomson.dev
|
|
||||||
namespace: kube-prometheus-stack
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: prometheus.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -7,37 +7,47 @@ spec:
|
|||||||
chart:
|
chart:
|
||||||
spec:
|
spec:
|
||||||
chart: kube-prometheus-stack
|
chart: kube-prometheus-stack
|
||||||
version: 63.x
|
version: 79.x
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: prometheus-community
|
name: prometheus-community
|
||||||
interval: 15m
|
interval: 15m
|
||||||
timeout: 5m
|
|
||||||
releaseName: kube-prometheus-stack
|
releaseName: kube-prometheus-stack
|
||||||
values:
|
values:
|
||||||
grafana:
|
grafana:
|
||||||
|
admin:
|
||||||
|
existingSecret: admin-secret
|
||||||
|
userKey: admin-user
|
||||||
|
passwordKey: admin-password
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
hosts:
|
hosts:
|
||||||
- grafana.michaelthomson.dev
|
- grafana.michaelthomson.dev
|
||||||
path: /
|
path: /
|
||||||
tls:
|
tls:
|
||||||
- secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
- secretName: grafana-tls
|
||||||
hosts:
|
hosts:
|
||||||
- grafana.michaelthomson.dev
|
- grafana.michaelthomson.dev
|
||||||
prometheus:
|
prometheus:
|
||||||
|
prometheusSpec:
|
||||||
|
podMonitorSelectorNilUsesHelmValues: false
|
||||||
|
ruleSelectorNilUsesHelmValues: false
|
||||||
|
serviceMonitorSelectorNilUsesHelmValues: false
|
||||||
|
probeSelectorNilUsesHelmValues: false
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
hosts:
|
hosts:
|
||||||
- prometheus.michaelthomson.dev
|
- prometheus.michaelthomson.dev
|
||||||
path: /
|
path: /
|
||||||
tls:
|
tls:
|
||||||
- secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
- secretName: prometheus-tls
|
||||||
hosts:
|
hosts:
|
||||||
- prometheus.michaelthomson.dev
|
- prometheus.michaelthomson.dev
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: bazarr.michaelthomson.dev
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: bazarr.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -4,9 +4,9 @@ metadata:
|
|||||||
name: bazarr
|
name: bazarr
|
||||||
namespace: media
|
namespace: media
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
# traefik.ingress.kubernetes.io/router.middlewares: authentik-bazarr@kubernetescrd
|
|
||||||
spec:
|
spec:
|
||||||
rules:
|
rules:
|
||||||
- host: bazarr.michaelthomson.dev
|
- host: bazarr.michaelthomson.dev
|
||||||
@@ -22,4 +22,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- bazarr.michaelthomson.dev
|
- bazarr.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: bazarr-tls
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: jellyfin-config
|
|
||||||
namespace: media
|
|
||||||
data:
|
|
||||||
NVIDIA_VISIBLE_DEVICES: all
|
|
||||||
NVIDIA_DRIVER_CAPABILITIES: all
|
|
||||||
@@ -12,7 +12,6 @@ spec:
|
|||||||
labels:
|
labels:
|
||||||
app: jellyfin
|
app: jellyfin
|
||||||
spec:
|
spec:
|
||||||
runtimeClassName: nvidia
|
|
||||||
containers:
|
containers:
|
||||||
- name: jellyfin
|
- name: jellyfin
|
||||||
image: lscr.io/linuxserver/jellyfin:latest
|
image: lscr.io/linuxserver/jellyfin:latest
|
||||||
@@ -29,16 +28,12 @@ spec:
|
|||||||
- mountPath: /data/media
|
- mountPath: /data/media
|
||||||
name: data
|
name: data
|
||||||
subPath: media
|
subPath: media
|
||||||
# - name: dev-dri
|
- name: transcode
|
||||||
# mountPath: /dev/dri
|
mountPath: /transcode
|
||||||
env:
|
- name: cache
|
||||||
- name: NVIDIA_VISIBLE_DEVICES
|
mountPath: /cache
|
||||||
value: all
|
- name: dev-dri
|
||||||
- name: NVIDIA_DRIVER_CAPABILITIES
|
mountPath: /dev/dri
|
||||||
value: all
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
nvidia.com/gpu: 1
|
|
||||||
volumes:
|
volumes:
|
||||||
- name: config
|
- name: config
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
@@ -46,6 +41,13 @@ spec:
|
|||||||
- name: data
|
- name: data
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
claimName: media-data
|
claimName: media-data
|
||||||
# - name: dev-dri
|
- name: transcode
|
||||||
# hostPath:
|
emptyDir:
|
||||||
# path: /dev/dri
|
sizeLimit: 50Gi
|
||||||
|
- name: cache
|
||||||
|
emptyDir:
|
||||||
|
medium: Memory
|
||||||
|
sizeLimit: 2Gi
|
||||||
|
- name: dev-dri
|
||||||
|
hostPath:
|
||||||
|
path: /dev/dri
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: jellyfin.michaelthomson.dev
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: jellyfin.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- michaelthomson.ddns.net
|
|
||||||
providerSpecific:
|
|
||||||
- name: external-dns.alpha.kubernetes.io/cloudflare-proxied
|
|
||||||
value: "true"
|
|
||||||
@@ -4,6 +4,9 @@ metadata:
|
|||||||
name: jellyfin
|
name: jellyfin
|
||||||
namespace: media
|
namespace: media
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
spec:
|
spec:
|
||||||
@@ -21,4 +24,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- jellyfin.michaelthomson.dev
|
- jellyfin.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: jellyfin-tls
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: jellyseerr-config
|
|
||||||
namespace: media
|
|
||||||
data:
|
|
||||||
PUID: "1000"
|
|
||||||
PGID: "1000"
|
|
||||||
LOG_LEVEL: "debug"
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: jellyseerr
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: jellyseerr
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: jellyseerr
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: jellyseerr
|
|
||||||
image: fallenbagel/jellyseerr:latest
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: jellyseerr-config
|
|
||||||
optional: false
|
|
||||||
ports:
|
|
||||||
- containerPort: 5055
|
|
||||||
name: http
|
|
||||||
protocol: TCP
|
|
||||||
volumeMounts:
|
|
||||||
- name: config
|
|
||||||
mountPath: /app/config
|
|
||||||
volumes:
|
|
||||||
- name: config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: jellyseerr-config
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: jellyseerr.michaelthomson.dev
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: jellyseerr.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- michaelthomson.ddns.net
|
|
||||||
providerSpecific:
|
|
||||||
- name: external-dns.alpha.kubernetes.io/cloudflare-proxied
|
|
||||||
value: "true"
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: jellyseerr
|
|
||||||
namespace: media
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: jellyseerr.michaelthomson.dev
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- pathType: ImplementationSpecific
|
|
||||||
path: /
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: jellyseerr
|
|
||||||
port:
|
|
||||||
name: http
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- jellyseerr.michaelthomson.dev
|
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
|
||||||
36
apps/media/jellyseerr/release.yaml
Normal file
36
apps/media/jellyseerr/release.yaml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: seerr
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: seerr-chart
|
||||||
|
version: 3.x
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: seerr
|
||||||
|
interval: 15m
|
||||||
|
releaseName: seerr
|
||||||
|
values:
|
||||||
|
config:
|
||||||
|
persistence:
|
||||||
|
existingClaim: 'jellyseerr-config'
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
hosts:
|
||||||
|
- host: jellyseerr.michaelthomson.dev
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- jellyseerr.michaelthomson.dev
|
||||||
|
secretName: jellyseerr-tls
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
apiVersion: source.toolkit.fluxcd.io/v1
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
metadata:
|
metadata:
|
||||||
name: woodpecker
|
name: seerr
|
||||||
namespace: woodpecker
|
namespace: media
|
||||||
spec:
|
spec:
|
||||||
|
type: "oci"
|
||||||
interval: 15m
|
interval: 15m
|
||||||
url: https://woodpecker-ci.org/
|
url: oci://ghcr.io/seerr-team/seerr
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: jellyseerr
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: jellyseerr
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: http
|
|
||||||
name: http
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: prowlarr.michaelthomson.dev
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: prowlarr.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -4,9 +4,9 @@ metadata:
|
|||||||
name: prowlarr
|
name: prowlarr
|
||||||
namespace: media
|
namespace: media
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
# traefik.ingress.kubernetes.io/router.middlewares: authentik-prowlarr@kubernetescrd
|
|
||||||
spec:
|
spec:
|
||||||
rules:
|
rules:
|
||||||
- host: prowlarr.michaelthomson.dev
|
- host: prowlarr.michaelthomson.dev
|
||||||
@@ -22,4 +22,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- prowlarr.michaelthomson.dev
|
- prowlarr.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: prowlarr-tls
|
||||||
|
|||||||
@@ -1,69 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: qbittorrent
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: qbittorrent
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: qbittorrent
|
|
||||||
spec:
|
|
||||||
securityContext:
|
|
||||||
sysctls:
|
|
||||||
- name: net.ipv4.conf.all.src_valid_mark
|
|
||||||
value: "1"
|
|
||||||
containers:
|
|
||||||
- name: qbittorrent
|
|
||||||
image: lscr.io/linuxserver/qbittorrent:libtorrentv1
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: qbittorrent-config
|
|
||||||
optional: false
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
name: http
|
|
||||||
protocol: TCP
|
|
||||||
volumeMounts:
|
|
||||||
- name: qbittorrent-config
|
|
||||||
mountPath: /config
|
|
||||||
- name: data
|
|
||||||
mountPath: /data/downloads
|
|
||||||
subPath: downloads
|
|
||||||
- name: wireguard
|
|
||||||
image: lscr.io/linuxserver/wireguard:latest
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: wireguard-config
|
|
||||||
securityContext:
|
|
||||||
capabilities:
|
|
||||||
add:
|
|
||||||
- NET_ADMIN
|
|
||||||
volumeMounts:
|
|
||||||
- name: wireguard-config-secret
|
|
||||||
mountPath: /config/wg_confs
|
|
||||||
- name: wireguard-config
|
|
||||||
mountPath: /config
|
|
||||||
- name: natpmp-script
|
|
||||||
mountPath: /custom-services.d/natpmp.sh
|
|
||||||
subPath: natpmp.sh
|
|
||||||
readOnly: true
|
|
||||||
volumes:
|
|
||||||
- name: qbittorrent-config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: qbittorrent-config
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: media-data
|
|
||||||
- name: wireguard-config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: wireguard-config
|
|
||||||
- name: wireguard-config-secret
|
|
||||||
secret:
|
|
||||||
secretName: wireguard-config-secret
|
|
||||||
- name: natpmp-script
|
|
||||||
configMap:
|
|
||||||
name: natpmp-script
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: qbittorrent.michaelthomson.dev
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: qbittorrent.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: qbittorrent
|
|
||||||
namespace: media
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: qbittorrent.michaelthomson.dev
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- pathType: ImplementationSpecific
|
|
||||||
path: /
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: qbittorrent
|
|
||||||
port:
|
|
||||||
name: http
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- qbittorrent.michaelthomson.dev
|
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
data:
|
|
||||||
natpmp.sh: |
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
date
|
|
||||||
|
|
||||||
natpmpc -a 1 0 udp 60 -g 10.2.0.1 && natpmpc -a 1 0 tcp 60 -g 10.2.0.1 > /tmp/natpmpc_output || {
|
|
||||||
echo -e "ERROR with natpmpc command \a"
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
port=$(grep 'TCP' /tmp/natpmpc_output | grep -o 'Mapped public port [0-9]*' | awk '{print $4}')
|
|
||||||
currentPort=$(curl -XGET 'http://127.0.0.1:8080/api/v2/app/preferences' | jq '.listen_port')
|
|
||||||
|
|
||||||
echo "Opened port: $port"
|
|
||||||
echo "Current port: $currentPort"
|
|
||||||
if [ "$currentPort" != "$port" ]; then
|
|
||||||
echo "Current port is different. Changing from $currentPort to $port"
|
|
||||||
code=$(curl --write-out '%{http_code}' --silent --output /dev/null -XPOST -d "json={\"listen_port\":$port}" "http://127.0.0.1:8080/api/v2/app/setPreferences")
|
|
||||||
|
|
||||||
if [ "$code" != "200" ]; then
|
|
||||||
echo "ERROR: port change failed with status code $code"
|
|
||||||
else
|
|
||||||
echo "Port changed to $port successfully"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
sleep 45
|
|
||||||
done
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: natpmp-script
|
|
||||||
namespace: media
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: qbittorrent-config
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 1Gi
|
|
||||||
storageClassName: longhorn
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: wireguard-config
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 1Gi
|
|
||||||
storageClassName: longhorn
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: qbittorrent-config
|
|
||||||
namespace: media
|
|
||||||
data:
|
|
||||||
PUID: "1000"
|
|
||||||
PGID: "1000"
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: qbittorrent
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: qbittorrent
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: http
|
|
||||||
name: http
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"kind": "SealedSecret",
|
|
||||||
"apiVersion": "bitnami.com/v1alpha1",
|
|
||||||
"metadata": {
|
|
||||||
"name": "wireguard-config-secret",
|
|
||||||
"namespace": "media",
|
|
||||||
"creationTimestamp": null
|
|
||||||
},
|
|
||||||
"spec": {
|
|
||||||
"template": {
|
|
||||||
"metadata": {
|
|
||||||
"name": "wireguard-config-secret",
|
|
||||||
"namespace": "media",
|
|
||||||
"creationTimestamp": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"encryptedData": {
|
|
||||||
"wg0.conf": "AgClUxLYCyjV/nHiKlwxkOiGXNIRFe8hRi/6uRJZsyXf5PcUe2bh8ubCPEg+7wmF5r/ZDMbfQnJHwzHFu4fSdSXNbJELMVO4kjyFPsH3f5N2iSBzxBaEeARGHd4ijOsOJvevpw5UW+R+aWnGpY+L09Rcbla5Ak/xRgTfCLaHn+AFC7G5FigvxLLXuJZRYPWvrUSK2P3ZQLc4xGjRHD3xDCrb5gjrzdt3ZqyaMqpufdQRaMnsqY1BqHzqHR11l5MhwK7jb/Ge+aNgRckheKqwlCL2aebSciFzdzr0Ve4oJN0neNiK7P8r0BjRSnHfeyhzmed8DwcTej1xJFt/mX+h8XrUS0i7ioPaUc/t159bPdjZuXdGFPtTGg66nUzKeLm1DOyB+sn80d5M9X4rDe5Poyyff56XxtLd1XCDuuPL9YZDTuETupaLm+57hsnHYIoCe7rmTg0pH5iZzO3p+pwplZMIB/VCDKM1HW6b91Yn1CqGOHfNM3qrrxgppz97G1568cDII+W5F5MZXPCb8ENZGzjm6FVDrHrLiYqAP+j6lTNN0WqNclnsLlcyckzXNpickdMeDRU/rnzNrpT1VDRgaCuU2vnZ91bh9ZcUBfm0aWcNl9wves8FHH+yt4YzKLVXG8Sm4sYRkeqEmrMUwrXbcG0l+b0tunT2QOZHNf5lUgHPjoyfp8ynpFrEsrZF9FH7/tB2Z6whbjYo1LDGunQ0aBCqfx2n4xNAb9urfh/fTxjT28PCGzYp9snCtmfGPcvCtkBy9cJeDiX4AE9PZsFTUzRjZUqRqKg+6QK4fZHkxYzpuzgH3cAsgG97RIcllNLA4fhN66SIAXjSrfVg8XYwXgHeyoRpcwhJ7WhiOaFSCccbXxEUVgzJ7O8KpCpbQlaYWbXbtpptAkBbNzPJ9kF+baOgD6SxbgFdc9V+oSM8sX/FubfK8Spm9fqu0slQaygvZX1ote67WWNK2uy8W82hymYS96g2FWghFnSbYEgrDUO8ASF4zhtPWyTWr45+Ba4WfQ3hZApTW5jJczjAn7w95ySt4gHFRxVmvbV8topVz8jO2V8t//OuRaQMpBLYjQVSGo60vuWIxFcgKqb2UxXiEqRWxhDWkjHx9RX9pCR9St0p6u/WL8Iwemq5a7RIedHQkuKmorOP100zCp4njsuRfN+kodtk0PjtZNJaVdbAVn9TYyY="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: wireguard-config
|
|
||||||
namespace: media
|
|
||||||
data:
|
|
||||||
PUID: "1000"
|
|
||||||
GUID: "1000"
|
|
||||||
TZ: America/Toronto
|
|
||||||
DOCKER_MODS: linuxserver/mods:universal-package-install
|
|
||||||
INSTALL_PACKAGES: libnatpmp|jq
|
|
||||||
# DOCKER_MODS: ghcr.io/fusetim/external_natpmp_qbittorrent:ecf567b21e5f079762e36c9cee9afaf86fcb22be
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: radarr.michaelthomson.dev
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: radarr.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -4,9 +4,9 @@ metadata:
|
|||||||
name: radarr
|
name: radarr
|
||||||
namespace: media
|
namespace: media
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
# traefik.ingress.kubernetes.io/router.middlewares: authentik-radarr@kubernetescrd
|
|
||||||
spec:
|
spec:
|
||||||
rules:
|
rules:
|
||||||
- host: radarr.michaelthomson.dev
|
- host: radarr.michaelthomson.dev
|
||||||
@@ -22,4 +22,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- radarr.michaelthomson.dev
|
- radarr.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: radarr-tls
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: readarr-config
|
|
||||||
namespace: media
|
|
||||||
data:
|
|
||||||
PUID: "1000"
|
|
||||||
PGID: "1000"
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: readarr
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: readarr
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: readarr
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: readarr
|
|
||||||
image: lscr.io/linuxserver/readarr:nightly
|
|
||||||
imagePullPolicy: Always
|
|
||||||
envFrom:
|
|
||||||
- configMapRef:
|
|
||||||
name: readarr-config
|
|
||||||
optional: false
|
|
||||||
ports:
|
|
||||||
- containerPort: 8787
|
|
||||||
name: http
|
|
||||||
protocol: TCP
|
|
||||||
volumeMounts:
|
|
||||||
- name: config
|
|
||||||
mountPath: /config
|
|
||||||
- mountPath: /data
|
|
||||||
name: data
|
|
||||||
volumes:
|
|
||||||
- name: config
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: readarr-config
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: media-data
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: readarr.michaelthomson.dev
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: readarr.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: readarr
|
|
||||||
namespace: media
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: readarr.michaelthomson.dev
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- pathType: ImplementationSpecific
|
|
||||||
path: /
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: readarr
|
|
||||||
port:
|
|
||||||
name: http
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- readarr.michaelthomson.dev
|
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: sabnzbd.michaelthomson.dev
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: sabnzbd.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -4,6 +4,7 @@ metadata:
|
|||||||
name: sabnzbd
|
name: sabnzbd
|
||||||
namespace: media
|
namespace: media
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
spec:
|
spec:
|
||||||
@@ -21,4 +22,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- sabnzbd.michaelthomson.dev
|
- sabnzbd.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: sabnzbd-tls
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: sonarr.michaelthomson.dev
|
|
||||||
namespace: media
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: sonarr.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -4,9 +4,9 @@ metadata:
|
|||||||
name: sonarr
|
name: sonarr
|
||||||
namespace: media
|
namespace: media
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
# traefik.ingress.kubernetes.io/router.middlewares: authentik-sonarr@kubernetescrd
|
|
||||||
spec:
|
spec:
|
||||||
rules:
|
rules:
|
||||||
- host: sonarr.michaelthomson.dev
|
- host: sonarr.michaelthomson.dev
|
||||||
@@ -22,4 +22,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- sonarr.michaelthomson.dev
|
- sonarr.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: sonarr-tls
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: michaelthomson.dev
|
|
||||||
namespace: michaelthomson
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- michaelthomson.ddns.net
|
|
||||||
providerSpecific:
|
|
||||||
- name: external-dns.alpha.kubernetes.io/cloudflare-proxied
|
|
||||||
value: "true"
|
|
||||||
@@ -4,6 +4,9 @@ metadata:
|
|||||||
name: michaelthomson.dev
|
name: michaelthomson.dev
|
||||||
namespace: michaelthomson
|
namespace: michaelthomson
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
spec:
|
spec:
|
||||||
@@ -21,4 +24,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- michaelthomson.dev
|
- michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: michaelthomson-tls
|
||||||
|
|||||||
50
apps/minecraft/release.yaml
Normal file
50
apps/minecraft/release.yaml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: minecraft
|
||||||
|
namespace: minecraft
|
||||||
|
spec:
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: minecraft
|
||||||
|
version: 5.x
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: minecraft
|
||||||
|
interval: 15m
|
||||||
|
releaseName: minecraft
|
||||||
|
values:
|
||||||
|
serviceAnnotations:
|
||||||
|
metallb.io/loadBalancerIPs: 192.168.18.201
|
||||||
|
|
||||||
|
minecraftServer:
|
||||||
|
# This must be overridden, since we can't accept this for the user.
|
||||||
|
eula: true
|
||||||
|
# One of: LATEST, SNAPSHOT, or a specific version (ie: "1.7.9").
|
||||||
|
version: "LATEST"
|
||||||
|
## The type of Minecraft server to run, check for related settings below
|
||||||
|
## Common types: "VANILLA", "FABRIC", "FORGE", "SPIGOT", "BUKKIT", "PAPER",
|
||||||
|
## "FTBA", "SPONGEVANILLA", "AUTO_CURSEFORGE"
|
||||||
|
## ref: https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms
|
||||||
|
type: "VANILLA"
|
||||||
|
# One of: peaceful, easy, normal, and hard
|
||||||
|
difficulty: normal
|
||||||
|
# A comma-separated list of player names to whitelist.
|
||||||
|
whitelist: DrDeww,lolobinbolo
|
||||||
|
# A comma-separated list of player names who should be admins.
|
||||||
|
ops: DrDeww
|
||||||
|
# A server icon URL for server listings. Auto-scaled and transcoded.
|
||||||
|
icon:
|
||||||
|
# Message of the Day
|
||||||
|
motd: "Welcome to Michael's Minecraft Server"
|
||||||
|
worldSaveName: world
|
||||||
|
# If you adjust this, you may need to adjust resources.requests above to match.
|
||||||
|
memory: 1024M
|
||||||
|
serviceType: LoadBalancer
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
dataDir:
|
||||||
|
enabled: true
|
||||||
|
Size: 8Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
9
apps/minecraft/repository.yaml
Normal file
9
apps/minecraft/repository.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
|
kind: HelmRepository
|
||||||
|
metadata:
|
||||||
|
name: minecraft
|
||||||
|
namespace: minecraft
|
||||||
|
spec:
|
||||||
|
interval: 15m
|
||||||
|
url: https://itzg.github.io/minecraft-server-charts/
|
||||||
|
|
||||||
@@ -1,16 +1,23 @@
|
|||||||
---
|
apiVersion: v1
|
||||||
apiVersion: bitnami.com/v1alpha1
|
data:
|
||||||
kind: SealedSecret
|
password: ENC[AES256_GCM,data:jFpz9bSZvldMHrXZWPEFLCZk+WU=,iv:Gr01uTyy1LLodCrr+e+QPCaosA0ad9qg+51vxQKu7nM=,tag:mQC7HYeycSdnVi8QXKgqhA==,type:str]
|
||||||
|
username: ENC[AES256_GCM,data:ODJU7cK+lrQ=,iv:biwQxLX4xjZMVWF2phEuOrR0s+oWoiTw6at1YlLIdGU=,tag:oA3/NPM/tFJBfclJDJUP6A==,type:str]
|
||||||
|
kind: Secret
|
||||||
metadata:
|
metadata:
|
||||||
creationTimestamp: null
|
|
||||||
name: collabora-secret
|
|
||||||
namespace: nextcloud
|
|
||||||
spec:
|
|
||||||
encryptedData:
|
|
||||||
password: AgBgaJPlIiKl7lAZDAF50rM+BQdpb+wH8W19Eu5nh6U7G8kxI5s1FsSlBVUQKuBwcPQQT1WUOI2G3JgMNuuqvQ8afPsikL2f+YUo7iuLAaopToY8bHQK4WCjEtDy3U1w3p8hVLsJzFiV8+2Inot4N5GtQCFkHoeqnUgOpYOrbqtx6ZFJNZDt9xxi1szfdk7rjAzaiOLUwfzggtkralYGKdFQMd3V5xlMm126UNjA9PH65NWKOshlA07gsyc+iyk2/ICcO85Q5N1Q+zlui3kYRc2Y8uPLkKM4XV+ms9X27w10dsiRkjShU93sNQtGEYJSKCwLS/BQecQyej9JH/Lj4sy2fSXjKWMgbHp3Nmck7cHTUnrs/CKG/Isl2B2dnKB0zgHlXScCxgVw9KR0xxjcoOXTLO8nap9H/uOOu8cwCoBAWHkl5YNxgnK/UCEd1oenbabE8QqSX3RKp3Cp+ewWIHf3VhC/XI9LZrv/6rRLveZRUMBHQPVCI7okCAujfUKwYIPA2bNFrMypqiwhSyve8WwvtiXS6BPXEef2q/gKOy8s0WgFvSwGBYF4xwI88ZjaFdEuKgb05pVFRMLHLBz43rfDcRnZI5y6721dxSfg//UV4ugbmljfqD4E6aShSY2Y01Mh0icddpMNn66wDYlEzwfI5kx7TG2XJAwtRZLcSiTtCZUiuEdCQEbG+1MAUH+lmZV5Mha18ARqMA1XYrfT
|
|
||||||
username: AgBx59yYqCazJM1iApbasAi8piOxEaiRMOEoqEf5gStXDLlZHayb48jp4MqTm0cGRok0+R9iHRO9JnW68mRexu+uQaPgOZWTVFTmtzkgMqiRAio79ivCDxZfK+s507J4LzAOzjLs1rtMSHoqA6YJw/vz30oQrsthtBrLnj0CGvcLqCjKbIOE75IypJBBXCyLts6Ndh4NXTch3eyr40qHo3ABZ5zSCOpives3AUo6gI+tr4zVLQXYEt3hsahcaQtm3um4PozgJlC4zIsfpGq111issXo3SCT7Ag2zn/8HO2D3olss36HzQMgVzs+hAC89wRX7CvV3q84/jrZSJ4Ymc163e7JWnbZz7d9npxcr0dXCPiJQXqJ2uIW6ByKupGxpVxGisUnG8UJv1Cj0xd8+nGXpxMsNm2VgdVPsqxct47XEyl/K1/6Tdc4IlNEcNIjASrI8+QOF3ceaP/3tx+lGVB+fGh3OJ8mTaJlEd5vXPum5LB71SiVHyxXP8VHUGka+Kth3H3wq8CT2Bu9sPrZ8FVng6ars8qd0pZt7pd6LoHLFiJ4FEt60LXX3fbzizG1vdHoth3hIiHF2wXQahh+FHT2HYXvVZpHPydajZzE3sDE4sJXAW/VDKg2y4ZobC+jp4uPIQxuZmSCkbt90W+9FiifsccB3mgWe/PK9NxS7RW1hjwv7U1jPFQW3i7EeiEzRwsAfJJ8chg==
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: collabora-secret
|
name: collabora-secret
|
||||||
namespace: nextcloud
|
namespace: nextcloud
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFdm9XakdSZFF3ZWhsaktu
|
||||||
|
Tm9aWU45ekhQeTdEc2FXbmVZZ2FYa3hrTWowCnkrM1hxSkNkTTFuVlh1NEZDbHBp
|
||||||
|
cWppL1lCMlpaZ3I3ZHVmRS9kQkwxM2MKLS0tIGF2bFh3SzJ3azVpWlhHOUo1Zzhp
|
||||||
|
QVhKelUvY1hiR2FiR004YnQzMEFIN1EKa1JN+ra3csHPICDfyOS/DtE6SyRrGveW
|
||||||
|
9KigyHoAzOAjvr7Cjzirl9J7tgA9iasfbVE4mfcuqwJGR14ANJ7OPw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-12-17T20:36:08Z"
|
||||||
|
mac: ENC[AES256_GCM,data:sFjlG7K93WOS4QZXV/bcdVC2YwcCzzZ2lS6vtsR6v6SK0Lmw2neR5rc5SF6IESrUU4G3M/Y4VFTmb8Zttk0Tlk2nRlqXo35MIN6S+KTL/ssiCHSN4+J20Yp7HeQ+3DkLLY5+RiYAhrfzy/yUVRPWeAF3KKGwwfjknCR+avtLL44=,iv:QmesKHhkXUAD+lFS/ijYmsNVF8FFnmxiHk7IDJF5kmk=,tag:K4COX2z99gGuO2PBKUz7Zw==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.11.0
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: collabora.michaelthomson.dev
|
|
||||||
namespace: nextcloud
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: collabora.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- michaelthomson.ddns.net
|
|
||||||
providerSpecific:
|
|
||||||
- name: external-dns.alpha.kubernetes.io/cloudflare-proxied
|
|
||||||
value: "true"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: nextcloud.michaelthomson.dev
|
|
||||||
namespace: nextcloud
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: nextcloud.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- michaelthomson.ddns.net
|
|
||||||
providerSpecific:
|
|
||||||
- name: external-dns.alpha.kubernetes.io/cloudflare-proxied
|
|
||||||
value: "true"
|
|
||||||
@@ -1,21 +1,22 @@
|
|||||||
{
|
apiVersion: v1
|
||||||
"kind": "SealedSecret",
|
data:
|
||||||
"apiVersion": "bitnami.com/v1alpha1",
|
password: ENC[AES256_GCM,data:sczdgF2gOu+NkUmPPS3ipwRPSkgsL69QwA4zUFGV70GRTpC+,iv:0sA/fN7M4Gg7FuOAH/+j8PhY26wT94UNCfbdJ36JKg0=,tag:V3G9nSJOtVh0yzNZkX3Uzg==,type:str]
|
||||||
"metadata": {
|
kind: Secret
|
||||||
"name": "nextcloud-redis-secret",
|
metadata:
|
||||||
"namespace": "nextcloud",
|
name: nextcloud-redis-secret
|
||||||
"creationTimestamp": null
|
namespace: nextcloud
|
||||||
},
|
sops:
|
||||||
"spec": {
|
age:
|
||||||
"template": {
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
"metadata": {
|
enc: |
|
||||||
"name": "nextcloud-redis-secret",
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
"namespace": "nextcloud",
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1aDEzNEFlUUNIekRib1hv
|
||||||
"creationTimestamp": null
|
NGZITHZMTjhlWlQ3MHk1djlUVk1GeFRVRzBNCm12bWhPaHk2REo1RCtZUDhnLzF3
|
||||||
}
|
SXFOMzlVaDdyZk9FQVhiZmV3ZEo3RlkKLS0tIHVrZGZ4cFp2SkVubCtxUWQ1aXBw
|
||||||
},
|
Y095N2YrRTZBdFBlOWlPYXpWS0R3dk0KTUGr2gfHK5NszjDWSJObcGNdvjiBQ0lt
|
||||||
"encryptedData": {
|
ujeskIYbKzRoY8cCRxiGc17SFTYnp+2q0hBm8V9H+ywI74Chc1gOgA==
|
||||||
"password": "AgBKouCi+6E0aBUR1n/j8mvq5PUJb42wuR3q4JWLDgLYf+3MzVRUYPHh6bkN/aYtVpmRNOC8w9SjnJ3FTOwrgt4xsBP6faNcRoRPN1VjxQk68oWlExIIbZWkEAeyn2L0lwSkPV8aTfaEIFhBPPj2NaHyGJQ0uDWPc68ZVpmukuxkTuhQ3hm/8JDDTOe216Dc8FUpsEwr7AN0s+ZdDHFdi+opIjYs39cg4QyQ+YrIqRBK6oS1TrKtPJSmQEKPIOXyRqY7TxTc9t8NGLE3WKY26SSNFB9AHYaqhZFn3MDHg350g0KdXgxycxVuOLnxGnW+aEmQC58QCwxvZUcR+oapzDnJ8QnHv3vbtCdICBjSEF+Lq9vGYBMhqlI9zJ9SLj7WmG21rxxLFAscHPU7yzcowcWgGLpjndkmTvO//wXXPXcgYzJiIrBrxHiFRhwyNsTrEYI4+8CX8KHtcYYL+p/GUVJQ3YQSZc1IlzXnhutsniZb7jSOyrBIzvObhc+0pvOWh4GzBHX0rUUaU1PdvxUITNzVwZOrLLiKUxlPXqgOMijFcHlmxiWTD2U291NqKCdKDbnMKNKjWR9EgOR7GM6/OMWzAIaAlULw69DMnDZsoEQHkJbuQmmABQJE2HinY7Kt6EFKX3KueCN8gHIA1rpKEbahsl9cwnKIkLVSif0HkOibifV28MUhtVNLON5qjE7hvitEyOZoQgxXTw76gMMSBufjiWLUuDyl7ada"
|
-----END AGE ENCRYPTED FILE-----
|
||||||
}
|
lastmodified: "2025-12-17T20:36:08Z"
|
||||||
}
|
mac: ENC[AES256_GCM,data:wISm9FeJ4cyF0I+QAMjte3/nwzwtk8c5VQltYzPlcsqUqOjLkmD6iLqtaOteZ3pZQOf9AylRTGaoow1kZ44X5dk/fx6Sy/JrQuhuc2JK7llgBqITp3S/sRK1Dtvb4r0y8x6iiKs8+sd/PA9TUqekPtmrC4dVcHKGzd1bX0DopU8=,iv:2bmJIOt1JUUk2TJbcQIg6/FwpvLpYTwpzKaSd39Lo9c=,tag:FbURmraQwP2NaB8CEVArww==,type:str]
|
||||||
}
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.11.0
|
||||||
|
|||||||
@@ -1,16 +1,23 @@
|
|||||||
---
|
apiVersion: v1
|
||||||
apiVersion: bitnami.com/v1alpha1
|
data:
|
||||||
kind: SealedSecret
|
password: ENC[AES256_GCM,data:+gp5N+elMS/vn3N6u8z7+/IDVl6w3VDnE6UrIsRMak3f1qag,iv:TY+iRf28IvZzpc3wJtIVkflgzuSyQxpucUttce71iTo=,tag:A/LsCq31oVsjINhi2BH7Cw==,type:str]
|
||||||
|
username: ENC[AES256_GCM,data:LFfYK587FmlJy8Gl,iv:CtTz38aswJ87iWp8GslxFH6PMS9ZJ7puGprrURhidSE=,tag:5vSMUAyjjxpbHlx1/2h9IA==,type:str]
|
||||||
|
kind: Secret
|
||||||
metadata:
|
metadata:
|
||||||
creationTimestamp: null
|
|
||||||
name: postgres-secret
|
|
||||||
namespace: nextcloud
|
|
||||||
spec:
|
|
||||||
encryptedData:
|
|
||||||
password: AgAx4sGDsXEHDTu0lTvW0E9KFgouJKiQvP8eIeUq7lkrNMDJ1+3KW98yiZ8PFeSSlcOqmW8M8K13pOvGXvmkYKHA2uV0FCO3UwAVxxmllMZytDM4FYxXhGCWUV3XC7fuIUkFGLF8BgGyNNZkZmDfmrEczfqmAjIze3WlQrWpqBkp4tGtgLpqZaKpmyTvnEtkH5WUwbg/uupmwqUV8cNCmzczfEEhtWHq45w6Zov6kaYNXimVgKJCHCGGcrskE2MbdpYnJ2Me8Bs6HpjV6tlDVLMoaxlr/sc1sN7XyNQBjiApjT0S8iPhaUdEsTgFZa36X3ReWoZvBVoge6kyT7GKC0DzzVShLD/BJ5zdWMt31K+J+7jFuLpLeFlSHoMNpkhlb3J28GI/RGYvdPWkQT0kXkIvmXt/l9XoFvKKKwhe6UQ7ULGBN9cWTySoqr9/9G0eYqxZ9WQ2h9WjuOiZd14J2opjGzfIJB20YMMBLoJ+QCZINvRRS8rKBw7hrDK6hDP3mIocLz66OnNWhptLZjDxfAYg0FQE2CwYkgdFaGdkX33AcYmTtNPP1qYw/MQkUfEE7MMR5/ABtXDBQQrnK54KAa1EEZ94C2JElceQBeFajNWIllFpl/S3QiIFr8OrOtzN4hPkGfNi5TQ1hRNNxKCOMimxhS3c8+tvvLEZDI8w0gFxO++WITC75mPTbwlTzYkovskKGvectx3rm+V4ideHOeiDow2OmNE2GEka
|
|
||||||
username: AgAcnwH13ZVW+QfveKCC4uRwjXmq0KWSdQrdNezse+w/h8rYReFbhG+3JV2Q0jkovU2jdVY8hQGTQsXLH824KeMYJN2d3MJhsN9GuTmskqp6ALyRhsneQyTyzgscb8lQQrUsQQ3kZmhtr+FWJBgyqRZtYUKihU7NEHN6HZ0XBKbQ0Mu7uq5K2mu9emhYHf0AkiAzVmMIMWt1xvOefkyH2mojHXgglo4MHzglkxxS/8jy9pTXfhr2dGRwyViS4HyVTEAD+Z1VaLX3uhghrEWGKnEyGcZF8Nto3FJXwEtCJH0KPFpSnPmu3jsq4EkQ94abAVe0/tT1lEAilYFlZL7SkDd28QD6dkBZCxqNukW8mst7xf9CsvLaJ+SkZsSnT0J6hQ/Gl8GbcrIYazxTaVutZ37h2io+tcQ8rWLF3U9/1fStpPr2Z/rEUdDgw/urYGCYwsQZAb9Ta1tG/5YjXrJUGQlKpntECtiLEMBQvbzgGqhYvnPlVoUneeVCEzx1dWci7jPWZ94cjZTYubi3Q5Wm5jeaeST34FLn+s56zVfDJ7CttN9Rv/lytkhYd7Tmv2ILpf9eyDePK0+WSrdaDF2W7NjAeEpQbt/+2WpCxc+KoHPZ7HA2DO3922gCrbaKoQ7bcais39+q9qrGvVSdUlNkLdpqQ6lycwbtqIgov9OludiOMhetGig6OO3TNkagNxgup5rj/B0RKXgyRjY=
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: postgres-secret
|
name: postgres-secret
|
||||||
namespace: nextcloud
|
namespace: nextcloud
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRemtSSkl2K01QSUlSbDha
|
||||||
|
dEdsa0JEWVZUeEtYSXM1OXRDQ3R1U01Zd0RNCnFKOWJRTElZRWxvdW94ZWRvUmNY
|
||||||
|
Y1IxM216MUhLWjhKcFJJSE1YQjlTTlUKLS0tIExFSDdnVWZEZG43VFJwUGVPT1Bu
|
||||||
|
ZWljcWVZcXpOUjJnOStvbmgwVHRsT28KMF4lDFhHbI+yqXDhiIuDe2NeuhPaReS9
|
||||||
|
Z6wiLrOWcXfbNN6DnLSBNAt0IqQzIYWHAlZayGPqA+JJCS/gkZnA1Q==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-12-17T20:36:08Z"
|
||||||
|
mac: ENC[AES256_GCM,data:TTAiIjKHCnA+mQ1fM0J3TEdqZkTRZKSHjRI4SsaiUut+uwWxN3nxUUlcBpyo3m62ff9WkyYvGtxfLsOXevrshN8WFB2H49NYA6TjyQgAzJ1XFeJZhFfSLM1nd/46a5KU/6mSBN9ZqUmnhXmBNo7wZdDKSJUlZ8tFwTtwDJve2o4=,iv:2idsk3hZOOWKGVZ+4Z9C82/+lF/tjokm3uBPMsE+WEw=,tag:UxQ6XtP9+iNaAn++IDYaHQ==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.11.0
|
||||||
|
|||||||
@@ -7,12 +7,11 @@ spec:
|
|||||||
chart:
|
chart:
|
||||||
spec:
|
spec:
|
||||||
chart: nextcloud
|
chart: nextcloud
|
||||||
version: 6.x
|
version: 8.x
|
||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: nextcloud
|
name: nextcloud
|
||||||
interval: 15m
|
interval: 15m
|
||||||
timeout: 5m
|
|
||||||
releaseName: nextcloud
|
releaseName: nextcloud
|
||||||
values:
|
values:
|
||||||
image:
|
image:
|
||||||
@@ -22,12 +21,15 @@ spec:
|
|||||||
enabled: true
|
enabled: true
|
||||||
className: traefik
|
className: traefik
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- nextcloud.michaelthomson.dev
|
- nextcloud.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: nextclout-tls
|
||||||
labels: {}
|
labels: {}
|
||||||
path: /
|
path: /
|
||||||
pathType: Prefix
|
pathType: Prefix
|
||||||
@@ -90,6 +92,8 @@ spec:
|
|||||||
|
|
||||||
postgresql:
|
postgresql:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
image:
|
||||||
|
tag: 16.6.0
|
||||||
global:
|
global:
|
||||||
postgresql:
|
postgresql:
|
||||||
auth:
|
auth:
|
||||||
@@ -125,8 +129,8 @@ spec:
|
|||||||
collabora:
|
collabora:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
image:
|
# image:
|
||||||
tag: 24.04.11.1.1
|
# tag: 24.04.11.1.1
|
||||||
|
|
||||||
collabora:
|
collabora:
|
||||||
extra_params: --o:ssl.enable=false --o:ssl.termination=true
|
extra_params: --o:ssl.enable=false --o:ssl.termination=true
|
||||||
@@ -148,6 +152,9 @@ spec:
|
|||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
hosts:
|
hosts:
|
||||||
@@ -158,7 +165,7 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- collabora.michaelthomson.dev
|
- collabora.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: collabora-tls
|
||||||
|
|
||||||
cronjob:
|
cronjob:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
47
apps/ntfy/deployment.yaml
Normal file
47
apps/ntfy/deployment.yaml
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: ntfy
|
||||||
|
namespace: ntfy
|
||||||
|
labels:
|
||||||
|
app: ntfy
|
||||||
|
spec:
|
||||||
|
revisionHistoryLimit: 1
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: ntfy
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ntfy
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: ntfy
|
||||||
|
image: binwiederhier/ntfy:v1.28.0
|
||||||
|
args: ["serve"]
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: America/Toronto
|
||||||
|
- name: NTFY_DEBUG
|
||||||
|
value: "false"
|
||||||
|
- name: NTFY_LOG_LEVEL
|
||||||
|
value: INFO
|
||||||
|
- name: NTFY_BASE_URL
|
||||||
|
value: https://ntfy.michaelthomson.dev
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
name: http
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/ntfy
|
||||||
|
subPath: server.yml
|
||||||
|
name: config-volume
|
||||||
|
- mountPath: /var/cache/ntfy
|
||||||
|
name: cache-volume
|
||||||
|
volumes:
|
||||||
|
- name: config-volume
|
||||||
|
configMap:
|
||||||
|
name: server-config
|
||||||
|
- name: cache-volume
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: pvc
|
||||||
27
apps/ntfy/ingress.yaml
Normal file
27
apps/ntfy/ingress.yaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: ntfy
|
||||||
|
namespace: ntfy
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
external-dns.alpha.kubernetes.io/target: michaelthomson.ddns.net
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "true"
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: ntfy.michaelthomson.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: Prefix
|
||||||
|
path: /
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: service
|
||||||
|
port:
|
||||||
|
name: http
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- ntfy.michaelthomson.dev
|
||||||
|
secretName: ntfy-tls
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: readarr-config
|
name: pvc
|
||||||
namespace: media
|
namespace: ntfy
|
||||||
spec:
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
storageClassName: longhorn
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 1Gi
|
storage: 1Gi
|
||||||
storageClassName: longhorn
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
9
apps/ntfy/server-config.yaml
Normal file
9
apps/ntfy/server-config.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: server-config
|
||||||
|
namespace: ntfy
|
||||||
|
data:
|
||||||
|
server.yml: |
|
||||||
|
cache-file: "/var/cache/ntfy/cache.db"
|
||||||
|
attachment-cache-dir: "/var/cache/ntfy/attachments"
|
||||||
14
apps/ntfy/service.yaml
Normal file
14
apps/ntfy/service.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: service
|
||||||
|
namespace: ntfy
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: ntfy
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: http
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: pihole.michaelthomson.dev
|
|
||||||
namespace: pihole
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: pihole.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -12,15 +12,14 @@ spec:
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: mojo2600
|
name: mojo2600
|
||||||
interval: 15m
|
interval: 15m
|
||||||
timeout: 5m
|
|
||||||
releaseName: pihole
|
releaseName: pihole
|
||||||
values:
|
values:
|
||||||
# -- Configuration for the DNS service on port 53
|
# -- Configuration for the DNS service on port 53
|
||||||
serviceDns:
|
serviceDns:
|
||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
annotations:
|
annotations:
|
||||||
metallb.universe.tf/loadBalancerIPs: 192.168.2.250
|
metallb.io/loadBalancerIPs: 192.168.18.250
|
||||||
metallb.universe.tf/allow-shared-ip: pihole-svc
|
metallb.io/allow-shared-ip: pihole-svc
|
||||||
|
|
||||||
# -- Configuration for the Ingress
|
# -- Configuration for the Ingress
|
||||||
ingress:
|
ingress:
|
||||||
@@ -32,6 +31,7 @@ spec:
|
|||||||
|
|
||||||
# -- Annotations for the ingress
|
# -- Annotations for the ingress
|
||||||
annotations:
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
path: /
|
path: /
|
||||||
@@ -40,7 +40,7 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- pihole.michaelthomson.dev
|
- pihole.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: pihole-tls
|
||||||
|
|
||||||
# -- `spec.PersitentVolumeClaim` configuration
|
# -- `spec.PersitentVolumeClaim` configuration
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: bitnami.com/v1alpha1
|
|
||||||
kind: SealedSecret
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: app-env-secret
|
|
||||||
namespace: plane
|
|
||||||
spec:
|
|
||||||
encryptedData:
|
|
||||||
AMQP_URL: AgANW8fBhKFULBZBkzkNkwC/W55A07cyr6v31ol8JA5mJXUggjWpzHinqe8xM8KFnQH8l+GDBLWmIhIXxyuwnYh+44LcPag/LT8DqaUDE1eIrkq+PRU6YgmKyyG9GqAcPZxLNZ2lFGEqqcQR48y6TKEpyWIXtdUeRo/jQAYk/RXpxl2P11jFn1JcPy7xRLg9k+9rw/YzPpbCLwlMK8ga01PRr1jmah3m41MN090kqZVuEUq3Opgvs8xh30G/8dlMSF8RioZxzCvRcvsmTyWw+5Mw3HTxAe6eTdnNn5cGOh/fF6V0+flezUgijoPyQQ/zxVPJxU23U3xEjPSBQn99gbjNU+xk3oJQGoK0g9CRtzns7wHPcvw50+TVZFjvIDMmZb4I9NNsjZkRzMCKI7YBCz6heDn45lDPKciHFeXTryecu/JyWoIllnbqfADdYbhhkaVWpgO2/1+Q0A5xUdBPolotpO7ckXT8HCYro6gdIBICF5L4hEJXnowAziSGnnS8S+n4/vFsy2ya2jFf4wJSGOClZ8gNspnSV+ZwdA4KFEtRhsgb7hz6aQ9lOa9h2qrP1fVZWm+TqXAh9pC9FGwruOBCadZRc+OO84V0hmIAcQQ5NbotAXV21yqRToxr5VnX8sth+d7Z0V4IRP17tnn8h4d7+JShmlE+7beg1JZT0qcv3UfGb5WqxVAt1GaJ+7+a/XBlouH+lNt/cSb/crW94fKUPdxUUD36ZA3f+M4yoxhL75eu3HgcSG/57BfB733UXZ5FgAof/AnFniEb6qacl5hh70OSfzS1A5vqfuAisjQ4cDh4HBn5V8C/n02LD4qZU6QdMI7s449stwtz//WxJA==
|
|
||||||
DATABASE_URL: AgA8SPvacDJxnNb8rbBkx9LG2bL3o2gKJjhlhl0f1yBxlrbrz3bVvXKDkg0q2LxrzW961d6hH+oiRw77huRZdEoeQQOLQQmEraGAcy3Q75TZl7AN1aqX1heJpFcez3HzhpegFtm3jsPN7V0bDNYqMlEJ1nhE89+Y19SYonukjLox7H8Q50QEiAr9XOl7nRH23M9TMGnky/RRaYMEDYyIGDJfCWUxnE5RNTHEh/wmgMcoyJLCzSVh/pRYpgGDrdsbqr7lgi3CSx+Pz3XY29Rxjql6vZm0RxplWYGGMBWPCCl4cYM/fH85x+E9xEZSfg1O524fcTdJLiZ9ADtMDV2pgUqmB/1KRvXnSd+ysSmfoJb3l5ypPdxuARiPdIJ64H/wV/aY8dccek4rrCnUOPfvqq7KYJzyjUzkQuR8EE/CZogNo6tLsEMWUYclLye0kf41f6ivbytOJbwxJA5aOE3FeRlrpc3GO05jwXe6X9eJpr9V0yOvOp6R31FOX0KL0Ppr0WjwFD7COYmRoPvK7Wh2/1OYS9BxwWmf4wB6iQhTjSf53Jw+cReVta5Okp5JpNU0jbIduPCf49tunU8QuGvZHLeVQiX41MzklDAz72QxOfh+U8AV0x5F1KO8RgLKUCl9mRnrt3NE2xTJsdI6pDY5mQiRgCwWQxM4ALMdq/b93Dmz576z28QrdpgL8GhPpuQDvfFtN5tmZkLO0rM5BkRS5Gik1ZdTOaRyo+tsFslpPBp/cVBar3vF4hOGXbqzkaFOO2tknsuiN8NtnCHbyGuqh4vQ7sIEOgH0bvjEhHLbQPPL7Rrnti+xIa5M9uGcK7GDfH9Nn/41j1w/zXXnxmlcia/0lPJlQ7s=
|
|
||||||
REDIS_URL: AgAZbwYaQvW/do3TAl2cUQdmjA+Os90/xI3pyNv+yM/prRzEF00986/R9hbfOtcmtj79mg/WaZ93swMO4M+2B5xP34pdhUgP/aME4vmAeeJy1u0JsW5gIvKEcGDCsoQVNkn8/lsyfMpUtzw0ek1PDqoHVx+clZBavwIgbKyZyNwfVt8jdHQprCV7D0XbrxxyblhwstGL8Z1dhV8kbOzKExdxR9zyklM3c5Wjt7FoVUNpTjvNVsRWMhov5xHbflFFw7CKOt7oXjxIUfO/06tfqnKB22DJgDqWJDRNhxHtzrokfEZS7X9D5u2kn1EAfw97fWWHxyjcnQvJjXjIK7trOnCp0YP+ji66kFHaGVEYukF8Xh5eT1xjPnSpqO433ys7vXSKh9u/sUQ7swIClDFOolc/N7XU17wfkHrThNjcSXpwTLTwVQ7o8eHhjpRXCRBd+t2kyqrZOLxblHOrQduXYXzNml4CJiplsF4q8+PP/rebOrVyRRIAHRKyCnwGJZvnuYgBMAxZMUmK4RO/xGjjhe5fXppzBoqmWAeMhReTBPu33k8eR34zcdLOChu26Q0WgnWF7JabLxpglL925sfB1o74N3OF9A3awKoL7LnQvq0XhogH+JB7CBeIHoHSovTSxDVKgHJcoAK1dMVhw57OYClWlHNBSF2DAZ7FiaCl6D9H31iiihiuqydSrjAvFdhW9UzurwOlhtwHc1zj+VN0lgV7FRbQ36iM1t6y7wm4U60Hxi50MuhM28FfLmE3KPVNx4U6
|
|
||||||
SECRET_KEY: AgA0CZzTUD6sjRHsipVU0GZZj3IxgUXZFi7H7sKF7w9Xu/bEzYOvVRzyk2PSlJ2uCCskkBqGFgjZlD1DYJVA877ZU0hRwqy3SxUgKfqT8abKmZLGaJjqJVvE0CJwBpo7QeAzMeVhu1QO01eA9u3cPiyb3vyOFJOm0nrrWiNSabAjamVvMkaGGjBI5S/1+P5evzA9i1gqqaJISarFqTucNLLwihHz7l+f1r6cSs1QAqK+GVyVbyquPqnnKl9EbGfryk0FaKnAX/R1rf4FG9vsBJBUuMMSBJySEKd1Od5gLWXRXx1478f1yDXhcRBnNcmQZtkKM6k11tyHkM8NOeUVTtRTwCDuuR7R7eTtXRapwBb/+Ik2536Xe5LFzA48uty0FlaVmH92dis2eCDdnciw/6yOoGJhpnu0ke1LTCXfQVAYzRNBHgjYGp/D6ry/BLHd7RTrtdHRqJj/2Pzz8p4ydKT5CoVvhNUcDmi1FSHGRbupoaadqJENNI89IXZoxdB6x+98FOwXzdzFX8fjDc5dlJl/NtIMrgjNaxTBIR7lrPCscPjMZvQ+OPl7jqSlaUACAlTA+0yl96dCXQbKnAV3iunGkzrW5dibhBJILDAEoR3BH/aWjELe+gepb9joByDup5d9JDXgW0FHYJQtSxw0YJNkQC1ZPhoHZx3/h8F3TADTxincdtrSglMkmtN4bbSBM5kSf/wBCwF6/TlyX2Pe2N9SelJEbznKz4JJP7HiHvZ0YuukJoEohlVHJGaVLkhQPRhpFt6VZKPhOw==
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: app-env-secret
|
|
||||||
namespace: plane
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: externaldns.k8s.io/v1alpha1
|
|
||||||
kind: DNSEndpoint
|
|
||||||
metadata:
|
|
||||||
name: plane.michaelthomson.dev
|
|
||||||
namespace: plane
|
|
||||||
spec:
|
|
||||||
endpoints:
|
|
||||||
- dnsName: plane.michaelthomson.dev
|
|
||||||
recordTTL: 180
|
|
||||||
recordType: CNAME
|
|
||||||
targets:
|
|
||||||
- server.michaelthomson.dev
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: bitnami.com/v1alpha1
|
|
||||||
kind: SealedSecret
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: doc-store-secret
|
|
||||||
namespace: plane
|
|
||||||
spec:
|
|
||||||
encryptedData:
|
|
||||||
AWS_S3_BUCKET_NAME: AgCgQT1UeKO5wxpFmDUDRH2wGrUVZEcpsDlk6SdSGVkbBCU/ZL5HlXhZepEjeLY5G66a0Sg6sGx6VFK2AcMyJ8vIUPCXkmB9M1LCg7uq2N3SplFD+lilcw4/F8icG0qBg+BUqt36EBG/iEqLdVd9qgci5AX/n3MgKXb2Zul/2OkcP5R3lRdBBHNwJrnHG355Z/M/MREeww5IzFN+1ZvJBFJe23x9RRVlnnOx/V5co7vPV5y6b0NubpCDV/O/CGv64/Ci3EviLnVDW6PCho0m/dOgkDKbpCoqPmNZaGNgzDLSQjfFduXb5/2WNn24Z7c0ADBtCMUQL2qWGVtXcvTvIOEaRKrbBSECVwbIWS1yDqThJ9B50Pd/3zCREzU8oOCzKevUmlmvOzlqZ0MpoMOeYUpN5W/kv4zSvSg7H/bjTX8xrFv4QlJds+tt7M2Q7SC6G7CQmKdh/0+O7pCPOXwKoYQ5SaKwEtM7WWN03mVy4nWnCKX1DArLR3uWz2DxhIzRithsV8yI3XxLnSHVpBvSToM7oDFlLXYYPSwODaFMr0xTR2LPipsjD+25L/r0Z2dABMi8FPT/lWqTbCoVOk+VLanvJYpsEkDMBpk1JXSosBZ22zjrGamGAGMCwOmLvGepRG0BzEPie/AJMzvx60tFkyPrrzcn0gN96bD54TKlhTWc02viuvOSBGkWxTadBI4WqRYr7D2QmYcb
|
|
||||||
AWS_S3_ENDPOINT_URL: AgC/eNqCfgJ9rsgrHmhjB/nBftq1Bm5uFFbxvQqVPYSJD7jGIoqgIrYQ0MG6MvpH0f8bfkCCYTMcbuiE3ZDS2DWdwwCK2YwGnAuVNa3/C//MBtv/jfswQioHTKyyXhNNyc2zo4PszkbKxUqkMblBM55mtzvVPDmhup9h4oergXt/Yn5kCyX6BYGMHF5q2gi80TkbymaeVGVM7cIfKunKnLYEAvUqGZvMwCKEnVoB1ygjoSagaMEw7WiDoR353eUidUGO8lMWcNjYMtBj3x8Xgzu1gCmjXD0c8I5hU2uYP46NdyHB0/CUOcq8j4zXe7J2+kFXg1NjN8cjOaMwTXT1CmjSZk/kEZtooJOEXvLmowZD9m+DtdWqSW58JfDv5ryLZrMuhrJaT2f+YShOlykI7AyzkhUfYWmsZG8bE9gizoQKtP6g8gMHM0fOrWRgSLv19JaOVGiX+zYTH6SEeY7vZiu4nbzG/0g8747IeADmV2/6rHTM+kGFYHrEulxgrhnKgNl42NDRuEaOULCDq7yW/6xbSfF6kio7lopJCpSMQejLZPkX1kFHk2Zd9JLWXfi7sykwL/6CtKEjc8hjSK1/ATcoiVWESr1+1S7/c8wLay2AJVcbjP0d2QWxtMODj+QOXh5mO/Jb5tXhhsk2Ffd8dPnkGOlVoNauWAEeszBGAjiFfgx9hNipudBk1395g/Z16AW3zYD9pNw8bV1NqebLM1d23/RrFB3oKF4cR3YMvmK6YCEEJJkxF0FaWjB9Ormp8Q==
|
|
||||||
MINIO_ROOT_PASSWORD: AgARg9AsEVMV3So4JBm0yEA52iu94pvk5gqzN3I3KX2k5TolKwQhHziE9a7q5WQSqKF06dCg+SVfqzAYvnLgWmQJIcgUvri7xN/VWvg/w739ch+D3olgjMBAP021iQDc89DrHfVcNv2g5j1+8hbBlUFXdRUSplpq2SV8sGvir/GavSADfT39bPX4Mh0/TDlTeY4QZJ/ktkeVvPqHW2UWqXOnMlwWVAsYJTdhX4eocIqInUfXls7ZT/kDhrS+v4tJWlZgyV1p9dDZHwkPz6wF0dF4VitlTq3Sk8oT3PXN2mC47UgSUvqATjUcfWz1Go7WN8A8lnRMR2GlrdRu6HslLIrUfapHClMAO2IKntkftPxccA7Jo+nNBFMYTosWO7/DbI81g9GwOkDYIW+YxX+7P76ujk9LwTgDxBr+SmnW8hcX0ydC9sumz8cw+KN1f4vOzT5cRSEAJ6YJ2hLoUH/YkuX9JPGvSs1A2yDbspK9lS//8wj4UQAlVcT2HhsFqH0TPnDNoAZTDBJg1MsPoUcdPeR+aGUR4s+w8/ZxguC8EtwuPBWPAYTGnAQlD3y78szCXqQd6RrJKq7jCb4S2Fc76BDEfFaiEXrsD9K/ukH3wlQDUo83DXNeujFqR+7tp6KA/kdGTM0rFZWdU0FAQ41iC6WNvUdDVLsIqahoCrI348M3ZOSnQxGCDtT78iZuya8MAf7+8n0IQnbQdE76JxfCdwQPTKI7ev7bgl4lQpoeLLh2EqDx4Y5iELkb3enJvkszBKILScDEkA==
|
|
||||||
MINIO_ROOT_USER: AgDE/a5lyqQWmc457P2g48u+YiGf/tAXqXV2IfJn3QRderTZs5g6knrgf8i/0ViXulHfZmDL8zsthOT2xjnAYtKYo3hUuCUIbnBvp1CowFeanekgcVPKG6ambyImwnW7PyMWScHH0AJBuhxpro0h+8cou42zmJzE0UET8gbGiyj6kJzsK0mhCekYVJYehATiZtllieO2oEcahQ9LM7Mc7tTIFSUS2k4g4s33osoH/IqOuZIatiGGCEBdjSl9ojDwHVIiE8DZQmCPWiwNi/JKf5L5pvnWp9jMQoyVt7MwkvRpk2BYttPSYBT7DR5LZYI33zJTZGs76DxqTfXqQ1WJ75+tgr397Auds8g8iltK7F1X8mLgJ6jjiUDn/TMgWooLB2Wt5z4dYLYqLMEX4VGUrmsiDFDK9QZbrFS1OVNRDWBzLadP86ZSBU3vAO5n2l8wQmZxqrEFL7K8dYpvp89sit5r7uV6dvidfVKKY+hWVIvvN+SeBLIaT51QyzeJBOmD7F0oZW2SIOPu2K+/ady98+P/BagM6DjKwsl/eUa8G5uVlrdvQYJnFapiFfRLiMeEl6BbnyjFziHaKgUuUREQ6sL8u4/g2X/nkk5L8JSMTnEkKYuFPv4kfLx1PXtfKrxOsyJ2hXHYr4vM0JFxcqEQ3IimQQ0m3aInhmmLGB08aFKD2C9WxPQdEYuviFzNz4LIvraAH/jrew==
|
|
||||||
USE_MINIO: AgCM7F+f8h0WgKmPmgk76WemXZVdQ5eUydbX9p+xxi9ytJEPTjH3zJvJIEm7o4KykaQAgb7/rD/K+R4LidkLErmaCTcom56Uqkqr9kAKWO2dlv4Q/U/yo8/lhK63KMYXiJB3bBE7Ob4YbyDZz9ua0E6kHo1FhPAfcM3IqPLYg0blkv0vjjDGItqKcGmGWtdoF4ZL0+LhMw0+G/gGmK1yHrqoQgkKK6ocFenCz8lyE3sRgWqniqKBLjTT53WesouZma57Eg/EpaHeogjvNC3oBxoLTB5J3VEApJXiYFH/K0ge75HQeq5TG/Aio+i6yJzD73fhnF1Lln5E1JuZ7ymQ48PUi53Naxasqptc8T6ErF2HvcNX+x024UsU9AU1UCThfEI4/FH6R32Sy3G2epve8i2DbcJ/GPlCY4Su2qvQAnDD+oo/8FEKtOpMYTMKhKkEbZPEDYdTu6gOjLjIvuNOtYPvu5YxP7tw9+M0S4REybZSxzF6A8s6opwhurnHESAiRHprj7QAbVrO6QYejg0L5AqphS16l7co3+GOj4VXKZDLHSSPbYmx/FWQThrPXmYTItDhn3mWcQWFqKzPkyX/k6csOELYLly1ihyqN09gqVsy+OY9i1heGyKB7DMp6d8p0YVikEsp98Lnj6syNOlbR92OMJwZXIuLBbeDn+NTuzQCfRcXbUWJEto9pG8IQoEdw1GA
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: doc-store-secret
|
|
||||||
namespace: plane
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: bitnami.com/v1alpha1
|
|
||||||
kind: SealedSecret
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: live-env-secret
|
|
||||||
namespace: plane
|
|
||||||
spec:
|
|
||||||
encryptedData:
|
|
||||||
REDIS_URL: AgAnxbTGZ94Or2te9bITHGnmCFtBie9FomHyu6EbpFLGoHYqXGW/DeXExMVSdPMMKj68imu4U8C4dQkJ/EwDPUJIwEv9UHa1rE8fuunY16YiAyeRphrCrIrcBmicayhA2bKmmdNQfcfv7cNxNjUlX12E0f+gs7iWwkHpxa+a6QbvhplMEjmwSnP/tHsH7V0ho2KQomVH0q1riY5WQm95qYlfkv2lb36m7B6EXtY0JID8/OHlLhhsvUWjmpefkdL7Zvr+FgRkoEICzfwygdYgArHLCFmGQcRwl7VOTC7HjsgIP3UXUKHIvqIV0BIvCroclNOPiym5nbmTkgRl66lVE1Cwho1/KwD4ar/14jMdeYj9QVdrZiykcUuwQFsLe6of1SVWT+xm2+k+iP+Ke4vbsE6cPoweFA0LoReCz12bzET3smceQHktQ39OcdZVQ5cShvTkPNMx1oH0Qq+upWQFtNM9hs3BZmbjeK+gdbQY4Uy1EZeXKU6sZgN0AANAXGbvs7xPcjeTcyt0R4UI5m+HwXyFiRTyrGyzzdq7DuRKT6sTSPtq5gXa0vTNcL25Mb1UCr+S/LXqDL0oKIOQLDcyaPmQBk+FP8JSR7gABiBttNcRB2A64mBPCOzNcVaY3EpTBVWa4+mX4yvMSBUVrum1nWH0vU/Ddr30XKOZU2zMlBsoXzMmkvdyGGvHE9L9HhbBuVe8RUuJELGX9DQoo3HND8de5eyiNhZQSzjlnDhisFnV7KZzdUIvuV1xk4YJxdqVukxg
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
creationTimestamp: null
|
|
||||||
name: live-env-secret
|
|
||||||
namespace: plane
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user