Compare commits

..

10 Commits

Author SHA1 Message Date
Gitea Actions Bot 0894fa44c6 Auto-update README with current k8s applications
Keycloak Terraform / Terraform (pull_request) Successful in 13s
Generated by CI/CD workflow on 2026-06-01 11:00:48

This PR updates the README.md file with the current list of applications found in the k8s/ directory structure.
2026-06-01 11:00:48 +00:00
ab f3b903f333 Fixed pasarguard internal connectivicty
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 7s
Check with kubeconform / lint (push) Successful in 7s
Auto-update README / Generate README and Create MR (push) Successful in 12s
2026-06-01 14:00:21 +03:00
ab a8a3bae597 Merge branch 'main' of ssh://gt.hexor.cy:30022/ab/homelab
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 7s
Check with kubeconform / lint (push) Successful in 5s
Auto-update README / Generate README and Create MR (push) Successful in 12s
2026-06-01 13:56:52 +03:00
ab 2212876d14 Fixed pasarguard internal connectivicty 2026-06-01 13:56:41 +03:00
ab f1acf53b08 Update terraform/keycloak/terraform.tfvars
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 7s
Keycloak Terraform / Terraform (push) Successful in 24s
2026-06-01 10:34:01 +00:00
ab 585614b493 Fixed DB string
Check with kubeconform / lint (push) Successful in 6s
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 12s
Auto-update README / Generate README and Create MR (push) Successful in 9s
2026-06-01 13:32:29 +03:00
ab cd5bf09395 Moved furumi to music
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 7s
Check with kubeconform / lint (push) Successful in 6s
Auto-update README / Generate README and Create MR (push) Successful in 7s
2026-06-01 13:25:20 +03:00
ab 5e8649b6fd Merge branch 'main' of ssh://gt.hexor.cy:30022/ab/homelab
Check with kubeconform / lint (push) Successful in 7s
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 10s
Auto-update README / Generate README and Create MR (push) Successful in 6s
2026-06-01 13:15:13 +03:00
ab 0d0f12af77 Fixed https-middleware and gitea. dropped authentik 2026-06-01 13:08:07 +03:00
ab 0e17b8d081 Update k8s/core/system-upgrade/plan.yaml
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 11s
Check with kubeconform / lint (push) Successful in 8s
Auto-update README / Generate README and Create MR (push) Successful in 9s
2026-06-01 09:18:09 +00:00
25 changed files with 62 additions and 501 deletions
+1 -2
View File
@@ -42,8 +42,7 @@ ArgoCD homelab project
| Application | Status |
| :--- | :---: |
| **comfyui** | [![comfyui](https://ag.hexor.cy/api/badge?name=comfyui&revision=true)](https://ag.hexor.cy/applications/argocd/comfyui) |
| **furumi-dev** | [![furumi-dev](https://ag.hexor.cy/api/badge?name=furumi-dev&revision=true)](https://ag.hexor.cy/applications/argocd/furumi-dev) |
| **furumi-server** | [![furumi-server](https://ag.hexor.cy/api/badge?name=furumi-server&revision=true)](https://ag.hexor.cy/applications/argocd/furumi-server) |
| **furumi** | [![furumi](https://ag.hexor.cy/api/badge?name=furumi&revision=true)](https://ag.hexor.cy/applications/argocd/furumi) |
| **gitea** | [![gitea](https://ag.hexor.cy/api/badge?name=gitea&revision=true)](https://ag.hexor.cy/applications/argocd/gitea) |
| **greece-notifier** | [![greece-notifier](https://ag.hexor.cy/api/badge?name=greece-notifier&revision=true)](https://ag.hexor.cy/applications/argocd/greece-notifier) |
| **hexound** | [![hexound](https://ag.hexor.cy/api/badge?name=hexound&revision=true)](https://ag.hexor.cy/applications/argocd/hexound) |
-20
View File
@@ -1,20 +0,0 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: furumi-server
namespace: argocd
spec:
project: apps
destination:
namespace: furumi-server
server: https://kubernetes.default.svc
source:
repoURL: ssh://git@gt.hexor.cy:30022/ab/homelab.git
targetRevision: HEAD
path: k8s/apps/furumi-server
syncPolicy:
automated:
selfHeal: true
prune: true
syncOptions:
- CreateNamespace=true
-75
View File
@@ -1,75 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: furumi-server
labels:
app: furumi-server
spec:
replicas: 1
selector:
matchLabels:
app: furumi-server
template:
metadata:
labels:
app: furumi-server
spec:
nodeSelector:
kubernetes.io/hostname: master.tail2fe2d.ts.net
containers:
- name: furumi-server
image: ultradesu/furumi-server:trunk
imagePullPolicy: Always
env:
- name: FURUMI_TOKEN
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: TOKEN
- name: FURUMI_OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_CLIENT_ID
- name: FURUMI_OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_CLIENT_SECRET
- name: FURUMI_OIDC_ISSUER_URL
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_ISSUER_URL
- name: FURUMI_OIDC_REDIRECT_URL
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_REDIRECT_URL
- name: FURUMI_OIDC_SESSION_SECRET
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_SESSION_SECRET
- name: FURUMI_ROOT
value: "/media"
- name: RUST_LOG
value: "info"
ports:
- name: grpc
containerPort: 50051
protocol: TCP
- name: metrics
containerPort: 9090
protocol: TCP
- name: web-ui
containerPort: 8080
protocol: TCP
volumeMounts:
- name: music
mountPath: /media
volumes:
- name: music
hostPath:
path: /k8s/media/downloads/Lidarr_Music
type: DirectoryOrCreate
@@ -1,65 +0,0 @@
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: furumi-ng-creds
spec:
target:
name: furumi-ng-creds
deletionPolicy: Delete
template:
type: Opaque
data:
TOKEN: |-
{{ .token }}
OIDC_CLIENT_ID: |-
{{ .client_id }}
OIDC_CLIENT_SECRET: |-
{{ .client_secret }}
OIDC_ISSUER_URL: https://idm.hexor.cy/application/o/furumi-ng-web/
OIDC_REDIRECT_URL: https://music.hexor.cy/auth/callback
OIDC_SESSION_SECRET: |-
{{ .session_secret }}
PG_STRING: |-
postgres://furumi:{{ .pg_pass }}@psql.psql.svc:5432/furumi
data:
- secretKey: token
sourceRef:
storeRef:
name: vaultwarden-login
kind: ClusterSecretStore
remoteRef:
key: b8b8c3a2-c3fe-42d3-9402-0ae305e1455f
property: fields[0].value
- secretKey: client_id
sourceRef:
storeRef:
name: vaultwarden-login
kind: ClusterSecretStore
remoteRef:
key: b8b8c3a2-c3fe-42d3-9402-0ae305e1455f
property: fields[1].value
- secretKey: client_secret
sourceRef:
storeRef:
name: vaultwarden-login
kind: ClusterSecretStore
remoteRef:
key: b8b8c3a2-c3fe-42d3-9402-0ae305e1455f
property: fields[2].value
- secretKey: session_secret
sourceRef:
storeRef:
name: vaultwarden-login
kind: ClusterSecretStore
remoteRef:
key: b8b8c3a2-c3fe-42d3-9402-0ae305e1455f
property: fields[3].value
- secretKey: pg_pass
sourceRef:
storeRef:
name: vaultwarden-login
kind: ClusterSecretStore
remoteRef:
key: 2a9deb39-ef22-433e-a1be-df1555625e22
property: fields[16].value
-59
View File
@@ -1,59 +0,0 @@
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: admin-strip
spec:
stripPrefix:
prefixes:
- /admin
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: furumi-tls-ingress
annotations:
ingressClassName: traefik
cert-manager.io/cluster-issuer: letsencrypt
traefik.ingress.kubernetes.io/router.middlewares: kube-system-https-redirect@kubernetescrd
acme.cert-manager.io/http01-edit-in-place: "true"
spec:
rules:
- host: music.hexor.cy
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: furumi-web-player
port:
number: 8080
tls:
- secretName: furumi-tls
hosts:
- '*.hexor.cy'
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: furumi-admin-ingress
annotations:
ingressClassName: traefik
traefik.ingress.kubernetes.io/router.middlewares: furumi-server-admin-strip@kubernetescrd,kube-system-https-redirect@kubernetescrd
spec:
rules:
- host: music.hexor.cy
http:
paths:
- path: /admin
pathType: Prefix
backend:
service:
name: furumi-metadata-agent
port:
number: 8090
tls:
- secretName: furumi-tls
hosts:
- '*.hexor.cy'
-12
View File
@@ -1,12 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- app.yaml
- deployment.yaml
- service.yaml
- servicemonitor.yaml
- external-secrets.yaml
- ingress.yaml
- web-player.yaml
- metadata-agent.yaml
@@ -1,59 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: furumi-metadata-agent
labels:
app: furumi-metadata-agent
spec:
replicas: 1
selector:
matchLabels:
app: furumi-metadata-agent
template:
metadata:
labels:
app: furumi-metadata-agent
spec:
nodeSelector:
kubernetes.io/hostname: master.tail2fe2d.ts.net
containers:
- name: furumi-metadata-agent
image: ultradesu/furumi-metadata-agent:trunk
imagePullPolicy: Always
env:
- name: FURUMI_AGENT_DATABASE_URL
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: PG_STRING
- name: FURUMI_AGENT_INBOX_DIR
value: "/inbox"
- name: FURUMI_AGENT_STORAGE_DIR
value: "/media"
- name: FURUMI_AGENT_OLLAMA_URL
value: "http://100.120.76.49:1234"
- name: FURUMI_AGENT_OLLAMA_MODEL
value: "google/gemma-4-26b-a4b"
- name: FURUMI_AGENT_POLL_INTERVAL_SECS
value: "10"
- name: RUST_LOG
value: "info"
ports:
- name: admin-ui
containerPort: 8090
protocol: TCP
volumeMounts:
- name: library
mountPath: /media
- name: inbox
mountPath: /inbox
volumes:
- name: library
hostPath:
path: /k8s/furumi/library
type: DirectoryOrCreate
- name: inbox
hostPath:
path: /k8s/furumi/inbox
type: DirectoryOrCreate
-62
View File
@@ -1,62 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: furumi-server-grpc
spec:
type: LoadBalancer
selector:
app: furumi-server
ports:
- name: grpc
protocol: TCP
port: 50051
targetPort: 50051
---
apiVersion: v1
kind: Service
metadata:
name: furumi-server-metrics
labels:
app: furumi-server
spec:
type: ClusterIP
selector:
app: furumi-server
ports:
- name: metrics
protocol: TCP
port: 9090
targetPort: 9090
---
apiVersion: v1
kind: Service
metadata:
name: furumi-metadata-agent
labels:
app: furumi-metadata-agent
spec:
type: ClusterIP
selector:
app: furumi-metadata-agent
ports:
- name: admin-ui
protocol: TCP
port: 8090
targetPort: 8090
---
apiVersion: v1
kind: Service
metadata:
name: furumi-web-player
labels:
app: furumi-web-player
spec:
type: ClusterIP
selector:
app: furumi-web-player
ports:
- name: web-ui
protocol: TCP
port: 8080
targetPort: 8080
@@ -1,21 +0,0 @@
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: furumi-server-metrics
labels:
app: furumi-server
release: prometheus
spec:
selector:
matchLabels:
app: furumi-server
endpoints:
- port: metrics
path: /metrics
interval: 30s
scrapeTimeout: 10s
honorLabels: true
namespaceSelector:
matchNames:
- furumi-server
-70
View File
@@ -1,70 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: furumi-web-player
labels:
app: furumi-web-player
spec:
replicas: 1
selector:
matchLabels:
app: furumi-web-player
template:
metadata:
labels:
app: furumi-web-player
spec:
nodeSelector:
kubernetes.io/hostname: master.tail2fe2d.ts.net
containers:
- name: furumi-web-player
image: ultradesu/furumi-web-player:trunk
imagePullPolicy: Always
env:
- name: FURUMI_PLAYER_OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_CLIENT_ID
- name: FURUMI_PLAYER_OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_CLIENT_SECRET
- name: FURUMI_PLAYER_OIDC_ISSUER_URL
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_ISSUER_URL
- name: FURUMI_PLAYER_OIDC_REDIRECT_URL
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_REDIRECT_URL
- name: FURUMI_PLAYER_OIDC_SESSION_SECRET
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: OIDC_SESSION_SECRET
- name: FURUMI_PLAYER_DATABASE_URL
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: PG_STRING
- name: FURUMI_PLAYER_STORAGE_DIR
value: "/media"
- name: RUST_LOG
value: "info"
ports:
- name: web-ui
containerPort: 8080
protocol: TCP
volumeMounts:
- name: music
mountPath: /media
volumes:
- name: music
hostPath:
path: /k8s/furumi/library
type: DirectoryOrCreate
@@ -1,17 +1,17 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: furumi-dev
name: furumi
namespace: argocd
spec:
project: apps
destination:
namespace: furumi-dev
namespace: furumi
server: https://kubernetes.default.svc
source:
repoURL: ssh://git@gt.hexor.cy:30022/ab/homelab.git
targetRevision: HEAD
path: k8s/apps/furumi-dev
path: k8s/apps/furumi
syncPolicy:
automated:
selfHeal: true
@@ -1,30 +1,30 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: furumi-dev-player
name: furumi-player
labels:
app: furumi-dev-player
app: furumi-player
spec:
replicas: 1
selector:
matchLabels:
app: furumi-dev-player
app: furumi-player
template:
metadata:
labels:
app: furumi-dev-player
app: furumi-player
spec:
nodeSelector:
kubernetes.io/hostname: master.tail2fe2d.ts.net
kubernetes.io/hostname: music.tail2fe2d.ts.net
containers:
- name: furumi-dev-player
- name: furumi-player
image: ultradesu/furumusic:latest
imagePullPolicy: Always
env:
- name: FURU_DATABASE_URL
valueFrom:
secretKeyRef:
name: furumi-dev-creds
name: furumi-creds
key: PG_STRING
ports:
- containerPort: 8000
@@ -37,10 +37,10 @@ spec:
volumes:
- name: library
hostPath:
path: /k8s/furumi-dev/library-new
path: /data/furumi/library
type: DirectoryOrCreate
- name: inbox
hostPath:
path: /k8s/furumi-dev/inbox-new
path: /data/furumi/inbox
type: DirectoryOrCreate
@@ -5,7 +5,7 @@ metadata:
name: furumi-ng-creds
spec:
target:
name: furumi-dev-creds
name: furumi-creds
deletionPolicy: Delete
template:
type: Opaque
@@ -14,8 +14,8 @@ spec:
# {{ .client_id }}
#OIDC_CLIENT_SECRET: |-
# {{ .client_secret }}
#OIDC_ISSUER_URL: https://idm.hexor.cy/application/o/furumi-dev/
#OIDC_REDIRECT_URL: https://music-dev.hexor.cy/auth/callback
#OIDC_ISSUER_URL: https://idm.hexor.cy/application/o/furumi/
#OIDC_REDIRECT_URL: https://music.hexor.cy/auth/callback
#OIDC_SESSION_SECRET: |-
# {{ .session_secret }}
PG_STRING: |-
@@ -2,26 +2,26 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: furumi-dev-tls-ingress
name: furumi-tls-ingress
annotations:
ingressClassName: traefik
cert-manager.io/cluster-issuer: letsencrypt
traefik.ingress.kubernetes.io/router.middlewares: kube-system-https-redirect@kubernetescrd
acme.cert-manager.io/http01-edit-in-place: "true"
spec:
ingressClassName: traefik
rules:
- host: music-dev.hexor.cy
- host: music.hexor.cy
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: furumi-dev-player
name: furumi-player
port:
number: 8000
tls:
- secretName: furumi-dev-tls
- secretName: furumi-tls
hosts:
- music-dev.hexor.cy
- music.hexor.cy
@@ -2,13 +2,13 @@
apiVersion: v1
kind: Service
metadata:
name: furumi-dev-player
name: furumi-player
labels:
app: furumi-dev-player
app: furumi-player
spec:
type: ClusterIP
selector:
app: furumi-dev-player
app: furumi-player
ports:
- name: http
protocol: TCP
+1 -1
View File
@@ -4,11 +4,11 @@ kind: Ingress
metadata:
name: gitea-tls-ingress
annotations:
ingressClassName: traefik
cert-manager.io/cluster-issuer: letsencrypt
traefik.ingress.kubernetes.io/router.middlewares: kube-system-https-redirect@kubernetescrd
acme.cert-manager.io/http01-edit-in-place: "true"
spec:
ingressClassName: traefik
rules:
- host: gt.hexor.cy
http:
+2 -3
View File
@@ -1,5 +1,4 @@
---
image: &image 'pasarguard/node:v0.4.0'
apiVersion: apps/v1
kind: DaemonSet
metadata:
@@ -47,7 +46,7 @@ spec:
mountPath: /scripts
containers:
- name: pasarguard-node
image: *image
image: pasarguard/node:v0.4.0
imagePullPolicy: Always
command:
- /bin/sh
@@ -220,4 +219,4 @@ roleRef:
subjects:
- kind: ServiceAccount
name: pasarguard-node
namespace: pasarguard
namespace: pasarguard
+1 -5
View File
@@ -1,5 +1,4 @@
---
image: &image 'pasarguard/panel:v4.0.2'
apiVersion: apps/v1
kind: Deployment
metadata:
@@ -35,7 +34,7 @@ spec:
mountPath: /templates/subscription
containers:
- name: pasarguard-web
image: *image
image: pasarguard/panel:v4.0.2
imagePullPolicy: Always
envFrom:
- secretRef:
@@ -76,9 +75,6 @@ apiVersion: v1
kind: Service
metadata:
name: pasarguard
annotations:
traefik.ingress.kubernetes.io/service.serversscheme: https
traefik.ingress.kubernetes.io/service.serverstransport: pasarguard-pasarguard-transport@kubernetescrd
spec:
selector:
app: pasarguard
+15 -20
View File
@@ -4,28 +4,23 @@ kind: ServersTransport
metadata:
name: pasarguard-transport
spec:
serverName: ps.hexor.cy
insecureSkipVerify: true
---
apiVersion: networking.k8s.io/v1
kind: Ingress
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: pasarguard-ingress
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
name: pasarguard
spec:
ingressClassName: traefik
rules:
- host: ps.hexor.cy
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: pasarguard
port:
number: 80
entryPoints:
- websecure
routes:
- match: Host(`ps.hexor.cy`)
kind: Rule
services:
- name: pasarguard
port: 80
scheme: https
serversTransport: pasarguard-pasarguard-transport@kubernetescrd
tls:
- secretName: pasarguard-tls
hosts:
- ps.hexor.cy
secretName: pasarguard-tls
-1
View File
@@ -4,7 +4,6 @@ kind: Kustomization
resources:
- app.yaml
- external-secrets.yaml
- https-middleware.yaml
- outpost-selector-fix.yaml
# - worker-restart.yaml
@@ -0,0 +1,10 @@
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: https-redirect
namespace: kube-system
spec:
redirectScheme:
scheme: https
permanent: true
@@ -5,6 +5,7 @@ resources:
- app.yaml
- nfs-storage.yaml
- coredns-internal-resolve.yaml
- https-middleware.yaml
helmCharts:
- name: csi-driver-nfs
+2 -2
View File
@@ -18,7 +18,7 @@ spec:
serviceAccountName: system-upgrade
upgrade:
image: rancher/k3s-upgrade
version: v1.35.4+k3s1
version: v1.36.1+k3s1
---
# Agent plan
apiVersion: upgrade.cattle.io/v1
@@ -43,4 +43,4 @@ spec:
serviceAccountName: system-upgrade
upgrade:
image: rancher/k3s-upgrade
version: v1.35.4+k3s1
version: v1.36.1+k3s1
+5
View File
@@ -41,6 +41,11 @@ oauth2_applications = {
post_logout_redirect_uris = ["https://gf.hexor.cy/*"]
}
FuruMusic = {
redirect_uris = ["https://music.hexor.cy/auth/oidc/callback"]
web_origins = ["https://music.hexor.cy"]
post_logout_redirect_uris = ["https://music.hexor.cy/*"]
}
FuruMusic-dev = {
redirect_uris = ["https://music-dev.hexor.cy/auth/oidc/callback", "http://127.0.0.1:3000/auth/oidc/callback", "http://10.0.5.103:3000/auth/oidc/callback"]
web_origins = ["https://music-dev.hexor.cy", "http://127.0.0.1:3000", "http://10.0.5.103:3000"]
post_logout_redirect_uris = ["https://music-dev.hexor.cy/*", "http://127.0.0.1:3000/*", "http://10.0.5.103:3000/*"]