Initial Kozel's homelab infrastructure commit.
This commit is contained in:
Vendored
BIN
Binary file not shown.
@@ -0,0 +1,37 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: cloudflared
|
||||
namespace: cloudflare
|
||||
spec:
|
||||
replicas: 2
|
||||
selector:
|
||||
matchLabels:
|
||||
app: cloudflared
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: cloudflared
|
||||
spec:
|
||||
containers:
|
||||
- name: cloudflared
|
||||
image: cloudflare/cloudflared:latest
|
||||
args:
|
||||
- tunnel
|
||||
- --no-autoupdate
|
||||
- run
|
||||
- --token
|
||||
- $(TUNNEL_TOKEN)
|
||||
env:
|
||||
- name: TUNNEL_TOKEN
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: cloudflared-token
|
||||
key: token
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 64Mi
|
||||
limits:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
@@ -0,0 +1,79 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: dashboard
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: homepage-data
|
||||
namespace: dashboard
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 2Gi
|
||||
storageClassName: local-path
|
||||
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: homepage
|
||||
namespace: dashboard
|
||||
|
||||
spec:
|
||||
replicas: 1
|
||||
|
||||
selector:
|
||||
matchLabels:
|
||||
app: homepage
|
||||
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: homepage
|
||||
|
||||
spec:
|
||||
containers:
|
||||
- name: homepage
|
||||
|
||||
image: ghcr.io/gethomepage/homepage:latest
|
||||
|
||||
env:
|
||||
- name: HOMEPAGE_ALLOWED_HOSTS
|
||||
value: homepage.kozelgaming.cz
|
||||
|
||||
- name: LOG_TARGETS
|
||||
value: stdout
|
||||
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
|
||||
volumeMounts:
|
||||
- name: homepage-data
|
||||
mountPath: /app/config
|
||||
|
||||
volumes:
|
||||
- name: homepage-data
|
||||
persistentVolumeClaim:
|
||||
claimName: homepage-data
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: homepage
|
||||
namespace: dashboard
|
||||
|
||||
spec:
|
||||
type: ClusterIP
|
||||
|
||||
selector:
|
||||
app: homepage
|
||||
|
||||
ports:
|
||||
- port: 3000
|
||||
targetPort: 3000
|
||||
@@ -0,0 +1,18 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: grafana-ingress
|
||||
namespace: monitoring
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
rules:
|
||||
- host: grafana.lan
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: kube-prometheus-stack-grafana
|
||||
port:
|
||||
number: 80
|
||||
@@ -0,0 +1,18 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: homelab-ingress
|
||||
namespace: others
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
rules:
|
||||
- host: metube.lan
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: metube
|
||||
port:
|
||||
number: 8081
|
||||
@@ -0,0 +1,18 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: myspeed-ingress
|
||||
namespace: monitoring
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
rules:
|
||||
- host: myspeed.lan
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: myspeed
|
||||
port:
|
||||
number: 5216
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"apiVersion": "v1",
|
||||
"kind": "Namespace",
|
||||
"metadata": {
|
||||
"annotations": {
|
||||
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"longhorn-system\"}}\n"
|
||||
},
|
||||
"creationTimestamp": "2026-05-08T21:01:26Z",
|
||||
"deletionTimestamp": "2026-05-09T10:52:14Z",
|
||||
"labels": {
|
||||
"kubernetes.io/metadata.name": "longhorn-system",
|
||||
"pod-security.kubernetes.io/audit": "privileged",
|
||||
"pod-security.kubernetes.io/enforce": "privileged",
|
||||
"pod-security.kubernetes.io/warn": "privileged"
|
||||
},
|
||||
"name": "longhorn-system",
|
||||
"resourceVersion": "290430",
|
||||
"uid": "98b2816d-d69f-4fd7-a24c-a9c6addc6a26"
|
||||
},
|
||||
"spec": {},
|
||||
"status": {
|
||||
"conditions": [
|
||||
{
|
||||
"lastTransitionTime": "2026-05-09T10:52:19Z",
|
||||
"message": "All resources successfully discovered",
|
||||
"reason": "ResourcesDiscovered",
|
||||
"status": "False",
|
||||
"type": "NamespaceDeletionDiscoveryFailure"
|
||||
},
|
||||
{
|
||||
"lastTransitionTime": "2026-05-09T10:52:19Z",
|
||||
"message": "All legacy kube types successfully parsed",
|
||||
"reason": "ParsedGroupVersions",
|
||||
"status": "False",
|
||||
"type": "NamespaceDeletionGroupVersionParsingFailure"
|
||||
},
|
||||
{
|
||||
"lastTransitionTime": "2026-05-09T10:52:59Z",
|
||||
"message": "Failed to delete all resource types, 5 remaining: Internal error occurred: failed calling webhook \"validator.longhorn.io\": failed to call webhook: Post \"https://longhorn-admission-webhook.longhorn-system.svc:9502/v1/webhook/validation?timeout=10s\": service \"longhorn-admission-webhook\" not found, Internal error occurred: failed calling webhook \"validator.longhorn.io\": failed to call webhook: Post \"https://longhorn-admission-webhook.longhorn-system.svc:9502/v1/webhook/validation?timeout=10s\": service \"longhorn-admission-webhook\" not found, Internal error occurred: failed calling webhook \"validator.longhorn.io\": failed to call webhook: Post \"https://longhorn-admission-webhook.longhorn-system.svc:9502/v1/webhook/validation?timeout=10s\": service \"longhorn-admission-webhook\" not found, Internal error occurred: failed calling webhook \"validator.longhorn.io\": failed to call webhook: Post \"https://longhorn-admission-webhook.longhorn-system.svc:9502/v1/webhook/validation?timeout=10s\": service \"longhorn-admission-webhook\" not found, Internal error occurred: failed calling webhook \"validator.longhorn.io\": failed to call webhook: Post \"https://longhorn-admission-webhook.longhorn-system.svc:9502/v1/webhook/validation?timeout=10s\": service \"longhorn-admission-webhook\" not found",
|
||||
"reason": "ContentDeletionFailed",
|
||||
"status": "True",
|
||||
"type": "NamespaceDeletionContentFailure"
|
||||
},
|
||||
{
|
||||
"lastTransitionTime": "2026-05-09T10:52:59Z",
|
||||
"message": "Some resources are remaining: engines.longhorn.io has 1 resource instances, snapshots.longhorn.io has 1 resource instances, volumeattachments.longhorn.io has 1 resource instances, volumes.longhorn.io has 1 resource instances",
|
||||
"reason": "SomeResourcesRemain",
|
||||
"status": "True",
|
||||
"type": "NamespaceContentRemaining"
|
||||
},
|
||||
{
|
||||
"lastTransitionTime": "2026-05-09T10:52:59Z",
|
||||
"message": "Some content in the namespace has finalizers remaining: longhorn.io in 4 resource instances",
|
||||
"reason": "SomeFinalizersRemain",
|
||||
"status": "True",
|
||||
"type": "NamespaceFinalizersRemaining"
|
||||
}
|
||||
],
|
||||
"phase": "Terminating"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: storage-test
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: test-volume
|
||||
namespace: storage-test
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
storageClassName: longhorn
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: test-pod
|
||||
namespace: storage-test
|
||||
spec:
|
||||
containers:
|
||||
- name: test
|
||||
image: busybox:1.36
|
||||
command: ["sh", "-c", "echo Longhorn funguje > /data/test.txt && sleep 3600"]
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /data
|
||||
volumes:
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: test-volume
|
||||
@@ -0,0 +1,17 @@
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: IPAddressPool
|
||||
metadata:
|
||||
name: k8s-lan-pool
|
||||
namespace: metallb-system
|
||||
spec:
|
||||
addresses:
|
||||
- 10.0.4.80-10.0.4.90
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: L2Advertisement
|
||||
metadata:
|
||||
name: k8s-lan-l2
|
||||
namespace: metallb-system
|
||||
spec:
|
||||
ipAddressPools:
|
||||
- k8s-lan-pool
|
||||
Vendored
BIN
Binary file not shown.
@@ -0,0 +1,32 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: myspeed
|
||||
namespace: monitoring
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: myspeed
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: myspeed
|
||||
spec:
|
||||
containers:
|
||||
- name: myspeed
|
||||
image: germannewsmaker/myspeed:latest
|
||||
ports:
|
||||
- containerPort: 5216
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: myspeed
|
||||
namespace: monitoring
|
||||
spec:
|
||||
selector:
|
||||
app: myspeed
|
||||
ports:
|
||||
- port: 5216
|
||||
targetPort: 5216
|
||||
@@ -0,0 +1,60 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: monitoring
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: uptime-kuma-data
|
||||
namespace: monitoring
|
||||
spec:
|
||||
storageClassName: longhorn
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 8Gi
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: uptime-kuma
|
||||
namespace: monitoring
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: Recreate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: uptime-kuma
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: uptime-kuma
|
||||
spec:
|
||||
containers:
|
||||
- name: uptime-kuma
|
||||
image: louislam/uptime-kuma:2.3.2
|
||||
ports:
|
||||
- containerPort: 3001
|
||||
volumeMounts:
|
||||
- name: uptime-kuma-data
|
||||
mountPath: /app/data
|
||||
volumes:
|
||||
- name: uptime-kuma-data
|
||||
persistentVolumeClaim:
|
||||
claimName: uptime-kuma-data
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: uptime-kuma
|
||||
namespace: monitoring
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app: uptime-kuma
|
||||
ports:
|
||||
- port: 3001
|
||||
targetPort: 3001
|
||||
@@ -0,0 +1,38 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: metube
|
||||
namespace: others
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: metube
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: metube
|
||||
spec:
|
||||
containers:
|
||||
- name: metube
|
||||
image: ghcr.io/alexta69/metube:latest
|
||||
ports:
|
||||
- containerPort: 8081
|
||||
env:
|
||||
- name: UID
|
||||
value: "1000"
|
||||
- name: GID
|
||||
value: "1000"
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: metube
|
||||
namespace: others
|
||||
spec:
|
||||
selector:
|
||||
app: metube
|
||||
ports:
|
||||
- port: 8081
|
||||
targetPort: 8081
|
||||
Vendored
BIN
Binary file not shown.
@@ -0,0 +1,22 @@
|
||||
authentik:
|
||||
secret_key: "mpREYM2Ad+5+WIgtAKYvLwDnC1hbp/r/en+SROa/xwKpmqwhYWH4LirhMk6XaAeu
|
||||
N8lga6oOBqMMmhzeWKn7/Q=="
|
||||
postgresql:
|
||||
host: "authentik-postgresql"
|
||||
user: "authentik"
|
||||
password: "9u3cbsYwH+YdI5Cib4K5iFGetg5QS1WtSBeVUlApWx0="
|
||||
name: "authentik"
|
||||
|
||||
postgresql:
|
||||
enabled: true
|
||||
auth:
|
||||
username: "authentik"
|
||||
password: "9u3cbsYwH+YdI5Cib4K5iFGetg5QS1WtSBeVUlApWx0="
|
||||
database: "authentik"
|
||||
|
||||
redis:
|
||||
enabled: true
|
||||
|
||||
server:
|
||||
ingress:
|
||||
enabled: false
|
||||
Reference in New Issue
Block a user