Compare commits

...

5 Commits

Author SHA1 Message Date
Gitea Actions Bot
bcdf674963 Auto-update README with current k8s applications
Some checks failed
Terraform / Terraform (pull_request) Failing after 3s
Generated by CI/CD workflow on 2026-04-06 10:55:09

This PR updates the README.md file with the current list of applications found in the k8s/ directory structure.
2026-04-06 10:55:10 +00:00
Ultradesu
b89b5cc6a9 Added telemt
All checks were successful
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 13s
Check with kubeconform / lint (push) Successful in 11s
Auto-update README / Generate README and Create MR (push) Successful in 9s
2026-04-06 11:54:30 +01:00
Ultradesu
b032852dd8 Added telemt
All checks were successful
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 20s
Check with kubeconform / lint (push) Successful in 16s
Auto-update README / Generate README and Create MR (push) Successful in 11s
2026-04-06 11:52:36 +01:00
ab
3b94cc92ea Update k8s/apps/furumi-dev/web-player.yaml
All checks were successful
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 12s
Check with kubeconform / lint (push) Successful in 9s
Auto-update README / Generate README and Create MR (push) Successful in 21s
2026-03-23 13:43:59 +00:00
ab
548f306bf7 Update k8s/apps/furumi-dev/external-secrets.yaml
All checks were successful
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 15s
Check with kubeconform / lint (push) Successful in 6s
Auto-update README / Generate README and Create MR (push) Successful in 24s
2026-03-23 13:42:14 +00:00
7 changed files with 183 additions and 1 deletions

View File

