Compare commits

...

2 Commits

Author SHA1 Message Date
Morten Olsen
1259e3e752 more-stuff 2025-09-03 17:12:42 +02:00
Morten Olsen
03e406322f more stuff 2025-09-03 15:16:50 +02:00
14 changed files with 85 additions and 20 deletions

View File

@@ -1,2 +1,2 @@
environment: dev environment: prod
subdomain: bytestash subdomain: bytestash

View File

@@ -0,0 +1 @@
https://www.authelia.com/integration/openid-connect/clients/jellyfin/

View File

@@ -5,6 +5,6 @@ metadata:
spec: spec:
environment: '{{ .Values.environment }}' environment: '{{ .Values.environment }}'
redirectUris: redirectUris:
- path: /api/auth/oidc/callback - path: /sso/OID/redirect/Authentik
subdomain: '{{ .Values.subdomain }}' subdomain: '{{ .Values.subdomain }}'
matchingMode: strict matchingMode: strict

View File

@@ -33,10 +33,20 @@ spec:
name: config name: config
- mountPath: /media/movies - mountPath: /media/movies
name: movies name: movies
- mountPath: /media/tv-shows
name: tvshows
- mountPath: /media/music
name: music
volumes: volumes:
- name: config - name: config
persistentVolumeClaim: persistentVolumeClaim:
claimName: '{{ .Release.Name }}-config' claimName: '{{ .Release.Name }}-config'
- name: movies - name: movies
persistentVolumeClaim: persistentVolumeClaim:
claimName: 'movies' claimName: movies
- name: tvshows
persistentVolumeClaim:
claimName: tvshows
- name: music
persistentVolumeClaim:
claimName: music

View File

@@ -2,5 +2,5 @@ image:
repository: docker.io/jellyfin/jellyfin repository: docker.io/jellyfin/jellyfin
tag: latest tag: latest
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
environment: dev environment: prod
subdomain: jellyfin subdomain: jellyfin

0
charts/apps/values.yaml Normal file
View File

3
charts/root/Chart.yaml Normal file
View File

@@ -0,0 +1,3 @@
apiVersion: v2
version: 1.0.0
name: root

View File

@@ -0,0 +1,32 @@
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: homelab-apps
namespace: '{{ .Values.env }}-argo'
spec:
generators:
- directory:
path: charts/apps
recurse: false
include: '.*'
filter: |
.is_dir == true and (.path | endswith(".disabled") | not)
template:
metadata:
name: '{{path.basename}}'
spec:
project: default
source:
repoURL: '{{ .Values.repo }}'
targetRevision: '{{ .Values.ref }}'
path: charts/apps/{{path.basename}}
helm:
values: |
global: {{ .Values.global | toYaml | nindent 14 }}
destination:
server: https://kubernetes.default.svc
namespace: '{{ .Values.globals.env }}'
syncPolicy:
automated:
prune: true
selfHeal: true

View File

@@ -0,0 +1,21 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: homelab-root
namespace: '{{ .Values.globals.env }}-argo'
spec:
project: default
source:
repoURL: '{{ .Values.repo }}'
targetRevision: '{{ .Values.ref }}'
path: charts/root
helm:
valueFiles:
- values.yaml
destination:
server: https://kubernetes.default.svc
namespace: '{{ .Values.globals.env }}-argo'
syncPolicy:
automated:
prune: true
selfHeal: true

4
charts/root/values.yaml Normal file
View File

@@ -0,0 +1,4 @@
globals:
env: prod
repo: https://github.com/morten-olsen/homelab-operator.git
ref: HEAD

View File

@@ -1,7 +1,7 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolume kind: PersistentVolume
metadata: metadata:
name: tv-shows name: tvshows
labels: labels:
type: nfs type: nfs
spec: spec:
@@ -13,14 +13,14 @@ spec:
storageClassName: manual storageClassName: manual
hostPath: null hostPath: null
nfs: nfs:
path: '{{ .Values.tv-shows.path }}' path: '{{ .Values.tvshows.path }}'
server: '{{ .Values.host }}' server: '{{ .Values.host }}'
readOnly: true readOnly: true
--- ---
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: tv-shows name: tvshows
spec: spec:
storageClassName: manual storageClassName: manual
accessModes: accessModes:

View File

@@ -1,11 +1,11 @@
host: 192.168.20.106 host: 192.168.20.106
movies: movies:
path: /mnt/HDD/Movies path: /mnt/HDD/Movies
tv-shows: tvshows:
path: /mnt/HDD/TV-Shows path: /mnt/HDD/TV-Shows
music: music:
path: /mnt/HDD/Music2 path: /mnt/HDD/Music2
books: books:
path: /mnt/HDD/Books path: /mnt/HDD/Books
podcats: podcasts:
path: /mnt/HDD/Podcasts path: /mnt/HDD/Podcasts

View File

@@ -6,9 +6,9 @@ metadata:
apiVersion: homelab.mortenolsen.pro/v1 apiVersion: homelab.mortenolsen.pro/v1
kind: Environment kind: Environment
metadata: metadata:
name: dev name: prod
spec: spec:
domain: mortenolsen.net domain: olsen.cloud
networkIp: 192.168.64.2 networkIp: 192.168.20.180
tls: tls:
issuer: lets-encrypt-prod issuer: lets-encrypt-prod

View File

@@ -4,16 +4,10 @@ metadata:
name: homelab-operator name: homelab-operator
build: build:
# This tells Skaffold to build the image locally using your Docker daemon. cluster: {}
local:
push: false
# This is the crucial part for your workflow. Instead of pushing to a
# registry, it loads the built image directly into your cluster's nodes.
# load: true
artifacts: artifacts:
# Defines the image to build. It matches the placeholder in deployment.yaml.
- image: homelaboperator - image: homelaboperator
context: . # The build context is the root directory context: .
docker: docker:
dockerfile: Dockerfile dockerfile: Dockerfile