mirror of
https://github.com/michaelthomson0797/fleet-infra.git
synced 2026-03-22 03:27:21 +00:00
Compare commits
175 Commits
chore/upda
...
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 | |||
|
3d6ddc70ea
|
|||
|
7df611f789
|
|||
|
0dfdb72561
|
|||
|
b9f8009427
|
|||
|
ee994cbca0
|
|||
|
dc8e9950af
|
|||
|
8c2a23e0ff
|
|||
|
9a0e44f813
|
|||
|
f6f9f2a365
|
|||
|
941841ddce
|
|||
|
9f0944e4ce
|
|||
|
3d3282cf1b
|
|||
|
b09446668d
|
|||
|
5ac011f02b
|
|||
|
6ff7c9b8c4
|
|||
|
7b8766c683
|
|||
| ec2d0a8c84 |
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
|
||||||
@@ -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
|
||||||
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
|
||||||
23
apps/gitea/admin-secret.yaml
Normal file
23
apps/gitea/admin-secret.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
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:
|
||||||
|
name: admin-secret
|
||||||
|
namespace: gitea
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLMFNmREJGMStuTEhyRi9w
|
||||||
|
OTc4RTlrWWJwNlc2Z3liOXQrd1Jmc0VMQ3hJCjlJMzJDdDYvNWhtUVF6ZlBmR0Nx
|
||||||
|
RGNrZWlBcnpjSjZLaU95aGZjcXZVNWcKLS0tIHk0UkFnWkxFRHB3THQ1UytRSzdL
|
||||||
|
ZTB2WVBmWnZLT3FsekFhSHFkQ1RLNlkKbQfo7CDYk/EadaE6SEmsCZX5ubOTcbD3
|
||||||
|
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
|
||||||
22
apps/gitea/mailer-config-secret.yaml
Normal file
22
apps/gitea/mailer-config-secret.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
mailer: ENC[AES256_GCM,data:baGCpPHJejjMFeiBcgSroJWqmUj/8PzvwAdzZ+nLacen2I91iaIRIgztvsk=,iv:6M2+sKRc1ZC5CqY4X43xgGO/CeWOfjMVzNgelYd0V6c=,tag:I15tnxf8CQaLu+/0GNdeOA==,type:str]
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: gitea-mailer-config-secret
|
||||||
|
namespace: gitea
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJMmxwWGZUb2JRK0FHdFd6
|
||||||
|
SFN5MGdZR3puUDNhMElTTy96SnVRUzJwYjFvCkJsdlJCRG9zVXdzOEY1REQ4NWRw
|
||||||
|
R05taHVZMlpySXVXWmNIc25VYng4WWsKLS0tIERoL0tUVmUvbG5ha0h0cWIvZDND
|
||||||
|
NkI0eUlmYjg3Zk9iVmNkZVpXWkh2TW8K/coOzGAPF42522cM6DZVAEEv3LmZaIhu
|
||||||
|
BVyl8ijATNLMIfiFpP5bHpljPHrn3lGP70RzwoCV15t1fC6pjeParA==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
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,13 +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
|
||||||
namespace: flux-system
|
|
||||||
interval: 15m
|
interval: 15m
|
||||||
timeout: 5m
|
|
||||||
releaseName: gitea
|
releaseName: gitea
|
||||||
values:
|
values:
|
||||||
global:
|
global:
|
||||||
@@ -27,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:
|
||||||
@@ -43,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
|
||||||
@@ -54,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
|
||||||
@@ -68,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:
|
||||||
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
metadata:
|
metadata:
|
||||||
name: gitea
|
name: gitea
|
||||||
namespace: flux-system
|
namespace: gitea
|
||||||
spec:
|
spec:
|
||||||
interval: 15m
|
interval: 15m
|
||||||
url: https://dl.gitea.io/charts
|
url: https://dl.gitea.io/charts
|
||||||
@@ -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
|
||||||
64
apps/immich/cluster.yaml
Normal file
64
apps/immich/cluster.yaml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Cluster
|
||||||
|
metadata:
|
||||||
|
name: immich-postgres
|
||||||
|
namespace: immich
|
||||||
|
annotations:
|
||||||
|
# needed to allow for recovery from same name cluster backup
|
||||||
|
cnpg.io/skipEmptyWalArchiveCheck: enabled
|
||||||
|
spec:
|
||||||
|
imageName: ghcr.io/tensorchord/cloudnative-vectorchord:17-0.3.0
|
||||||
|
instances: 2
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
shared_preload_libraries:
|
||||||
|
- "vchord.so"
|
||||||
|
|
||||||
|
managed:
|
||||||
|
roles:
|
||||||
|
- name: immich
|
||||||
|
superuser: true
|
||||||
|
login: true
|
||||||
|
|
||||||
|
bootstrap:
|
||||||
|
# initdb:
|
||||||
|
# database: immich
|
||||||
|
# owner: immich
|
||||||
|
# secret:
|
||||||
|
# name: immich-postgres-user
|
||||||
|
# postInitSQL:
|
||||||
|
# - CREATE EXTENSION IF NOT EXISTS "vchord" CASCADE;
|
||||||
|
# - CREATE EXTENSION IF NOT EXISTS "earthdistance" CASCADE;
|
||||||
|
# NOTE: uncomment this and commend the above initdb when recovering
|
||||||
|
recovery:
|
||||||
|
source: immich-postgres
|
||||||
|
|
||||||
|
storage:
|
||||||
|
size: 8Gi
|
||||||
|
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"
|
||||||
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
|
||||||
@@ -11,25 +11,27 @@ spec:
|
|||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: immich
|
name: immich
|
||||||
namespace: flux-system
|
|
||||||
interval: 15m
|
interval: 15m
|
||||||
timeout: 5m
|
|
||||||
releaseName: immich
|
releaseName: immich
|
||||||
values:
|
values:
|
||||||
env:
|
controllers:
|
||||||
DB_HOSTNAME: "immich-postgres-rw"
|
main:
|
||||||
DB_USERNAME: "immich"
|
containers:
|
||||||
DB_DATABASE_NAME: "immich"
|
main:
|
||||||
DB_PASSWORD: "immich"
|
image:
|
||||||
image:
|
tag: v2.1.0
|
||||||
tag: v1.134.0
|
env:
|
||||||
|
DB_HOSTNAME: "immich-postgres-rw"
|
||||||
|
DB_USERNAME: "immich"
|
||||||
|
DB_DATABASE_NAME: "immich"
|
||||||
|
DB_PASSWORD: "immich"
|
||||||
|
|
||||||
immich:
|
immich:
|
||||||
persistence:
|
persistence:
|
||||||
library:
|
library:
|
||||||
existingClaim: immich-data
|
existingClaim: immich-data
|
||||||
|
|
||||||
redis:
|
valkey:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
server:
|
server:
|
||||||
@@ -38,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:
|
||||||
@@ -47,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
|
||||||
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
metadata:
|
metadata:
|
||||||
name: immich
|
name: immich
|
||||||
namespace: flux-system
|
namespace: immich
|
||||||
spec:
|
spec:
|
||||||
interval: 15m
|
interval: 15m
|
||||||
url: https://immich-app.github.io/immich-charts
|
url: https://immich-app.github.io/immich-charts
|
||||||
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
|
||||||
@@ -7,38 +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
|
||||||
namespace: flux-system
|
|
||||||
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
|
||||||
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
metadata:
|
metadata:
|
||||||
name: prometheus-community
|
name: prometheus-community
|
||||||
namespace: flux-system
|
namespace: kube-prometheus-stack
|
||||||
spec:
|
spec:
|
||||||
interval: 15m
|
interval: 15m
|
||||||
url: https://prometheus-community.github.io/helm-charts
|
url: https://prometheus-community.github.io/helm-charts
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
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
|
||||||
9
apps/media/jellyseerr/repository.yaml
Normal file
9
apps/media/jellyseerr/repository.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
|
kind: HelmRepository
|
||||||
|
metadata:
|
||||||
|
name: seerr
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
type: "oci"
|
||||||
|
interval: 15m
|
||||||
|
url: oci://ghcr.io/seerr-team/seerr
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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/
|
||||||
|
|
||||||
23
apps/nextcloud/collabora-secret.yaml
Normal file
23
apps/nextcloud/collabora-secret.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
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:
|
||||||
|
name: collabora-secret
|
||||||
|
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
|
||||||
22
apps/nextcloud/nextcloud-redis-secret.yaml
Normal file
22
apps/nextcloud/nextcloud-redis-secret.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
password: ENC[AES256_GCM,data:sczdgF2gOu+NkUmPPS3ipwRPSkgsL69QwA4zUFGV70GRTpC+,iv:0sA/fN7M4Gg7FuOAH/+j8PhY26wT94UNCfbdJ36JKg0=,tag:V3G9nSJOtVh0yzNZkX3Uzg==,type:str]
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: nextcloud-redis-secret
|
||||||
|
namespace: nextcloud
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1s0206tnfaaw849x5xmt95axgu8qhxzlu5ywrwz09tpt8lwpx858q089nq9
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1aDEzNEFlUUNIekRib1hv
|
||||||
|
NGZITHZMTjhlWlQ3MHk1djlUVk1GeFRVRzBNCm12bWhPaHk2REo1RCtZUDhnLzF3
|
||||||
|
SXFOMzlVaDdyZk9FQVhiZmV3ZEo3RlkKLS0tIHVrZGZ4cFp2SkVubCtxUWQ1aXBw
|
||||||
|
Y095N2YrRTZBdFBlOWlPYXpWS0R3dk0KTUGr2gfHK5NszjDWSJObcGNdvjiBQ0lt
|
||||||
|
ujeskIYbKzRoY8cCRxiGc17SFTYnp+2q0hBm8V9H+ywI74Chc1gOgA==
|
||||||
|
-----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
|
||||||
23
apps/nextcloud/postgres-secret.yaml
Normal file
23
apps/nextcloud/postgres-secret.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
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:
|
||||||
|
name: postgres-secret
|
||||||
|
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,13 +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
|
||||||
namespace: flux-system
|
|
||||||
interval: 15m
|
interval: 15m
|
||||||
timeout: 5m
|
|
||||||
releaseName: nextcloud
|
releaseName: nextcloud
|
||||||
values:
|
values:
|
||||||
image:
|
image:
|
||||||
@@ -23,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
|
||||||
@@ -91,6 +92,8 @@ spec:
|
|||||||
|
|
||||||
postgresql:
|
postgresql:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
image:
|
||||||
|
tag: 16.6.0
|
||||||
global:
|
global:
|
||||||
postgresql:
|
postgresql:
|
||||||
auth:
|
auth:
|
||||||
@@ -126,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
|
||||||
@@ -149,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:
|
||||||
@@ -159,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
|
||||||
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
metadata:
|
metadata:
|
||||||
name: nextcloud
|
name: nextcloud
|
||||||
namespace: flux-system
|
namespace: nextcloud
|
||||||
spec:
|
spec:
|
||||||
interval: 15m
|
interval: 15m
|
||||||
url: https://nextcloud.github.io/helm/
|
url: https://nextcloud.github.io/helm/
|
||||||
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
|
||||||
@@ -11,17 +11,15 @@ spec:
|
|||||||
sourceRef:
|
sourceRef:
|
||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
name: mojo2600
|
name: mojo2600
|
||||||
namespace: flux-system
|
|
||||||
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:
|
||||||
@@ -33,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: /
|
||||||
@@ -41,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:
|
||||||
@@ -2,7 +2,7 @@ apiVersion: source.toolkit.fluxcd.io/v1
|
|||||||
kind: HelmRepository
|
kind: HelmRepository
|
||||||
metadata:
|
metadata:
|
||||||
name: mojo2600
|
name: mojo2600
|
||||||
namespace: flux-system
|
namespace: pihole
|
||||||
spec:
|
spec:
|
||||||
interval: 15m
|
interval: 15m
|
||||||
url: https://mojo2600.github.io/pihole-kubernetes/
|
url: https://mojo2600.github.io/pihole-kubernetes/
|
||||||
@@ -4,6 +4,9 @@ metadata:
|
|||||||
name: syncthing
|
name: syncthing
|
||||||
namespace: syncthing
|
namespace: syncthing
|
||||||
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:
|
||||||
- syncthing.michaelthomson.dev
|
- syncthing.michaelthomson.dev
|
||||||
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
secretName: syncthing-tls
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user