Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c2a03e9c3 | ||
|
|
8ff438bd24 | ||
|
|
01ad3f2d71 | ||
|
|
34bffe40be | ||
|
|
1a1c8ee2c6 | ||
|
|
78454ba2ef | ||
|
|
c98997f75e | ||
|
|
a323c6bb65 | ||
|
|
47625c05b6 | ||
|
|
42483f32b5 | ||
|
|
ee6cdb7982 |
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: authentik-credentials
|
||||||
|
namespace: authentik
|
||||||
|
stringData:
|
||||||
|
secret_key: ENC[AES256_GCM,data:yIyQapbFtFM11LynFtkV3ffExhaDfN9QHeFbI1T0xkIhgsV+9sjg3qwMVmeBlAe7xZl8gsAM4kDj2Q6O91OdDg==,iv:+Cl8vOcxG9/mgRheaCO0bLWyCJXN+f1F2DD3oeHbPFY=,tag:711ytyKf6/tmXomBLoffGA==,type:str]
|
||||||
|
pg-password: ENC[AES256_GCM,data:3w8R9mRjMXMJDLjrC8QYaXFHsCU3yYZs2PcaFQNp3Z4=,iv:G/aXgoGz3vBOzZ5K3Y+DDJsqer4F5gvcMmtkzRx93CU=,tag:dXPs1pY/APvnMlxdvB1EkA==,type:str]
|
||||||
|
smtp-password: ENC[AES256_GCM,data:JpMgaQFPkBzOg5WjvpmhM0kPwvZkH+4tQjT17RJHjG14WjmWtfG9Bg==,iv:zjQRLIlrxKv5hbd4JZowNUEiibiCUMf79acZY0+dYAc=,tag:ORPafTPyOQJvVvHWQGmqhA==,type:str]
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age14l0hwfqylwpemz5y2ghh2yxk0phszlnj3qlejhue0fw0kz3tmfgqdsjzdh
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRekJuZythYzliTFJ3RlhS
|
||||||
|
R2p6TG9NeFdabFlPRWtpNHJMYVVxTWZEcmlRClk0WUorSzdxNlcyWHYwWFBTMnlq
|
||||||
|
TlM4dENSSit2S3VGSzJCeTRTYU52dmcKLS0tIEF0WkV0M25OSEo1N0FEYXI5Q0Z6
|
||||||
|
QXVrY1NTeHZkeTlPRWNlVThzWno3T0kKC0KBoLT64GNqb8Ri9u69G7nqb1KftwwP
|
||||||
|
/24aVHrPxKi9d4ij9n3bvCYDF4rhtfexhrE4n7CfuKn2DcSiuTniuw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2026-04-29T21:43:59Z"
|
||||||
|
mac: ENC[AES256_GCM,data:Y+dJppkaVZ5NOhlvwbbsF5+vDFqGUI1Ps8IcE4J7FIW4HIdMVf6RKM0EInvPUW1LaBlmelCitcE30w0As7ysNRhLY8yUDaKUvuU6mRejlNUIF8wAHzhciL2jTvAQsArHjybJatEig28+wM9VcY8JEa/d/CmuiB9Nq4WbIV+JXlA=,iv:UQj2rIVLNPjtYp3d/jRyNfJyyyUsZ3+NDCgpI4aztzc=,tag:cwiCzG/A+rfRFfLjXVt82w==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.12.2
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: authentik
|
||||||
|
namespace: authentik
|
||||||
|
spec:
|
||||||
|
interval: 1h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: authentik
|
||||||
|
version: "2026.2.2"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: goauthentik
|
||||||
|
namespace: flux-system
|
||||||
|
install:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
upgrade:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
valuesFrom:
|
||||||
|
- kind: Secret
|
||||||
|
name: authentik-credentials
|
||||||
|
valuesKey: secret_key
|
||||||
|
targetPath: authentik.secret_key
|
||||||
|
- kind: Secret
|
||||||
|
name: authentik-credentials
|
||||||
|
valuesKey: pg-password
|
||||||
|
targetPath: authentik.postgresql.password
|
||||||
|
- kind: Secret
|
||||||
|
name: authentik-credentials
|
||||||
|
valuesKey: pg-password
|
||||||
|
targetPath: postgresql.auth.password
|
||||||
|
- kind: Secret
|
||||||
|
name: authentik-credentials
|
||||||
|
valuesKey: smtp-password
|
||||||
|
targetPath: authentik.email.password
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
security:
|
||||||
|
allowInsecureImages: true
|
||||||
|
|
||||||
|
authentik:
|
||||||
|
log_level: info
|
||||||
|
error_reporting:
|
||||||
|
enabled: false
|
||||||
|
email:
|
||||||
|
host: smtp.ionos.de
|
||||||
|
port: 587
|
||||||
|
username: gamemaster@axion1337.chat
|
||||||
|
use_tls: true
|
||||||
|
from: "Authentik <gamemaster@axion1337.chat>"
|
||||||
|
|
||||||
|
server:
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 512Mi
|
||||||
|
limits:
|
||||||
|
memory: 1Gi
|
||||||
|
|
||||||
|
worker:
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 512Mi
|
||||||
|
limits:
|
||||||
|
memory: 1Gi
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
auth:
|
||||||
|
username: authentik
|
||||||
|
database: authentik
|
||||||
|
primary:
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
size: 8Gi
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 256Mi
|
||||||
|
limits:
|
||||||
|
memory: 512Mi
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: auth-axion1337-chat-cert
|
||||||
|
namespace: authentik
|
||||||
|
spec:
|
||||||
|
secretName: auth-axion1337-chat-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-prod
|
||||||
|
kind: ClusterIssuer
|
||||||
|
dnsNames:
|
||||||
|
- auth.axion1337.chat
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
|
kind: HelmRepository
|
||||||
|
metadata:
|
||||||
|
name: goauthentik
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
interval: 1h
|
||||||
|
url: https://charts.goauthentik.io
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: authentik
|
||||||
|
namespace: authentik
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
tls:
|
||||||
|
secretName: auth-axion1337-chat-tls
|
||||||
|
routes:
|
||||||
|
- match: Host(`auth.axion1337.chat`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: authentik-server
|
||||||
|
port: 80
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- helm-repo.yaml
|
||||||
|
- authentik-secret.yaml
|
||||||
|
- certificate.yaml
|
||||||
|
- authentik.yaml
|
||||||
|
- ingress.yaml
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: authentik
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: alloy-config
|
||||||
|
namespace: monitoring
|
||||||
|
data:
|
||||||
|
config.alloy: |
|
||||||
|
// Kubernetes pod discovery
|
||||||
|
discovery.kubernetes "k8s_pods" {
|
||||||
|
role = "pod"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Relabel for Prometheus scrape
|
||||||
|
discovery.relabel "prometheus_pods" {
|
||||||
|
targets = discovery.kubernetes.k8s_pods.targets
|
||||||
|
rule {
|
||||||
|
source_labels = ["__meta_kubernetes_pod_annotation_prometheus_io_scrape"]
|
||||||
|
action = "keep"
|
||||||
|
regex = "true"
|
||||||
|
}
|
||||||
|
rule {
|
||||||
|
source_labels = ["__meta_kubernetes_pod_annotation_prometheus_io_path"]
|
||||||
|
action = "replace"
|
||||||
|
target_label = "__metrics_path__"
|
||||||
|
regex = "(.+)"
|
||||||
|
}
|
||||||
|
rule {
|
||||||
|
source_labels = ["__address__", "__meta_kubernetes_pod_annotation_prometheus_io_port"]
|
||||||
|
action = "replace"
|
||||||
|
regex = "([^:]+)(?::\\d+)?;(\\d+)"
|
||||||
|
replacement = "$1:$2"
|
||||||
|
target_label = "__address__"
|
||||||
|
}
|
||||||
|
rule {
|
||||||
|
source_labels = ["__meta_kubernetes_namespace"]
|
||||||
|
action = "replace"
|
||||||
|
target_label = "namespace"
|
||||||
|
}
|
||||||
|
rule {
|
||||||
|
source_labels = ["__meta_kubernetes_pod_name"]
|
||||||
|
action = "replace"
|
||||||
|
target_label = "pod"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scrape Flux controllers (flux-system namespace, port 8080)
|
||||||
|
discovery.kubernetes "flux_pods" {
|
||||||
|
role = "pod"
|
||||||
|
namespaces {
|
||||||
|
names = ["flux-system"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
discovery.relabel "flux_scrape" {
|
||||||
|
targets = discovery.kubernetes.flux_pods.targets
|
||||||
|
rule {
|
||||||
|
source_labels = ["__meta_kubernetes_pod_container_port_number"]
|
||||||
|
action = "keep"
|
||||||
|
regex = "8080"
|
||||||
|
}
|
||||||
|
rule {
|
||||||
|
source_labels = ["__meta_kubernetes_namespace"]
|
||||||
|
action = "replace"
|
||||||
|
target_label = "namespace"
|
||||||
|
}
|
||||||
|
rule {
|
||||||
|
source_labels = ["__meta_kubernetes_pod_name"]
|
||||||
|
action = "replace"
|
||||||
|
target_label = "pod"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scrape kube-state-metrics
|
||||||
|
prometheus.scrape "kube_state_metrics" {
|
||||||
|
targets = [{
|
||||||
|
__address__ = "kube-state-metrics.monitoring.svc.cluster.local:8080",
|
||||||
|
}]
|
||||||
|
forward_to = [prometheus.remote_write.selendis.receiver]
|
||||||
|
scrape_interval = "30s"
|
||||||
|
scrape_timeout = "10s"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scrape Flux controllers
|
||||||
|
prometheus.scrape "flux" {
|
||||||
|
targets = discovery.relabel.flux_scrape.output
|
||||||
|
forward_to = [prometheus.remote_write.selendis.receiver]
|
||||||
|
scrape_interval = "30s"
|
||||||
|
scrape_timeout = "10s"
|
||||||
|
job_name = "flux"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scrape node-exporter DaemonSet
|
||||||
|
prometheus.scrape "node_exporter" {
|
||||||
|
targets = [{
|
||||||
|
__address__ = "prometheus-node-exporter.monitoring.svc.cluster.local:9100",
|
||||||
|
}]
|
||||||
|
forward_to = [prometheus.remote_write.selendis.receiver]
|
||||||
|
scrape_interval = "30s"
|
||||||
|
scrape_timeout = "10s"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scrape Synapse metrics
|
||||||
|
prometheus.scrape "synapse" {
|
||||||
|
targets = [{
|
||||||
|
__address__ = "matrix-stack-synapse-main.matrix.svc.cluster.local:9000",
|
||||||
|
}]
|
||||||
|
forward_to = [prometheus.remote_write.selendis.receiver]
|
||||||
|
scrape_interval = "30s"
|
||||||
|
scrape_timeout = "10s"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kubernetes pod logs to Loki
|
||||||
|
loki.source.kubernetes "k8s_logs" {
|
||||||
|
targets = discovery.kubernetes.k8s_pods.targets
|
||||||
|
forward_to = [loki.write.selendis.receiver]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remote write to Selendis Prometheus
|
||||||
|
prometheus.remote_write "selendis" {
|
||||||
|
endpoint {
|
||||||
|
url = "http://10.0.0.3:9090/api/v1/write"
|
||||||
|
write_relabel_config {
|
||||||
|
source_labels = ["__name__"]
|
||||||
|
regex = "go_.*|process_.*"
|
||||||
|
action = "drop"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remote write logs to Selendis Loki
|
||||||
|
loki.write "selendis" {
|
||||||
|
endpoint {
|
||||||
|
url = "http://10.0.0.3:3100/loki/api/v1/push"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: alloy
|
||||||
|
namespace: monitoring
|
||||||
|
spec:
|
||||||
|
interval: 1h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: alloy
|
||||||
|
version: "0.x"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: grafana
|
||||||
|
namespace: flux-system
|
||||||
|
values:
|
||||||
|
alloy:
|
||||||
|
configMap:
|
||||||
|
name: alloy-config
|
||||||
|
replicaCount: 1
|
||||||
|
serviceAccount:
|
||||||
|
create: true
|
||||||
|
name: alloy
|
||||||
|
rbac:
|
||||||
|
create: true
|
||||||
|
podAnnotations:
|
||||||
|
prometheus.io/scrape: "false"
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 512Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 256Mi
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
|
kind: HelmRepository
|
||||||
|
metadata:
|
||||||
|
name: prometheus-community
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
interval: 1h
|
||||||
|
url: https://prometheus-community.github.io/helm-charts
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
|
kind: HelmRepository
|
||||||
|
metadata:
|
||||||
|
name: grafana
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
interval: 1h
|
||||||
|
url: https://grafana.github.io/helm-charts
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: kube-state-metrics
|
||||||
|
namespace: monitoring
|
||||||
|
spec:
|
||||||
|
interval: 1h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: kube-state-metrics
|
||||||
|
version: "5.x"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: prometheus-community
|
||||||
|
namespace: flux-system
|
||||||
|
values:
|
||||||
|
replicas: 1
|
||||||
|
service:
|
||||||
|
port: 8080
|
||||||
|
prometheus:
|
||||||
|
monitor:
|
||||||
|
enabled: false
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- helm-repos.yaml
|
||||||
|
- kube-state-metrics.yaml
|
||||||
|
- node-exporter.yaml
|
||||||
|
- alloy-config.yaml
|
||||||
|
- alloy.yaml
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: monitoring
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: prometheus-node-exporter
|
||||||
|
namespace: monitoring
|
||||||
|
spec:
|
||||||
|
interval: 1h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: prometheus-node-exporter
|
||||||
|
version: "4.x"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: prometheus-community
|
||||||
|
namespace: flux-system
|
||||||
|
values:
|
||||||
|
hostNetwork: true
|
||||||
|
hostPID: true
|
||||||
|
hostRootFsMount:
|
||||||
|
enabled: true
|
||||||
|
service:
|
||||||
|
port: 9100
|
||||||
|
targetPort: 9100
|
||||||
|
prometheus:
|
||||||
|
monitor:
|
||||||
|
enabled: false
|
||||||
|
tolerations:
|
||||||
|
- effect: NoSchedule
|
||||||
|
operator: Exists
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: coturn-secret
|
||||||
|
namespace: matrix
|
||||||
|
stringData:
|
||||||
|
TURN_SECRET: ENC[AES256_GCM,data:SILIqMB+fmAMFITAL7lG1hOgICec6BJf1mOcK0gdmnCHWYqRuJv7jgjfGylG25xzQKi+zE7Qual9PnkZG2KiOA==,iv:+GZqLGusE4Q0x2jEEtFxj06rryyQmQhXdkTy4eE8ZHw=,tag:OpSZkinPTAi1ZKWyo8OX3A==,type:str]
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age14l0hwfqylwpemz5y2ghh2yxk0phszlnj3qlejhue0fw0kz3tmfgqdsjzdh
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyRk1mK3NWc1l4T0JCOFpF
|
||||||
|
S0RuQ3ViZmo3QTNVL2JvZ0hzMy91R2l0TEhzCk01a1VGdk1sdVg4aWswTzRibXI4
|
||||||
|
ZlJtNFF5MjBONEZOaWVpeU5taHl2bkEKLS0tIGxpUHY3NUFLWFBaWm1QSlZiVFkx
|
||||||
|
MEJleHFnd3oyT3VPL2dsYkpMUlRkOWMKcKUIgsQ/ff49pGGXMnYwJmwqPVC7woAR
|
||||||
|
IEzvhcNX97xx746SnrxZe5t2YadsYMkYIl0nvqBPJhSlvqMNafpQbQ==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2026-04-29T21:06:21Z"
|
||||||
|
mac: ENC[AES256_GCM,data:UhyR5m1HYWrZHwNLW5sg2PxbpaydWbP5cekghGlzSpQg7CYEcvZw3tJ/qB8zA19xZSM7tdSHOXdD+QytRq6qW59M1unqMaumA43B6JxQg1C1NdXAW0mkSc2WiNchvgpVii9P/TVlzSSIRwC3YGCQUsfa3SSfNzI4Z6fMuBnhYLE=,iv:4HYxbrYSRJLe1KcQ6q8bpee8/Lx1m3pPmisb/L2Mu64=,tag:l7n3u+Pg6533OzwtNUZvNw==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.12.2
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: coturn-config
|
||||||
|
namespace: matrix
|
||||||
|
data:
|
||||||
|
turnserver.conf: |
|
||||||
|
# TURN Server configuration
|
||||||
|
realm=axion1337.chat
|
||||||
|
|
||||||
|
# Listen ports
|
||||||
|
listening-port=3478
|
||||||
|
listening-ip=0.0.0.0
|
||||||
|
alt-listening-port=5349
|
||||||
|
alt-listening-ip=0.0.0.0
|
||||||
|
|
||||||
|
# External IPs (for clients behind NAT)
|
||||||
|
relay-ip=49.13.132.245
|
||||||
|
external-ip=49.13.132.245
|
||||||
|
|
||||||
|
# Relay port range
|
||||||
|
min-bps=0
|
||||||
|
bps-capacity=0
|
||||||
|
|
||||||
|
# Authentication
|
||||||
|
use-auth-secret
|
||||||
|
static-auth-secret=$TURN_SECRET
|
||||||
|
|
||||||
|
# HTTPS/TLS
|
||||||
|
cert=/etc/coturn/tls/tls.crt
|
||||||
|
pkey=/etc/coturn/tls/tls.key
|
||||||
|
|
||||||
|
# Performance tuning
|
||||||
|
max-bps=0
|
||||||
|
bps-capacity=0
|
||||||
|
log-file=stdout
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
verbose
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: coturn
|
||||||
|
namespace: matrix
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- name: stun-udp
|
||||||
|
port: 3478
|
||||||
|
protocol: UDP
|
||||||
|
- name: stun-tcp
|
||||||
|
port: 3478
|
||||||
|
protocol: TCP
|
||||||
|
- name: turns-tcp
|
||||||
|
port: 5349
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: coturn
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: coturn
|
||||||
|
namespace: matrix
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: coturn
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: coturn
|
||||||
|
annotations:
|
||||||
|
prometheus.io/scrape: "false"
|
||||||
|
spec:
|
||||||
|
hostNetwork: true
|
||||||
|
dnsPolicy: ClusterFirstWithHostNet
|
||||||
|
initContainers:
|
||||||
|
- name: init-config
|
||||||
|
image: busybox:1.28
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
TURN_SECRET=$(cat /etc/coturn-secret/TURN_SECRET)
|
||||||
|
sed "s|\$TURN_SECRET|$TURN_SECRET|g" /etc/coturn-template/turnserver.conf > /etc/coturn/turnserver.conf
|
||||||
|
chmod 644 /etc/coturn/turnserver.conf
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 64Mi
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 32Mi
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-template
|
||||||
|
mountPath: /etc/coturn-template
|
||||||
|
- name: config
|
||||||
|
mountPath: /etc/coturn
|
||||||
|
- name: secret
|
||||||
|
mountPath: /etc/coturn-secret
|
||||||
|
readOnly: true
|
||||||
|
containers:
|
||||||
|
- name: coturn
|
||||||
|
image: coturn/coturn:latest
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- name: stun-udp
|
||||||
|
containerPort: 3478
|
||||||
|
protocol: UDP
|
||||||
|
- name: stun-tcp
|
||||||
|
containerPort: 3478
|
||||||
|
protocol: TCP
|
||||||
|
- name: turns-tcp
|
||||||
|
containerPort: 5349
|
||||||
|
protocol: TCP
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /etc/coturn
|
||||||
|
- name: tls
|
||||||
|
mountPath: /etc/coturn/tls
|
||||||
|
readOnly: true
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 256Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 128Mi
|
||||||
|
livenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- "netstat -uln | grep 3478 || exit 1"
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
emptyDir: {}
|
||||||
|
- name: config-template
|
||||||
|
configMap:
|
||||||
|
name: coturn-config
|
||||||
|
- name: secret
|
||||||
|
secret:
|
||||||
|
secretName: coturn-secret
|
||||||
|
defaultMode: 0400
|
||||||
|
- name: tls
|
||||||
|
secret:
|
||||||
|
secretName: turn-axion1337-chat-tls
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- weight: 100
|
||||||
|
preference:
|
||||||
|
matchExpressions:
|
||||||
|
- key: kubernetes.io/hostname
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- matrix
|
||||||
@@ -22,4 +22,48 @@ data:
|
|||||||
- '::1/128'
|
- '::1/128'
|
||||||
- 'fe80::/10'
|
- 'fe80::/10'
|
||||||
- 'fc00::/7'
|
- 'fc00::/7'
|
||||||
max_spider_size: 10M
|
max_spider_size: 10M
|
||||||
|
retention:
|
||||||
|
config: |
|
||||||
|
retention:
|
||||||
|
enabled: true
|
||||||
|
default_policy:
|
||||||
|
min_lifetime: 1d
|
||||||
|
max_lifetime: 1y
|
||||||
|
allowed_lifetime_min: 1d
|
||||||
|
allowed_lifetime_max: 2y
|
||||||
|
purge_jobs:
|
||||||
|
- longest_max_lifetime: 3d
|
||||||
|
interval: 12h
|
||||||
|
- shortest_max_lifetime: 3d
|
||||||
|
longest_max_lifetime: 1w
|
||||||
|
interval: 1d
|
||||||
|
- shortest_max_lifetime: 1w
|
||||||
|
interval: 2d
|
||||||
|
|
||||||
|
media_retention:
|
||||||
|
local_media_lifetime: 365d
|
||||||
|
remote_media_lifetime: 90d
|
||||||
|
|
||||||
|
redaction_retention_period: 7d
|
||||||
|
forgotten_room_retention_period: 28d
|
||||||
|
user_ips_max_age: 90d
|
||||||
|
auto_join:
|
||||||
|
config: |
|
||||||
|
auto_join_rooms:
|
||||||
|
- "!NkFTshKWJMgdTqTbTh:axion1337.chat"
|
||||||
|
auto_join_rooms_for_guests: false
|
||||||
|
room_publish:
|
||||||
|
config: |
|
||||||
|
room_list_publication_rules:
|
||||||
|
- user_id: "*"
|
||||||
|
action: allow
|
||||||
|
turn:
|
||||||
|
config: |
|
||||||
|
turn_uris:
|
||||||
|
- "turn:turn.axion1337.chat?transport=udp"
|
||||||
|
- "turn:turn.axion1337.chat?transport=tcp"
|
||||||
|
- "turns:turn.axion1337.chat?transport=tcp"
|
||||||
|
turn_shared_secret: "cab3c8408363515d9b4cdc3384a1f76ca17a973242fdfdc72b67ac4d86158527"
|
||||||
|
turn_user_lifetime: 86400000
|
||||||
|
turn_allow_guests: false
|
||||||
@@ -3,12 +3,16 @@ kind: Kustomization
|
|||||||
resources:
|
resources:
|
||||||
- matrix-postgres-auth.yaml
|
- matrix-postgres-auth.yaml
|
||||||
- cert-issuer.yaml
|
- cert-issuer.yaml
|
||||||
|
- matrix-certificates.yaml
|
||||||
# Neue Dateien:
|
# Neue Dateien:
|
||||||
- custom-configs/synapse-values.yaml
|
- custom-configs/synapse-values.yaml
|
||||||
- custom-configs/element-values.yaml
|
- custom-configs/element-values.yaml
|
||||||
- custom-configs/mas-secret.yaml
|
- custom-configs/mas-secret.yaml
|
||||||
- element-web-docs-configmap.yaml
|
- element-web-docs-configmap.yaml
|
||||||
- element-web-docs-server.yaml
|
- element-web-docs-server.yaml
|
||||||
|
# TURN Server für WebRTC
|
||||||
|
- coturn-secret.yaml
|
||||||
|
- coturn.yaml
|
||||||
# HelmRelease (muss ganz unten stehen, damit die ConfigMaps vorher da sind!)
|
# HelmRelease (muss ganz unten stehen, damit die ConfigMaps vorher da sind!)
|
||||||
- element-server-suite.yaml
|
- element-server-suite.yaml
|
||||||
# Custom Apex Ingress für Element Web + Well-Known auf axion1337.chat
|
# Custom Apex Ingress für Element Web + Well-Known auf axion1337.chat
|
||||||
|
|||||||
@@ -62,3 +62,16 @@ spec:
|
|||||||
kind: ClusterIssuer
|
kind: ClusterIssuer
|
||||||
dnsNames:
|
dnsNames:
|
||||||
- admin.axion1337.chat
|
- admin.axion1337.chat
|
||||||
|
---
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: turn-axion1337-chat-cert
|
||||||
|
namespace: matrix
|
||||||
|
spec:
|
||||||
|
secretName: turn-axion1337-chat-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-prod
|
||||||
|
kind: ClusterIssuer
|
||||||
|
dnsNames:
|
||||||
|
- turn.axion1337.chat
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: authentik-apps
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
interval: 1m
|
||||||
|
path: ./apps/authentik
|
||||||
|
prune: true
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: flux-system
|
||||||
|
decryption:
|
||||||
|
provider: sops
|
||||||
|
secretRef:
|
||||||
|
name: sops-age
|
||||||
|
dependsOn:
|
||||||
|
- name: infra-apps
|
||||||
@@ -4,4 +4,6 @@ resources:
|
|||||||
- gotk-components.yaml
|
- gotk-components.yaml
|
||||||
- gotk-sync.yaml
|
- gotk-sync.yaml
|
||||||
- infra-sync.yaml
|
- infra-sync.yaml
|
||||||
|
- monitoring-sync.yaml
|
||||||
- production-sync.yaml
|
- production-sync.yaml
|
||||||
|
- authentik-sync.yaml
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: monitoring-apps
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
path: ./apps/monitoring
|
||||||
|
prune: true
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: flux-system
|
||||||
|
dependsOn:
|
||||||
|
- name: infra-apps
|
||||||
Reference in New Issue
Block a user