Compare commits
8 Commits
57eb77917a
...
fresh-star
| Author | SHA1 | Date | |
|---|---|---|---|
| 181e78df04 | |||
| 1503109d59 | |||
| e777e5a3db | |||
| fe0d090ebc | |||
| 9b8434dc8e | |||
| e90a1807ea | |||
| 08a423d9b0 | |||
| 817cdd2ec7 |
@@ -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.
|
||||
|
||||
<img src="https://woodpecker.lumpiasty.xyz/api/badges/2/status.svg" alt="Pipeline status">
|
||||
|
||||
## 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.
|
||||
|
||||
@@ -6,12 +6,10 @@ resources:
|
||||
- authentik
|
||||
- gitea
|
||||
- renovate
|
||||
- librechat
|
||||
- frigate
|
||||
- llama
|
||||
- immich
|
||||
- nas
|
||||
- searxng
|
||||
- ispeak3
|
||||
- openwebui
|
||||
- woodpecker
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- release.yaml
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: librechat
|
||||
@@ -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
|
||||
@@ -18,7 +18,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: llama-swap
|
||||
image: ghcr.io/mostlygeek/llama-swap:v199-vulkan-b8637
|
||||
image: ghcr.io/mostlygeek/llama-swap:v199-vulkan-b8660
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /app/llama-swap
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
use_default_settings: true
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: searxng
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -18,7 +18,7 @@ spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: cert-manager-webhook-ovh
|
||||
version: 0.9.5
|
||||
version: 0.9.6
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: cert-manager-webhook-ovh
|
||||
|
||||
Reference in New Issue
Block a user