1 Commits

Author SHA1 Message Date
cb625f131a chore(deps): update redis docker tag to v8 2025-12-21 02:14:08 +00:00
26 changed files with 269 additions and 85 deletions

View File

@@ -16,7 +16,7 @@ jobs:
container: ghcr.io/renovatebot/renovate:latest
steps:
- name: Check out repository code
uses: actions/checkout@v7
uses: actions/checkout@v4
- name: Run Renovate CLI
run: |
renovate

View File

@@ -48,12 +48,6 @@ Retrieve public/private keys (*store these on a **secure** location!*):
kubectl get secret -n kube-system -l sealedsecrets.bitnami.com/sealed-secrets-key -o yaml > BitnamiSealedSecrets.masterkey.yml
```
Restoring public/private keys:
```shell
kubectl apply -f BitnamiSealedSecrets.masterkey.yml
kubectl rollout restart deployment -n kube-system sealed-secrets-controller
```
### 5) Services
##### 5.1) [Gitea](https://gitea.io/) <small>(git repository)</small>
*Required for all other workloads*

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: argus

View File

@@ -0,0 +1,18 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: argus
namespace: argo-cd
spec:
destination:
namespace: argus
server: https://kubernetes.default.svc
project: default
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true
sources:
- repoURL: https://code.spamasaurus.com/djpbessems/Kubernetes.K3s.installLog
path: services/Argus
targetRevision: HEAD

View File

@@ -0,0 +1,38 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: argus
namespace: argus
labels:
app: argus
spec:
replicas: 1
selector:
matchLabels:
app: argus
template:
metadata:
labels:
app: argus
spec:
serviceAccountName: argus
containers:
- name: argus
image: releaseargus/argus:0.21.0
args:
- -config.file=/app/config/config.yml
ports:
- name: web
containerPort: 8080
volumeMounts:
- name: csismb-argus-config
mountPath: /app/config
- name: csismb-argus-data
mountPath: /app/data
volumes:
- name: csismb-argus-config
persistentVolumeClaim:
claimName: csismb-argus-config
- name: csismb-argus-data
persistentVolumeClaim:
claimName: csismb-argus-data

View File

@@ -0,0 +1,18 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: argus
namespace: argus
spec:
entryPoints:
- websecure
routes:
- match: Host(`release.spamasaurus.com`)
kind: Rule
services:
- name: argus
port: 8080
middlewares:
- name: 2fa-authentication@file
- name: security-headers@file
# - name: compression@file

View File

@@ -0,0 +1,31 @@
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: smb.csi.k8s.io
name: csismb-argus-config
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: csismb-argus-config
mountOptions:
- dir_mode=0777
- file_mode=0777
- nobrl
- cache=strict
- mfsymlinks
- noserverino # required to prevent data corruption
csi:
driver: smb.csi.k8s.io
# volumeHandle format: {smb-server-address}#{sub-dir-name}#{share-name}
# make sure this value is unique for every share in the cluster
volumeHandle: 192.168.154.195#argus#config
volumeAttributes:
source: //192.168.154.195/K3s.Volumes
subDir: argus/config
nodeStageSecretRef:
name: smb-credentials
namespace: argus

View File

@@ -0,0 +1,31 @@
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: smb.csi.k8s.io
name: csismb-argus-data
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: csismb-argus-data
mountOptions:
- dir_mode=0777
- file_mode=0777
- nobrl
- cache=strict
- mfsymlinks
- noserverino # required to prevent data corruption
csi:
driver: smb.csi.k8s.io
# volumeHandle format: {smb-server-address}#{sub-dir-name}#{share-name}
# make sure this value is unique for every share in the cluster
volumeHandle: 192.168.154.195#argus#data
volumeAttributes:
source: //192.168.154.195/K3s.Volumes
subDir: argus/data
nodeStageSecretRef:
name: smb-credentials
namespace: argus

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: csismb-argus-config
namespace: argus
spec:
accessModes:
- ReadWriteMany
storageClassName: csismb-argus-config
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: csismb-argus-data
namespace: argus
spec:
accessModes:
- ReadWriteMany
storageClassName: csismb-argus-data
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,16 @@
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
creationTimestamp: null
name: smb-credentials
namespace: argus
spec:
encryptedData:
password: AgB8gU7Lj+Pn5B/oC8HtyKnKUzSvB7NRvxJOC2UmKjt3hj3pcRmfKrEh2khkcfSksb6x3f4ttIxYV2uFsXJfL4Wvi6zhsgvfgUHT12oD1/fuxD0LvHCm9otlGp8yyiQu5mPrFBdsGJswreBY53sD0UUdgu2riAlX0ESm+xKhzDJ6eSM8/Iz9Dq4GIhivLZ3OcZJw9hbgbelICIgvuxJZ3bWLfakPdeNDQUoayZuG3Z4GW0KPiqOMyaWz1/rljMHFaZHnFaszgKobwzPihsWWAnXEWmn54fwVBqfe/jNIo8CBvjlZGnMzinaS5lKTHObEVIG+F0XRI5VNFPa89NbsGKN71HJMFYU729lzdl58yy6B/5K789JRtxWUi/8I/7H8kLZWzUhUOqAcmLpVHKWnkH0Ub4MLtDyAaTJam5HqTtsvPDMW3+njiC+8vxC3n0X7q7pzAQQzM5JPZ7G/On6irFKe4LryfrphHiCB/gyJlLpBMXUqKJ4MvzUQU8G8e8W3OLMbtPl0O6oFuFxD8bUA4gdkoPO04bxlLvRmxlmavkbA0vFi60L6eyIOq5yzxvuEd7tzyD7SEO49hb8zW/LS/+H/PE/fCVT6crn+UbNOhgyaHR8pxlNpy6Z4PAti3mG8ZOtKVD0mx6fm8BCPHfWVFyC5YO6kNI285o4uuqsQI+SSZ+zkxwlFwvLcp1RdfJZFLUNyrQm3mlvMUY9xjZANlCHZ
username: AgB67La0V5HRLzZ1RqR0Y0nufYKq3z0SK/go4AQ0aaZwQEE/mIy0c6xhdkwup7ava4PzTyOavEEQoluhojOcrVTz9qKUHoMQHcnhS3NagBc/QCeA+2rL15qw9ZUn5+sSU4OhM3UNCTy2jF1kMoXr2cdCi9pALRdAXPLhrccPoaItmWkA4bMRIe3on78BQUOlhF+zJjcMciPlDo+9ywY8ArShMHj5YlRgWQ6uOJmIH5FFp2BcXKP5d0gALoVQ4/Ek4zIkk4YubtO1C0sqfbvkTW+oxeymUSLd2PddGyF18iohfrgje6PQAvvtkDBX2hUuVcp8h2oFj2JkeZld4neOYpDFbdKwe1aGep24GxbYIt24j+iFfs8txqXhQQsHJWJmwHNB2798gPvjIxPC+G90V4/drsjr7KiAgdWKUaqU5JMDVo2HTSplyWpS1LZIGQmloafWiAXvTWQVIEg2044TXQIq2X7k3npbHU/KcWmlMqR1546QawsZAnohWaOIskqEBkG7nXx/eeYk7LVppP2TqdRtt+VfuvptXgfFhkOB2wUSOwqWH7OkQu/k3jtPR0FVJni+Hc1/+fKfuStwvEX+/1bdjZuS8DUGelOb1d/pXrHw+KypfzXcOoDaO31hJMQOEalXZc2GNJleAvLAxv34s8fFWKWvnEXqwYIaNwRPvX64GtencJwyFo/rdO/HH7gVIhA2DCDQwB0=
template:
metadata:
creationTimestamp: null
name: smb-credentials
namespace: argus
type: Opaque

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: argus
namespace: argus
spec:
ports:
- protocol: TCP
name: web
port: 8080
selector:
app: argus

View File

@@ -0,0 +1,7 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: argus
namespace: argus
labels:
app: argus

View File

@@ -32,7 +32,7 @@ spec:
- name: csismb-authelia-conf
mountPath: /config
- name: redis
image: redis:7-alpine
image: redis:8-alpine
args:
- redis-server
- --requirepass

View File

@@ -28,4 +28,4 @@ spec:
subDir: ddclient/config
nodeStageSecretRef:
name: smb-credentials
namespace: ddclient
namespace: argus

View File

@@ -22,7 +22,7 @@ spec:
- repoURL: https://dl.gitea.com/charts/
chart: gitea
# targetRevision: 11.0.0
targetRevision: 12.5.0
targetRevision: 12.4.0
helm:
valueFiles:
- $values/services/Gitea/values.yaml

View File

@@ -70,15 +70,12 @@ spec:
- mountPath: /data
name: data-act-runner
- name: dind
# image: "docker:28.3.2-dind"
image: "docker:29.7.2-dind"
image: "docker:28.3.2-dind"
imagePullPolicy: IfNotPresent
args:
- dockerd
- --host=tcp://127.0.0.1:2375
- --host=unix:///var/run/docker.sock
- --mtu=1450
- --default-network-opt=bridge=com.docker.network.driver.mtu=1450
env:
- name: DOCKER_TLS_VERIFY
value: ""

View File

@@ -7,7 +7,7 @@ spec:
entryPoints:
- websecure
routes:
- match: Host(`bessems.com`) || Host(`bessems.eu`) || Host(`gabaldon.eu`) || Host(`gabaldon.nl`) || Host(`spamasaurus.com`)
- match: Host(`bessems.com`) || Host(`bessems.eu`) || Host(`gabaldon.eu`) || Host(`gabaldon.nl`) || Host(`sn.itch.fyi`) || Host(`spamasaurus.com`)
kind: Rule
services:
- name: lighttpd

View File

@@ -17,7 +17,7 @@ spec:
spec:
containers:
- name: app
image: neosmemo/memos:0.26
image: neosmemo/memos:0.25
imagePullPolicy: Always
env:
- name: MEMOS_PORT

View File

@@ -13,15 +13,12 @@ spec:
syncOptions:
- CreateNamespace=true
sources:
- repoURL: https://code.spamasaurus.com/djpbessems/Kubernetes.K3s.installLog
path: services/PVR/Jellyfin
targetRevision: HEAD
- repoURL: https://code.spamasaurus.com/djpbessems/Kubernetes.K3s.installLog
path: services/PVR/Jellyfin/manifests
targetRevision: HEAD
- repoURL: https://jellyfin.github.io/jellyfin-helm
chart: jellyfin
targetRevision: 2.7.0
targetRevision: 2.5.0
helm:
valueFiles:
- $values/services/PVR/Jellyfin/values.yaml

View File

@@ -0,0 +1,57 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubectl-rolloutrestart
namespace: pvr
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kubectl-rolloutrestart
namespace: pvr
rules:
- apiGroups: ["apps", "extensions"]
resources: ["deployments", "statefulsets"]
verbs: ["get", "list", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: kubectl-rolloutrestart-pvr
namespace: pvr
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubectl-rolloutrestart
subjects:
- kind: ServiceAccount
name: kubectl-rolloutrestart
namespace: pvr
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: kubectl-rolloutrestart
namespace: pvr
spec:
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 1
successfulJobsHistoryLimit: 1
schedule: '30 2 * * *'
jobTemplate:
spec:
backoffLimit: 2
activeDeadlineSeconds: 600
template:
spec:
serviceAccountName: kubectl-rolloutrestart
restartPolicy: Never
containers:
- name: kubectl
image: bitnami/kubectl
command:
- '/bin/bash'
- '-c'
args:
- for workload in `kubectl get deployments -n pvr --no-headers | cut -d " " -f 1`; do kubectl rollout restart deployment -n pvr $workload; done;
for workload in `kubectl get statefulsets -n pvr --no-headers | cut -d " " -f 1`; do kubectl rollout restart statefulsets -n pvr $workload; done;

View File

@@ -18,7 +18,7 @@ spec:
serviceAccountName: vaultwarden
containers:
- name: vaultwarden
image: vaultwarden/server:1.37.3
image: vaultwarden/server:1.33.2
env:
- name: ENABLE_DB_WAL
value: "false"

View File

@@ -13,7 +13,7 @@ spec:
sources:
- repoURL: https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
chart: csi-driver-smb
targetRevision: 1.20.3
targetRevision: 1.19.1
helm:
valueFiles:
- $values/storage/csi-driver-smb/values.yaml

View File

@@ -9,12 +9,10 @@ spec:
namespace: argo-cd
project: default
sources:
- repoURL: https://code.spamasaurus.com/djpbessems/Kubernetes.K3s.installLog
path: system/ArgoCD
targetRevision: HEAD
- repoURL: https://argoproj.github.io/argo-helm
chart: argo-cd
targetRevision: 9.7.1
# targetRevision: 8.1.2
targetRevision: 9.1.4
helm:
valueFiles:
- $values/system/ArgoCD/values.yaml

View File

@@ -1,58 +0,0 @@
apiVersion: network.harvesterhci.io/v1alpha1
kind: IPPool
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"network.harvesterhci.io/v1alpha1","kind":"IPPool","metadata":{"annotations":{},"name":"vmn-lan","namespace":"default"},"spec":{"ipv4Config":{"cidr":"192.168.154.0/24","dns":["192.168.154.200"],"leaseTime":86400,"pool":{"end":"192.168.154.99","exclude":["192.168.154.99"],"start":"192.168.154.50"},"router":"192.168.154.1","serverIP":"192.168.154.99"},"networkName":"default/vmn-lan"}}
creationTimestamp: "2025-12-29T22:22:23Z"
generation: 1
name: vmn-lan
namespace: default
resourceVersion: "277614389"
uid: 8400a6ec-9f7a-4570-934d-1ee3299e04aa
spec:
ipv4Config:
cidr: 192.168.154.0/24
dns:
- 192.168.154.150
leaseTime: 86400
pool:
end: 192.168.154.99
exclude:
- 192.168.154.99
start: 192.168.154.50
router: 192.168.154.1
serverIP: 192.168.154.99
networkName: default/vmn-lan
status:
agentPodRef:
image: rancher/harvester-vm-dhcp-agent:v1.7.0
name: default-vmn-lan-agent
namespace: harvester-system
uid: fde98493-a67c-4279-b48e-f7a70ea089b7
conditions:
- lastUpdateTime: "2025-12-29T22:22:23Z"
status: "True"
type: Registered
- lastUpdateTime: "2025-12-29T22:23:00Z"
status: "True"
type: CacheReady
- lastUpdateTime: "2025-12-29T22:22:26Z"
status: "True"
type: AgentReady
- lastUpdateTime: "2025-12-29T22:22:23Z"
status: "False"
type: Stopped
ipv4:
allocated:
192.168.154.50: ce:73:61:52:b7:35
192.168.154.56: d2:f6:70:98:42:6e
192.168.154.57: ea:ad:6d:52:3e:b9
192.168.154.58: 9a:b4:56:2d:57:7d
192.168.154.66: c2:a3:f7:c4:13:95
192.168.154.87: 0a:59:bb:81:a7:6d
192.168.154.98: 0a:15:10:a2:78:22
192.168.154.99: EXCLUDED
available: 42
used: 7
lastUpdate: "2025-12-30T05:10:35Z"

View File

@@ -11,7 +11,7 @@ spec:
syncPolicy:
automated: {}
sources:
- repoURL: https://bitnami.github.io/sealed-secrets
- repoURL: https://bitnami-labs.github.io/sealed-secrets
chart: sealed-secrets
targetRevision: 2.17.7
helm: