diff --git a/juntekim_frontend/app/SelfHosted/page.tsx b/juntekim_frontend/app/SelfHosted/page.tsx index 59066d6..9b21b8d 100644 --- a/juntekim_frontend/app/SelfHosted/page.tsx +++ b/juntekim_frontend/app/SelfHosted/page.tsx @@ -100,6 +100,12 @@ const services = [ url: "https://traefik.mealcraft.com/dashboard/", icon: "📊" }, + { + name: "Kokoro TTS", + description: "Open-source text-to-speech API running locally with an OpenAI-compatible interface", + url: "https://kokoro.juntekim.com", + icon: "🔊" + }, ]; diff --git a/kokoro/kokoro.yaml b/kokoro/kokoro.yaml new file mode 100644 index 0000000..f16d151 --- /dev/null +++ b/kokoro/kokoro.yaml @@ -0,0 +1,65 @@ +# ================================ +# KOKORO-FASTAPI - CPU +# https://github.com/remsky/Kokoro-FastAPI +# ================================ + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kokoro + labels: + app: kokoro +spec: + replicas: 1 + selector: + matchLabels: + app: kokoro + template: + metadata: + labels: + app: kokoro + spec: + containers: + - name: kokoro + image: ghcr.io/remsky/kokoro-fastapi-cpu:latest + ports: + - containerPort: 8880 + resources: + requests: + cpu: "500m" + memory: "1Gi" + limits: + cpu: "2" + memory: "4Gi" + +--- +apiVersion: v1 +kind: Service +metadata: + name: kokoro +spec: + selector: + app: kokoro + ports: + - port: 8880 + targetPort: 8880 + +--- +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: kokoro-ingressroute +spec: + entryPoints: + - websecure + routes: + - match: Host(`kokoro.juntekim.com`) + kind: Rule + services: + - name: kokoro + port: 8880 + tls: + certResolver: myresolver + domains: + - main: kokoro.juntekim.com