Compare commits

...

19 Commits

Author SHA1 Message Date
9c59f71242 Update renovate/renovate Docker tag to v43.108.2 2026-04-07 15:54:18 +00:00
91678b2ff8 lower root kustomizations auto sync interval
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
2026-04-07 03:30:52 +02:00
02b251db8e Merge pull request 'chore(deps): update helm release cloudnative-pg to v0.28.0' (#192) from renovate/cloudnative-pg-0.x into fresh-start
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
Reviewed-on: #192
2026-04-07 01:21:24 +00:00
07c1542d87 Merge pull request 'chore(deps): update renovate/renovate docker tag to v43.104.8' (#187) from renovate/renovate-renovate-43.x into fresh-start
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
Reviewed-on: #187
2026-04-07 01:20:09 +00:00
44885753e5 make ssd lvm default storage class
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
2026-04-07 02:27:06 +02:00
dfc62ef480 enable open webui terminals
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
2026-04-07 02:04:06 +02:00
67cec3fd48 make pipeline status a link to woodpecker 2026-04-07 02:04:06 +02:00
6887e6f6e7 Merge pull request 'chore(deps): update ghcr.io/mostlygeek/llama-swap docker tag to v199-vulkan-b8667' (#201) from renovate/ghcr.io-mostlygeek-llama-swap-199.x into fresh-start
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
2026-04-07 00:00:36 +00:00
2e89f9b31c chore(deps): update renovate/renovate docker tag to v43.104.8 2026-04-07 00:00:35 +00:00
69497a35e3 chore(deps): update ghcr.io/mostlygeek/llama-swap docker tag to v199-vulkan-b8667 2026-04-07 00:00:32 +00:00
eb24f62828 Merge pull request 'chore(deps): update helm release open-webui to v13' (#195) from renovate/open-webui-13.x into fresh-start
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
Reviewed-on: #195
2026-04-07 00:00:07 +00:00
1af29ef67c Merge pull request 'chore(deps): update alpine/k8s docker tag to v1.35.3' (#199) from renovate/alpine-k8s-1.x into fresh-start
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
Reviewed-on: #199
2026-04-06 21:48:51 +00:00
181e78df04 Add proud pipeline status to top of README
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
2026-04-06 23:42:09 +02:00
1503109d59 remove unused searx and librechat
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
2026-04-06 23:28:03 +02:00
e777e5a3db Merge pull request 'chore(deps): update ghcr.io/mostlygeek/llama-swap docker tag to v199-vulkan-b8660' (#200) from renovate/ghcr.io-mostlygeek-llama-swap-199.x into fresh-start
All checks were successful
ci/woodpecker/push/flux-reconcile-source Pipeline was successful
2026-04-06 00:00:44 +00:00
fe0d090ebc chore(deps): update ghcr.io/mostlygeek/llama-swap docker tag to v199-vulkan-b8660 2026-04-06 00:00:41 +00:00
600f9442d7 chore(deps): update alpine/k8s docker tag to v1.35.3 2026-04-05 00:00:44 +00:00
977722f1b5 chore(deps): update helm release open-webui to v13 2026-04-03 00:00:40 +00:00
d0ef8f30b9 chore(deps): update helm release cloudnative-pg to v0.28.0 2026-04-02 00:00:33 +00:00
21 changed files with 16 additions and 287 deletions

View File

@@ -20,7 +20,7 @@ steps:
- export VAULT_TOKEN=$(cat /woodpecker/.vault_id) - export VAULT_TOKEN=$(cat /woodpecker/.vault_id)
- bao write -format json -f /kubernetes/creds/flux-reconcile > /woodpecker/kube_credentials - bao write -format json -f /kubernetes/creds/flux-reconcile > /woodpecker/kube_credentials
- name: Construct Kubeconfig - name: Construct Kubeconfig
image: alpine/k8s:1.32.13 image: alpine/k8s:1.35.3
environment: environment:
KUBECONFIG: /woodpecker/kubeconfig KUBECONFIG: /woodpecker/kubeconfig
commands: commands:

View File

@@ -2,6 +2,8 @@
This repo contains configuration and documentation for my homelab setup, which is based on Talos OS for Kubernetes cluster and MikroTik router. This repo contains configuration and documentation for my homelab setup, which is based on Talos OS for Kubernetes cluster and MikroTik router.
[<img src="https://woodpecker.lumpiasty.xyz/api/badges/2/status.svg" alt="Pipeline status">](https://woodpecker.lumpiasty.xyz/repos/2)
## Architecture ## Architecture
Physical setup consists of MikroTik router which connects to the internet and serves as a gateway for the cluster and other devices in the home network as shown in the diagram below. Physical setup consists of MikroTik router which connects to the internet and serves as a gateway for the cluster and other devices in the home network as shown in the diagram below.

View File

@@ -6,12 +6,10 @@ resources:
- authentik - authentik
- gitea - gitea
- renovate - renovate
- librechat
- frigate - frigate
- llama - llama
- immich - immich
- nas - nas
- searxng
- ispeak3 - ispeak3
- openwebui - openwebui
- woodpecker - woodpecker

View File

@@ -1,5 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- release.yaml

View File

@@ -1,5 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: librechat

View File

@@ -1,120 +0,0 @@
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: dynomite567-charts
namespace: librechat
spec:
interval: 24h
url: https://dynomite567.github.io/helm-charts/
---
# apiVersion: helm.toolkit.fluxcd.io/v2
# kind: HelmRelease
# metadata:
# name: librechat
# namespace: librechat
# spec:
# interval: 30m
# chart:
# spec:
# chart: librechat
# version: 1.9.1
# sourceRef:
# kind: HelmRepository
# name: dynomite567-charts
# values:
# global:
# librechat:
# existingSecretName: librechat
# librechat:
# configEnv:
# PLUGIN_MODELS: null
# ALLOW_REGISTRATION: "false"
# TRUST_PROXY: "1"
# DOMAIN_CLIENT: https://librechat.lumpiasty.xyz
# SEARCH: "true"
# existingSecretName: librechat
# configYamlContent: |
# version: 1.0.3
# endpoints:
# custom:
# - name: "Llama.cpp"
# apiKey: "llama"
# baseURL: "http://llama.llama.svc.cluster.local:11434/v1"
# models:
# default: [
# "DeepSeek-R1-0528-Qwen3-8B-GGUF",
# "Qwen3-8B-GGUF",
# "Qwen3-8B-GGUF-no-thinking",
# "gemma3n-e4b",
# "gemma3-12b",
# "gemma3-12b-q2",
# "gemma3-12b-novision",
# "gemma3-4b",
# "gemma3-4b-novision",
# "Qwen3-4B-Thinking-2507",
# "Qwen3-4B-Thinking-2507-long-ctx",
# "Qwen2.5-VL-7B-Instruct-GGUF",
# "Qwen2.5-VL-32B-Instruct-GGUF-IQ1_S",
# "Qwen2.5-VL-32B-Instruct-GGUF-Q2_K_L",
# "Qwen3-VL-2B-Instruct-GGUF",
# "Qwen3-VL-2B-Instruct-GGUF-unslothish",
# "Qwen3-VL-2B-Thinking-GGUF",
# "Qwen3-VL-4B-Instruct-GGUF",
# "Qwen3-VL-4B-Instruct-GGUF-unslothish",
# "Qwen3-VL-4B-Thinking-GGUF",
# "Qwen3-VL-8B-Instruct-GGUF",
# "Qwen3-VL-8B-Instruct-GGUF-unslothish",
# "Qwen3-VL-8B-Thinking-GGUF",
# "Huihui-Qwen3-VL-8B-Instruct-abliterated-GGUF",
# "Huihui-Qwen3-VL-8B-Thinking-abliterated-GGUF"
# ]
# titleConvo: true
# titleModel: "gemma3-4b-novision"
# summarize: false
# summaryModel: "gemma3-4b-novision"
# forcePrompt: false
# modelDisplayLabel: "Llama.cpp"
# # ✨ IMPORTANT: let llama-swap/llama-server own all these
# dropParams:
# - "temperature"
# - "top_p"
# - "top_k"
# - "presence_penalty"
# - "frequency_penalty"
# - "stop"
# - "max_tokens"
# imageVolume:
# enabled: true
# size: 10G
# accessModes: ReadWriteOnce
# storageClassName: mayastor-single-hdd
# ingress:
# enabled: true
# className: nginx-ingress
# annotations:
# cert-manager.io/cluster-issuer: letsencrypt
# nginx.ingress.kubernetes.io/proxy-body-size: "0"
# nginx.ingress.kubernetes.io/proxy-buffering: "false"
# nginx.ingress.kubernetes.io/proxy-read-timeout: 30m
# hosts:
# - host: librechat.lumpiasty.xyz
# paths:
# - path: /
# pathType: ImplementationSpecific
# tls:
# - hosts:
# - librechat.lumpiasty.xyz
# secretName: librechat-ingress
# mongodb:
# persistence:
# storageClass: mayastor-single-hdd
# meilisearch:
# persistence:
# storageClass: mayastor-single-hdd
# auth:
# existingMasterKeySecret: librechat

View File

@@ -18,7 +18,7 @@ spec:
spec: spec:
containers: containers:
- name: llama-swap - name: llama-swap
image: ghcr.io/mostlygeek/llama-swap:v199-vulkan-b8643 image: ghcr.io/mostlygeek/llama-swap:v199-vulkan-b8667
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
command: command:
- /app/llama-swap - /app/llama-swap

View File

@@ -18,7 +18,7 @@ spec:
chart: chart:
spec: spec:
chart: open-webui chart: open-webui
version: 12.13.0 version: 13.0.1
sourceRef: sourceRef:
kind: HelmRepository kind: HelmRepository
name: open-webui name: open-webui
@@ -45,6 +45,9 @@ spec:
enabled: true enabled: true
existingClaim: openwebui-pipelines-lvmhdd existingClaim: openwebui-pipelines-lvmhdd
terminals:
enabled: true
# SSO with Authentik # SSO with Authentik
extraEnvVars: extraEnvVars:
- name: WEBUI_URL - name: WEBUI_URL

View File

@@ -15,7 +15,7 @@ spec:
- name: renovate - name: renovate
# Update this to the latest available and then enable Renovate on # Update this to the latest available and then enable Renovate on
# the manifest # the manifest
image: renovate/renovate:43.95.0-full image: renovate/renovate:43.108.2-full
envFrom: envFrom:
- secretRef: - secretRef:
name: renovate-gitea-token name: renovate-gitea-token

View File

@@ -1 +0,0 @@
use_default_settings: true

View File

@@ -1,42 +0,0 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: searxng
namespace: searxng
spec:
replicas: 1
selector:
matchLabels:
app: searxng
template:
metadata:
labels:
app: searxng
spec:
containers:
- name: searxng
image: searxng/searxng:2025.8.12-6b1516d
ports:
- containerPort: 8080
env:
- name: SEARXNG_SECRET
valueFrom:
secretKeyRef:
name: searxng-secret
key: SEARXNG_SECRET
optional: false
volumeMounts:
- name: config-volume
mountPath: /etc/searxng/settings.yml
subPath: settings.yml
readOnly: true
- name: searxng-persistent-data
mountPath: /var/cache/searxng
volumes:
- name: config-volume
configMap:
name: searxng-config
- name: searxng-persistent-data
persistentVolumeClaim:
claimName: searxng-persistent-data-lvmhdd

View File

@@ -1,25 +0,0 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: searxng
name: searxng
annotations:
cert-manager.io/cluster-issuer: letsencrypt
spec:
ingressClassName: nginx-ingress
rules:
- host: searxng.lumpiasty.xyz
http:
paths:
- backend:
service:
name: searxng
port:
number: 8080
path: /
pathType: Prefix
tls:
- hosts:
- searxng.lumpiasty.xyz
secretName: searxng-ingress

View File

@@ -1,13 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- pvc.yaml
- deployment.yaml
- service.yaml
- ingress.yaml
configMapGenerator:
- name: searxng-config
namespace: searxng
files:
- settings.yml=configs/settings.yml

View File

@@ -1,5 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: searxng

View File

@@ -1,46 +0,0 @@
---
apiVersion: local.openebs.io/v1alpha1
kind: LVMVolume
metadata:
labels:
kubernetes.io/nodename: anapistula-delrosalae
name: searxng-persistent-data-lvmhdd
namespace: openebs
spec:
capacity: 1Gi
ownerNodeID: anapistula-delrosalae
shared: "yes"
thinProvision: "no"
vgPattern: ^openebs-hdd$
volGroup: openebs-hdd
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: searxng-persistent-data-lvmhdd
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: hdd-lvmpv
volumeMode: Filesystem
csi:
driver: local.csi.openebs.io
fsType: btrfs
volumeHandle: searxng-persistent-data-lvmhdd
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: searxng-persistent-data-lvmhdd
namespace: searxng
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: hdd-lvmpv
volumeName: searxng-persistent-data-lvmhdd

View File

@@ -1,14 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: searxng
namespace: searxng
spec:
selector:
app: searxng
ports:
- protocol: TCP
port: 8080
targetPort: 8080
type: ClusterIP

View File

@@ -4,7 +4,7 @@ metadata:
name: apps name: apps
namespace: flux-system namespace: flux-system
spec: spec:
interval: 10m0s interval: 24h
sourceRef: sourceRef:
kind: GitRepository kind: GitRepository
name: flux-system name: flux-system

View File

@@ -6,7 +6,7 @@ metadata:
name: flux-system name: flux-system
namespace: flux-system namespace: flux-system
spec: spec:
interval: 1m0s interval: 24h
ref: ref:
branch: fresh-start branch: fresh-start
secretRef: secretRef:
@@ -19,7 +19,7 @@ metadata:
name: flux-system name: flux-system
namespace: flux-system namespace: flux-system
spec: spec:
interval: 10m0s interval: 24h
path: ./cluster path: ./cluster
prune: true prune: true
sourceRef: sourceRef:

View File

@@ -4,7 +4,7 @@ metadata:
name: infra name: infra
namespace: flux-system namespace: flux-system
spec: spec:
interval: 10m0s interval: 24h
sourceRef: sourceRef:
kind: GitRepository kind: GitRepository
name: flux-system name: flux-system

View File

@@ -3,6 +3,8 @@ apiVersion: storage.k8s.io/v1
kind: StorageClass kind: StorageClass
metadata: metadata:
name: ssd-lvmpv name: ssd-lvmpv
annotations:
storageclass.kubernetes.io/is-default-class: "true"
parameters: parameters:
storage: "lvm" storage: "lvm"
volgroup: "openebs-ssd" volgroup: "openebs-ssd"

View File

@@ -23,7 +23,7 @@ spec:
chart: chart:
spec: spec:
chart: cloudnative-pg chart: cloudnative-pg
version: 0.27.1 version: 0.28.0
sourceRef: sourceRef:
kind: HelmRepository kind: HelmRepository
name: cnpg name: cnpg