@@ -16,6 +16,7 @@ ArgoCD homelab project
| **authentik** | [![authentik](https://ag.hexor.cy/api/badge?name=authentik&revision=true)](https://ag.hexor.cy/applications/argocd/authentik) |
| **cert-manager** | [![cert-manager](https://ag.hexor.cy/api/badge?name=cert-manager&revision=true)](https://ag.hexor.cy/applications/argocd/cert-manager) |
| **external-secrets** | [![external-secrets](https://ag.hexor.cy/api/badge?name=external-secrets&revision=true)](https://ag.hexor.cy/applications/argocd/external-secrets) |
| **gpu** | [![gpu](https://ag.hexor.cy/api/badge?name=gpu&revision=true)](https://ag.hexor.cy/applications/argocd/gpu) |
| **kube-system-custom** | [![kube-system-custom](https://ag.hexor.cy/api/badge?name=kube-system-custom&revision=true)](https://ag.hexor.cy/applications/argocd/kube-system-custom) |
| **kubernetes-dashboard** | [![kubernetes-dashboard](https://ag.hexor.cy/api/badge?name=kubernetes-dashboard&revision=true)](https://ag.hexor.cy/applications/argocd/kubernetes-dashboard) |
| **longhorn** | [![longhorn](https://ag.hexor.cy/api/badge?name=longhorn&revision=true)](https://ag.hexor.cy/applications/argocd/longhorn) |
@@ -37,6 +38,9 @@ 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) |
| **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) |
@@ -45,6 +49,9 @@ ArgoCD homelab project
| **jellyfin** | [![jellyfin](https://ag.hexor.cy/api/badge?name=jellyfin&revision=true)](https://ag.hexor.cy/applications/argocd/jellyfin) |
| **k8s-secrets** | [![k8s-secrets](https://ag.hexor.cy/api/badge?name=k8s-secrets&revision=true)](https://ag.hexor.cy/applications/argocd/k8s-secrets) |
| **khm** | [![khm](https://ag.hexor.cy/api/badge?name=khm&revision=true)](https://ag.hexor.cy/applications/argocd/khm) |
| **lidarr** | [![lidarr](https://ag.hexor.cy/api/badge?name=lidarr&revision=true)](https://ag.hexor.cy/applications/argocd/lidarr) |
| **matrix** | [![matrix](https://ag.hexor.cy/api/badge?name=matrix&revision=true)](https://ag.hexor.cy/applications/argocd/matrix) |
| **mtproxy** | [![mtproxy](https://ag.hexor.cy/api/badge?name=mtproxy&revision=true)](https://ag.hexor.cy/applications/argocd/mtproxy) |
| **n8n** | [![n8n](https://ag.hexor.cy/api/badge?name=n8n&revision=true)](https://ag.hexor.cy/applications/argocd/n8n) |
| **ollama** | [![ollama](https://ag.hexor.cy/api/badge?name=ollama&revision=true)](https://ag.hexor.cy/applications/argocd/ollama) |
| **paperless** | [![paperless](https://ag.hexor.cy/api/badge?name=paperless&revision=true)](https://ag.hexor.cy/applications/argocd/paperless) |

View File

@@ -20,6 +20,8 @@ spec:
{{ .session_secret }}
PG_STRING: |-
postgres://furumi_dev:{{ .pg_pass }}@psql.psql.svc:5432/furumi_dev
PLAYER_API_KEY: |-
{{ .player_api_key }}
data:
- secretKey: client_id
sourceRef:

View File

@@ -51,6 +51,11 @@ spec:
secretKeyRef:
name: furumi-ng-creds
key: PG_STRING
- name: FURUMI_PLAYER_API_KEY
valueFrom:
secretKeyRef:
name: furumi-ng-creds
key: PLAYER_API_KEY
- name: FURUMI_PLAYER_STORAGE_DIR
value: "/media"
- name: RUST_LOG

View File

@@ -5,7 +5,9 @@ resources:
- ./app.yaml
- ./rbac.yaml
- ./daemonset.yaml
- ./telemt-daemonset.yaml
- ./external-secrets.yaml
- ./telemt-external-secrets.yaml
- ./service.yaml
- ./secret-reader.yaml
# - ./storage.yaml

View File

@@ -23,7 +23,7 @@ spec:
imagePullPolicy: Always
args:
- "--secrets"
- "mtproxy-links"
- "mtproxy-links,telemt-links"
- "--namespace"
- "mtproxy"
- "--port"

View File

@@ -0,0 +1,109 @@
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: telemt
labels:
app: telemt
spec:
selector:
matchLabels:
app: telemt
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
app: telemt
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: mtproxy
operator: Exists
serviceAccountName: mtproxy
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
initContainers:
- name: register-proxy
image: bitnami/kubectl:latest
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: SECRET
valueFrom:
secretKeyRef:
name: tgproxy-secret
key: SECRET
- name: TELEMT_PORT
valueFrom:
secretKeyRef:
name: telemt-secret
key: PORT
command:
- /bin/bash
- -c
- |
set -e
NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
SERVER=$(kubectl get node "${NODE_NAME}" -o jsonpath='{.metadata.labels.mtproxy}')
if [ -z "${SERVER}" ]; then
echo "ERROR: node ${NODE_NAME} has no mtproxy label"
exit 1
fi
# Build dd-prefixed secret for TLS mode: dd + secret + hex(tls_domain)
DOMAIN_HEX=$(echo -n 'ya.ru' | xxd -p | tr -d '\n')
DD_SECRET="dd${SECRET}${DOMAIN_HEX}"
LINK="tg://proxy?server=${SERVER}&port=${TELEMT_PORT}&secret=${DD_SECRET}"
echo "Registering telemt: ${SERVER} -> ${LINK}"
if kubectl get secret telemt-links -n "${NAMESPACE}" &>/dev/null; then
kubectl patch secret telemt-links -n "${NAMESPACE}" \
--type merge -p "{\"stringData\":{\"${SERVER}\":\"${LINK}\"}}"
else
kubectl create secret generic telemt-links -n "${NAMESPACE}" \
--from-literal="${SERVER}=${LINK}"
fi
echo "Done"
containers:
- name: telemt
image: ghcr.io/telemt/telemt:latest
imagePullPolicy: Always
ports:
- name: proxy
containerPort: 30444
protocol: TCP
- name: api
containerPort: 9091
protocol: TCP
workingDir: /run/telemt
env:
- name: RUST_LOG
value: info
volumeMounts:
- name: workdir
mountPath: /run/telemt
- name: config
mountPath: /run/telemt/config.toml
subPath: config.toml
readOnly: true
securityContext:
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
volumes:
- name: config
secret:
secretName: telemt-secret
items:
- key: config.toml
path: config.toml
- name: workdir
emptyDir:
medium: Memory
sizeLimit: 1Mi

View File

@@ -0,0 +1,57 @@
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: telemt-secret
spec:
target:
name: telemt-secret
deletionPolicy: Delete
template:
type: Opaque
data:
SECRET: |-
{{ .secret }}
PORT: "30444"
config.toml: |
[general]
use_middle_proxy = true
log_level = "normal"
[general.modes]
classic = false
secure = false
tls = true
[general.links]
show = "*"
public_port = 30444
[server]
port = 30444
[server.api]
enabled = true
listen = "0.0.0.0:9091"
whitelist = ["0.0.0.0/0"]
[[server.listeners]]
ip = "0.0.0.0"
[censorship]
tls_domain = "ya.ru"
mask = true
tls_emulation = true
tls_front_dir = "tlsfront"
[access.users]
user = "{{ .secret }}"
data:
- secretKey: secret
sourceRef:
storeRef:
name: vaultwarden-login
kind: ClusterSecretStore
remoteRef:
key: 58a37daf-72d8-430d-86bd-6152aa8f888d
property: fields[0].value