mirror of
https://github.com/morten-olsen/homelab-operator.git
synced 2026-02-08 01:36:28 +01:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5fa12c203d | ||
|
|
440328ce6b | ||
|
|
67e9c3bc32 | ||
|
|
51242946e2 | ||
|
|
b33d68bf09 | ||
|
|
14adfd6227 | ||
|
|
a56e8b0ad8 | ||
|
|
1c587216cc | ||
|
|
d3abe5bb87 | ||
|
|
7c2e4b591e | ||
|
|
f553fb891c | ||
|
|
daa4abc6d6 | ||
|
|
bdf4aafbbb | ||
|
|
2e597ee105 |
4
.github/workflows/publish-backup-tag.yml
vendored
4
.github/workflows/publish-backup-tag.yml
vendored
@@ -36,7 +36,7 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Log in to the Container registry
|
- name: Log in to the Container registry
|
||||||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
uses: docker/login-action@5b7b28b1cc417bbd34cd8c225a957c9ce9adf7f2
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.DOCKER_REGISTRY }}
|
registry: ${{ env.DOCKER_REGISTRY }}
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
@@ -50,7 +50,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: push
|
id: push
|
||||||
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
|
uses: docker/build-push-action@cb8fc7586f9ad9441b20c33e0f6e8b1b58d8b4c6
|
||||||
with:
|
with:
|
||||||
context: ./images/backup
|
context: ./images/backup
|
||||||
push: true
|
push: true
|
||||||
|
|||||||
4
.github/workflows/publish-tag.yml
vendored
4
.github/workflows/publish-tag.yml
vendored
@@ -36,7 +36,7 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Log in to the Container registry
|
- name: Log in to the Container registry
|
||||||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
uses: docker/login-action@5b7b28b1cc417bbd34cd8c225a957c9ce9adf7f2
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.DOCKER_REGISTRY }}
|
registry: ${{ env.DOCKER_REGISTRY }}
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
@@ -50,7 +50,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: push
|
id: push
|
||||||
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
|
uses: docker/build-push-action@cb8fc7586f9ad9441b20c33e0f6e8b1b58d8b4c6
|
||||||
with:
|
with:
|
||||||
context: ./images/operator
|
context: ./images/operator
|
||||||
push: true
|
push: true
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ globals:
|
|||||||
domain: olsen.cloud
|
domain: olsen.cloud
|
||||||
image:
|
image:
|
||||||
repository: docker.io/ckulka/baikal
|
repository: docker.io/ckulka/baikal
|
||||||
tag: nginx@sha256:27bd9afbb8142c2143b6959c023074b05c86356ded0f589fcb1424ab5fbe0a70
|
tag: nginx@sha256:045918423df00a3f9ec793a819b9acdb055d338b75387926b7d93d753ac1e93a
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
subdomain: baikal
|
subdomain: baikal
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ globals:
|
|||||||
timezone: Europe/Amsterdam
|
timezone: Europe/Amsterdam
|
||||||
image:
|
image:
|
||||||
repository: lscr.io/linuxserver/calibre-web
|
repository: lscr.io/linuxserver/calibre-web
|
||||||
tag: latest@sha256:a833d4cf90333f167871fe6ab1f034c7be7bc3d2061a1563fdb6a8fa27af346e
|
tag: latest@sha256:98a20064168ab284bbb8e048af48c89a5e25650f35a4b217705241af94c1debe
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
subdomain: calibre-web
|
subdomain: calibre-web
|
||||||
|
|||||||
3
charts/apps/data/Chart.yaml
Normal file
3
charts/apps/data/Chart.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
version: 1.0.0
|
||||||
|
name: data
|
||||||
6
charts/apps/data/templates/database.yaml
Normal file
6
charts/apps/data/templates/database.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: PostgresDatabase
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
environment: '{{ .Values.globals.environment }}'
|
||||||
2
charts/apps/data/values.yaml
Normal file
2
charts/apps/data/values.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
globals:
|
||||||
|
environment: prod
|
||||||
@@ -3,7 +3,7 @@ globals:
|
|||||||
timezone: Europe/Amsterdam
|
timezone: Europe/Amsterdam
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/home-assistant/home-assistant
|
repository: ghcr.io/home-assistant/home-assistant
|
||||||
tag: stable@sha256:37af5e84627dc6cc4f8ce2de631cca7ee1fc76c908b429b3a8c1ec46f246a5fe
|
tag: stable@sha256:89ec0583c7f47c8a150204f6b5ed48b5432026012bebe1226cf72775a795a5e1
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
subdomain: home-assistant
|
subdomain: home-assistant
|
||||||
piper:
|
piper:
|
||||||
|
|||||||
3
charts/apps/linkwarden/Chart.yaml
Normal file
3
charts/apps/linkwarden/Chart.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
version: 1.0.0
|
||||||
|
name: Linkwarden
|
||||||
10
charts/apps/linkwarden/templates/client.yaml
Normal file
10
charts/apps/linkwarden/templates/client.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: OidcClient
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
environment: "{{ .Values.globals.environment }}"
|
||||||
|
redirectUris:
|
||||||
|
- path: /api/v1/auth/callback/authentik
|
||||||
|
subdomain: "{{ .Values.subdomain }}"
|
||||||
|
matchingMode: strict
|
||||||
6
charts/apps/linkwarden/templates/database.yaml
Normal file
6
charts/apps/linkwarden/templates/database.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: PostgresDatabase
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
environment: '{{ .Values.globals.environment }}'
|
||||||
75
charts/apps/linkwarden/templates/deployment.yaml
Normal file
75
charts/apps/linkwarden/templates/deployment.yaml
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}"
|
||||||
|
labels:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: "{{ .Release.Name }}"
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||||
|
ports:
|
||||||
|
- containerPort: 3000
|
||||||
|
name: http
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: "{{ .Values.globals.timezone }}"
|
||||||
|
- name: NEXTAUTH_URL
|
||||||
|
value: "https://{{ .Values.subdomain }}.{{ .Values.globals.domain }}/api/v1/auth"
|
||||||
|
- name: NEXT_PUBLIC_OLLAMA_ENDPOINT_URL
|
||||||
|
value: "http://ollama:80"
|
||||||
|
- name: OLLAMA_MODEL
|
||||||
|
value: phi3:mini-4k
|
||||||
|
- name: DATABASE_URL
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ .Release.Name }}-pg-connection"
|
||||||
|
key: url
|
||||||
|
- name: NEXTAUTH_SECRET
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ .Release.Name }}-secrets"
|
||||||
|
key: nextauth
|
||||||
|
- name: NEXT_PUBLIC_DISABLE_REGISTRATION
|
||||||
|
value: "true"
|
||||||
|
- name: NEXT_PUBLIC_CREDENTIALS_ENABLED
|
||||||
|
value: "false"
|
||||||
|
- name: DISABLE_NEW_SSO_USERS
|
||||||
|
value: "false"
|
||||||
|
- name: NEXT_PUBLIC_AUTHENTIK_ENABLED
|
||||||
|
value: "true"
|
||||||
|
- name: AUTHENTIK_CLIENT_ID
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ .Release.Name }}-client"
|
||||||
|
key: clientId
|
||||||
|
- name: AUTHENTIK_CLIENT_SECRET
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ .Release.Name }}-client"
|
||||||
|
key: clientSecret
|
||||||
|
- name: AUTHENTIK_ISSUER
|
||||||
|
value: "https://authentik.{{ .Values.globals.domain }}/application/o/linkwarden"
|
||||||
|
# TODO:
|
||||||
|
# - name: AUTHENTIK_ISSUER
|
||||||
|
# valueFrom:
|
||||||
|
# secretKeyRef:
|
||||||
|
# name: "{{ .Release.Name }}-client"
|
||||||
|
# key: configurationIssuer
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data/data
|
||||||
|
name: data
|
||||||
|
volumes:
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: "{{ .Release.Name }}-data"
|
||||||
11
charts/apps/linkwarden/templates/external-http-service.yaml
Normal file
11
charts/apps/linkwarden/templates/external-http-service.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: ExternalHttpService
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
environment: '{{ .Values.globals.environment }}'
|
||||||
|
subdomain: '{{ .Values.subdomain }}'
|
||||||
|
destination:
|
||||||
|
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
11
charts/apps/linkwarden/templates/http-service.yaml
Normal file
11
charts/apps/linkwarden/templates/http-service.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: HttpService
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
environment: "{{ .Values.globals.environment }}"
|
||||||
|
subdomain: "{{ .Values.subdomain }}"
|
||||||
|
destination:
|
||||||
|
host: "{{ .Release.Name }}"
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
11
charts/apps/linkwarden/templates/pvc.yaml
Normal file
11
charts/apps/linkwarden/templates/pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-data'
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- 'ReadWriteOnce'
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: '1Gi'
|
||||||
|
storageClassName: '{{ .Values.globals.environment }}'
|
||||||
9
charts/apps/linkwarden/templates/secret.yaml
Normal file
9
charts/apps/linkwarden/templates/secret.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: GenerateSecret
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-secrets"
|
||||||
|
spec:
|
||||||
|
fields:
|
||||||
|
- name: nextauth
|
||||||
|
encoding: hex
|
||||||
|
length: 64
|
||||||
15
charts/apps/linkwarden/templates/service.yaml
Normal file
15
charts/apps/linkwarden/templates/service.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}"
|
||||||
|
labels:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 3000
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
9
charts/apps/linkwarden/values.yaml
Normal file
9
charts/apps/linkwarden/values.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
globals:
|
||||||
|
environment: prod
|
||||||
|
domain: olsen.cloud
|
||||||
|
timezone: Europe/Amsterdam
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/linkwarden/linkwarden
|
||||||
|
tag: latest
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
subdomain: linkwarden
|
||||||
@@ -5,4 +5,4 @@ globals:
|
|||||||
subdomain: mealie
|
subdomain: mealie
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/mealie-recipes/mealie
|
repository: ghcr.io/mealie-recipes/mealie
|
||||||
tag: latest@sha256:d872fb529097df2d77b3c6f5e469b047f99d0d1c9f793a84ae27aa106e1f5d7e
|
tag: latest@sha256:322369a5b748eddb091417e708f0667d21994e6119278d1b8c509900ba41e54b
|
||||||
10
charts/apps/metamcp/templates/client.yaml
Normal file
10
charts/apps/metamcp/templates/client.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: OidcClient
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
environment: '{{ .Values.globals.environment }}'
|
||||||
|
redirectUris:
|
||||||
|
- path: /api/auth/oidc/callback
|
||||||
|
subdomain: '{{ .Values.subdomain }}'
|
||||||
|
matchingMode: strict
|
||||||
@@ -1,23 +1,23 @@
|
|||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: '{{ .Release.Name }}'
|
name: "{{ .Release.Name }}"
|
||||||
spec:
|
spec:
|
||||||
strategy:
|
strategy:
|
||||||
type: Recreate
|
type: Recreate
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: '{{ .Release.Name }}'
|
app: "{{ .Release.Name }}"
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app: '{{ .Release.Name }}'
|
app: "{{ .Release.Name }}"
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: '{{ .Release.Name }}'
|
- name: "{{ .Release.Name }}"
|
||||||
image: '{{ .Values.image.repository }}:{{ .Values.image.tag }}'
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
imagePullPolicy: '{{ .Values.image.pullPolicy }}'
|
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
containerPort: 12008
|
containerPort: 12008
|
||||||
@@ -33,47 +33,68 @@ spec:
|
|||||||
name: data
|
name: data
|
||||||
env:
|
env:
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: '{{ .Values.globals.timezone }}'
|
value: "{{ .Values.globals.timezone }}"
|
||||||
- name: APP_URL
|
- name: APP_URL
|
||||||
value: https://metamcp.olsen.cloud # TODO: Change
|
value: "https://{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
|
||||||
- name: NEXT_PUBLIC_APP_URL
|
- name: NEXT_PUBLIC_APP_URL
|
||||||
value: https://metamcp.olsen.cloud # TODO: Change
|
value: "https://{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
|
||||||
- name: BETTER_AUTH_SECRET
|
- name: BETTER_AUTH_SECRET
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: '{{ .Release.Name }}-secrets'
|
name: "{{ .Release.Name }}-secrets"
|
||||||
key: betterauth
|
key: betterauth
|
||||||
- name: DATABASE_URL
|
- name: DATABASE_URL
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: '{{ .Release.Name }}-pg-connection'
|
name: "{{ .Release.Name }}-pg-connection"
|
||||||
key: url
|
key: url
|
||||||
- name: POSTGRES_DB
|
- name: POSTGRES_DB
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: '{{ .Release.Name }}-pg-connection'
|
name: "{{ .Release.Name }}-pg-connection"
|
||||||
key: database
|
key: database
|
||||||
- name: POSTGRES_HOST
|
- name: POSTGRES_HOST
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: '{{ .Release.Name }}-pg-connection'
|
name: "{{ .Release.Name }}-pg-connection"
|
||||||
key: host
|
key: host
|
||||||
- name: POSTGRES_PORT
|
- name: POSTGRES_PORT
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: '{{ .Release.Name }}-pg-connection'
|
name: "{{ .Release.Name }}-pg-connection"
|
||||||
key: port
|
key: port
|
||||||
- name: POSTGRES_USER
|
- name: POSTGRES_USER
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: '{{ .Release.Name }}-pg-connection'
|
name: "{{ .Release.Name }}-pg-connection"
|
||||||
key: user
|
key: user
|
||||||
- name: POSTGRES_PASSWORD
|
- name: POSTGRES_PASSWORD
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: '{{ .Release.Name }}-pg-connection'
|
name: "{{ .Release.Name }}-pg-connection"
|
||||||
key: password
|
key: password
|
||||||
|
- name: OIDC_PROVIDER_ID
|
||||||
|
value: oidc
|
||||||
|
- name: OIDC_SCOPES
|
||||||
|
value: openid email profile
|
||||||
|
- name: OIDC_PKCE
|
||||||
|
value: "true"
|
||||||
|
- name: OIDC_CLIENT_ID
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ .Release.Name }}-client"
|
||||||
|
key: clientId
|
||||||
|
- name: OIDC_CLIENT_SECRET
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ .Release.Name }}-client"
|
||||||
|
key: clientSecret
|
||||||
|
- name: OIDC_DISCOVERY_URL
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ .Release.Name }}-client"
|
||||||
|
key: configuration
|
||||||
volumes:
|
volumes:
|
||||||
- name: data
|
- name: data
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
claimName: '{{ .Release.Name }}-data'
|
claimName: "{{ .Release.Name }}-data"
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
globals:
|
globals:
|
||||||
environment: prod
|
environment: prod
|
||||||
|
domain: olsen.cloud
|
||||||
timezone: Europe/Amsterdam
|
timezone: Europe/Amsterdam
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/metatool-ai/metamcp
|
repository: ghcr.io/metatool-ai/metamcp
|
||||||
|
|||||||
@@ -8,5 +8,5 @@ data:
|
|||||||
mosquitto.conf: |
|
mosquitto.conf: |
|
||||||
persistence true
|
persistence true
|
||||||
persistence_location /mosquitto/data/
|
persistence_location /mosquitto/data/
|
||||||
listener 1884 0.0.0.0
|
listener 1883 0.0.0.0
|
||||||
allow_anonymous true
|
allow_anonymous true
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ spec:
|
|||||||
command:
|
command:
|
||||||
- sh
|
- sh
|
||||||
- -c
|
- -c
|
||||||
- mosquitto_pub -h localhost -p 1884 -t health/ready -m "ready" -q 0 -i readiness_client -V 5
|
- mosquitto_pub -h localhost -p 1883 -t health/ready -m "ready" -q 0 -i readiness_client -V 5
|
||||||
initialDelaySeconds: 10 # Give broker time to start
|
initialDelaySeconds: 10 # Give broker time to start
|
||||||
periodSeconds: 20 # Check every 20 seconds
|
periodSeconds: 20 # Check every 20 seconds
|
||||||
timeoutSeconds: 5 # Fail if command takes longer than 5 seconds
|
timeoutSeconds: 5 # Fail if command takes longer than 5 seconds
|
||||||
@@ -37,7 +37,7 @@ spec:
|
|||||||
command:
|
command:
|
||||||
- sh
|
- sh
|
||||||
- -c
|
- -c
|
||||||
- mosquitto_pub -h localhost -p 1884 -t health/ready -m "ready" -q 0 -i readiness_client -V 5
|
- mosquitto_pub -h localhost -p 1883 -t health/ready -m "ready" -q 0 -i readiness_client -V 5
|
||||||
initialDelaySeconds: 15
|
initialDelaySeconds: 15
|
||||||
periodSeconds: 20
|
periodSeconds: 20
|
||||||
timeoutSeconds: 5
|
timeoutSeconds: 5
|
||||||
|
|||||||
11
charts/apps/mqtt/templates/http-service.yaml
Normal file
11
charts/apps/mqtt/templates/http-service.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: HttpService
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
environment: "{{ .Values.globals.environment }}"
|
||||||
|
subdomain: "{{ .Values.subdomain }}"
|
||||||
|
destination:
|
||||||
|
host: "{{ .Release.Name }}"
|
||||||
|
port:
|
||||||
|
number: 1883
|
||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
labels:
|
labels:
|
||||||
app: "{{ .Release.Name }}"
|
app: "{{ .Release.Name }}"
|
||||||
spec:
|
spec:
|
||||||
type: ClusterIP
|
type: LoadBalancer
|
||||||
ports:
|
ports:
|
||||||
- port: 1883
|
- port: 1883
|
||||||
targetPort: 1883
|
targetPort: 1883
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ globals:
|
|||||||
domain: olsen.cloud
|
domain: olsen.cloud
|
||||||
image:
|
image:
|
||||||
repository: docker.n8n.io/n8nio/n8n
|
repository: docker.n8n.io/n8nio/n8n
|
||||||
tag: latest@sha256:6c0c7650150a3fb0fd30d13160a87b5227963c36c9297b5bda618bcadfcee932
|
tag: latest@sha256:c5fe3ff0b79f7831dc21f9c709bdb7eee4fff4453a28ce84c8e9fa5b9f562686
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
subdomain: n8n
|
subdomain: n8n
|
||||||
|
|||||||
3
charts/apps/nocodb/Chart.yaml
Normal file
3
charts/apps/nocodb/Chart.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
version: 1.0.0
|
||||||
|
name: nocodb
|
||||||
33
charts/apps/nocodb/templates/deployment.yaml
Normal file
33
charts/apps/nocodb/templates/deployment.yaml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}"
|
||||||
|
labels:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: "{{ .Release.Name }}"
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
name: http
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: "{{ .Values.globals.timezone }}"
|
||||||
|
- name: PUID
|
||||||
|
- mountPath: /usr/app/data/
|
||||||
|
name: data
|
||||||
|
volumes:
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: "{{ .Release.Name }}-data"
|
||||||
11
charts/apps/nocodb/templates/external-http-service.yaml
Normal file
11
charts/apps/nocodb/templates/external-http-service.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: ExternalHttpService
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}'
|
||||||
|
spec:
|
||||||
|
environment: '{{ .Values.globals.environment }}'
|
||||||
|
subdomain: '{{ .Values.subdomain }}'
|
||||||
|
destination:
|
||||||
|
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
11
charts/apps/nocodb/templates/http-service.yaml
Normal file
11
charts/apps/nocodb/templates/http-service.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
|
kind: HttpService
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
environment: "{{ .Values.globals.environment }}"
|
||||||
|
subdomain: "{{ .Values.subdomain }}"
|
||||||
|
destination:
|
||||||
|
host: "{{ .Release.Name }}"
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
11
charts/apps/nocodb/templates/pvc.yaml
Normal file
11
charts/apps/nocodb/templates/pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: '{{ .Release.Name }}-data'
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- 'ReadWriteOnce'
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: '1Gi'
|
||||||
|
storageClassName: '{{ .Values.globals.environment }}'
|
||||||
15
charts/apps/nocodb/templates/service.yaml
Normal file
15
charts/apps/nocodb/templates/service.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}"
|
||||||
|
labels:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
app: "{{ .Release.Name }}"
|
||||||
9
charts/apps/nocodb/values.yaml
Normal file
9
charts/apps/nocodb/values.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
globals:
|
||||||
|
environment: prod
|
||||||
|
domain: olsen.cloud
|
||||||
|
timezone: Europe/Amsterdam
|
||||||
|
image:
|
||||||
|
repository: nocodb/nocodb
|
||||||
|
tag: latest
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
subdomain: nocodb
|
||||||
@@ -2,6 +2,6 @@ globals:
|
|||||||
environment: prod
|
environment: prod
|
||||||
image:
|
image:
|
||||||
repository: ollama/ollama
|
repository: ollama/ollama
|
||||||
tag: 0.11.8@sha256:03eaa1581455ba16e7c954d799e4f44996b60ae668261acd00a0e80a241ed720
|
tag: 0.12.0@sha256:14def4e0b9ac8c91b3ec6f7fa7684c924ffe244541d5fd827d9b89035cc33310
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
subdomain: openwebui
|
subdomain: openwebui
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ globals:
|
|||||||
timezone: Europe/Amsterdam
|
timezone: Europe/Amsterdam
|
||||||
image:
|
image:
|
||||||
repository: codeberg.org/readeck/readeck
|
repository: codeberg.org/readeck/readeck
|
||||||
tag: latest@sha256:2fc8c3ce875db68fbfdc6cdd517a9315b14be65867116ffac26997e800def0ca
|
tag: latest@sha256:432cc2026f9dca3c33ce331f52c225287a2fa91a3c1dce8a4b0b7e9de4185c2f
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
subdomain: readeck
|
subdomain: readeck
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ image:
|
|||||||
repository: ghcr.io/morten-olsen/homelab-operator
|
repository: ghcr.io/morten-olsen/homelab-operator
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
# Overrides the image tag whose default is the chart appVersion.
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
tag: main@sha256:752b25d3ef9711e72d63e936244dac03c6caa2dd1e00f49fb98238f2702f07a5
|
tag: main@sha256:d6f0884b6e3044e39b61eb752496ddafee808e85ae54af2d40a6793fb026c261
|
||||||
|
|
||||||
imagePullSecrets: []
|
imagePullSecrets: []
|
||||||
nameOverride: ''
|
nameOverride: ''
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM alpine/git:latest@sha256:9c9c6debba3eac25c9230db4bbd1e17d0c27efffdb93e502a47f6f447ab90ac4
|
FROM alpine/git:latest@sha256:bd54f921f6d803dfa3a4fe14b7defe36df1b71349a3e416547e333aa960f86e3
|
||||||
# or a more specific image like a Debian slim or Ubuntu base image.
|
# or a more specific image like a Debian slim or Ubuntu base image.
|
||||||
RUN apk add --no-cache restic fuse-overlayfs
|
RUN apk add --no-cache restic fuse-overlayfs
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"eslint": "9.32.0",
|
"eslint": "9.32.0",
|
||||||
"eslint-config-prettier": "10.1.8",
|
"eslint-config-prettier": "10.1.8",
|
||||||
"eslint-plugin-import": "2.32.0",
|
"eslint-plugin-import": "2.32.0",
|
||||||
"eslint-plugin-prettier": "5.5.3",
|
"eslint-plugin-prettier": "5.5.4",
|
||||||
"json-schema-to-typescript": "^15.0.4",
|
"json-schema-to-typescript": "^15.0.4",
|
||||||
"prettier": "3.6.2",
|
"prettier": "3.6.2",
|
||||||
"typescript": "5.8.3",
|
"typescript": "5.8.3",
|
||||||
|
|||||||
10
images/operator/pnpm-lock.yaml
generated
10
images/operator/pnpm-lock.yaml
generated
@@ -76,8 +76,8 @@ importers:
|
|||||||
specifier: 2.32.0
|
specifier: 2.32.0
|
||||||
version: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0)(typescript@5.8.3))(eslint@9.32.0)
|
version: 2.32.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0)(typescript@5.8.3))(eslint@9.32.0)
|
||||||
eslint-plugin-prettier:
|
eslint-plugin-prettier:
|
||||||
specifier: 5.5.3
|
specifier: 5.5.4
|
||||||
version: 5.5.3(eslint-config-prettier@10.1.8(eslint@9.32.0))(eslint@9.32.0)(prettier@3.6.2)
|
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.32.0))(eslint@9.32.0)(prettier@3.6.2)
|
||||||
json-schema-to-typescript:
|
json-schema-to-typescript:
|
||||||
specifier: ^15.0.4
|
specifier: ^15.0.4
|
||||||
version: 15.0.4
|
version: 15.0.4
|
||||||
@@ -717,8 +717,8 @@ packages:
|
|||||||
'@typescript-eslint/parser':
|
'@typescript-eslint/parser':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
eslint-plugin-prettier@5.5.3:
|
eslint-plugin-prettier@5.5.4:
|
||||||
resolution: {integrity: sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w==}
|
resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/eslint': '>=8.0.0'
|
'@types/eslint': '>=8.0.0'
|
||||||
@@ -2826,7 +2826,7 @@ snapshots:
|
|||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-prettier@5.5.3(eslint-config-prettier@10.1.8(eslint@9.32.0))(eslint@9.32.0)(prettier@3.6.2):
|
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.32.0))(eslint@9.32.0)(prettier@3.6.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.32.0
|
eslint: 9.32.0
|
||||||
prettier: 3.6.2
|
prettier: 3.6.2
|
||||||
|
|||||||
1
notes.md
Normal file
1
notes.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|

|
||||||
@@ -5,6 +5,8 @@
|
|||||||
],
|
],
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
{
|
||||||
|
"groupName": "Docker images",
|
||||||
|
"groupSlug": "dockerimages",
|
||||||
"matchDatasources": ["docker"],
|
"matchDatasources": ["docker"],
|
||||||
"pinDigests": true
|
"pinDigests": true
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user