Despliega tu propio ChatGPT privado (con Whisper y GPT) usando Kubernetes en tu VPS
¿Alguna vez has soñado con tener tu propio asistente de IA conversacional (parecido a ChatGPT) funcionando en tu VPS? ¿Y que incluso pueda transcribir mensajes de voz usando Whisper? Hoy vamos a desplegar, paso a paso, una solución moderna combinando OpenAI Whisper para transcripción de voz y un pequeño modelo GPT open source, todo orquestado hermosamente con Kubernetes. ¡Ideal para aprender, automatizar o mantener segura tu información sensible!
¿Para qué sirve este proyecto?
- ChatGPT privado: Instala una interfaz básica donde puedes escribir o dictar preguntas y obtener respuestas del modelo, todo sin enviar datos a servidores externos.
- Whisper local: Sube un audio o habla por micrófono y lo transcribirá automáticamente.
- Ideal para experimentos, automatización de tareas o como backend de bots privados.
Arquitectura de la solución
- Servicio 1: backend FastAPI, expone endpoints para transcribir audios (usando Whisper) y recibir preguntas de texto.
- Servicio 2: contenedor con un pequeño modelo GPT (ejemplo: GPT4All o llama.cpp), accesible en la red interna.
- Servicio 3: frontend muy sencillo en Flask o Node.js, para conversar y subir audios.
Ficheros YAML completos
Montaremos tres Deployments con su Service correspondiente. Puedes afinar recursos o images según el hardware de tu VPS, aquí tienes una base sobre la que experimentar.
1. Namespace y ConfigMaps
apiVersion: v1
kind: Namespace
metadata:
name: ia-chat
---
apiVersion: v1
kind: ConfigMap
metadata:
name: gpt-config
namespace: ia-chat
data:
MODEL_PATH: "/models/ggml-gpt4all-j.bin"
2. Despliegue de Whisper (transcriptor de voz)
apiVersion: apps/v1
kind: Deployment
metadata:
name: whisper-api
namespace: ia-chat
spec:
replicas: 1
selector:
matchLabels:
app: whisper-api
template:
metadata:
labels:
app: whisper-api
spec:
containers:
- name: whisper
image: ghcr.io/openai/whisper-asr-webservice:latest
ports:
- containerPort: 9000
resources:
limits:
cpu: "2"
memory: "2Gi"
---
apiVersion: v1
kind: Service
metadata:
name: whisper-api
namespace: ia-chat
spec:
selector:
app: whisper-api
ports:
- protocol: TCP
port: 9000
targetPort: 9000
3. Despliegue de GPT4All/llama.cpp (chatbot local)
apiVersion: apps/v1
kind: Deployment
metadata:
name: local-gpt
namespace: ia-chat
spec:
replicas: 1
selector:
matchLabels:
app: local-gpt
template:
metadata:
labels:
app: local-gpt
spec:
containers:
- name: gpt
image: ghcr.io/gpt4all/gpt4all-api:latest
envFrom:
- configMapRef:
name: gpt-config
ports:
- containerPort: 5000
volumeMounts:
- mountPath: /models
name: model-volume
volumes:
- name: model-volume
hostPath:
path: "/opt/gpt-models" # Ajustar ruta con tu modelo
---
apiVersion: v1
kind: Service
metadata:
name: local-gpt
namespace: ia-chat
spec:
selector:
app: local-gpt
ports:
- protocol: TCP
port: 5000
targetPort: 5000
4. Despliegue de Frontend Flask
apiVersion: apps/v1
kind: Deployment
metadata:
name: chat-frontend
namespace: ia-chat
spec:
replicas: 1
selector:
matchLabels:
app: chat-frontend
template:
metadata:
labels:
app: chat-frontend
spec:
containers:
- name: frontend
image: ghcr.io/usuario/flask-chatgpt-frontend:latest
ports:
- containerPort: 8080
env:
- name: WHISPER_URL
value: "http://whisper-api.ia-chat.svc.cluster.local:9000"
- name: GPT_URL
value: "http://local-gpt.ia-chat.svc.cluster.local:5000"
---
apiVersion: v1
kind: Service
metadata:
name: chat-frontend
namespace: ia-chat
spec:
type: NodePort
selector:
app: chat-frontend
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30888
¿Cómo lo utilizo?
-
Descarga un modelo compatible y guárdalo en tu VPS bajo
/opt/gpt-models/ggml-gpt4all-j.bin
. Puedes encontrar modelos ligeros de prueba en los repositorios de gpt4all (consulta licencias y hardware requerido). -
Despliega los recursos con
kubectl apply -f
en el orden mostrado. - Abre tu navegador apuntando a http://<ip-de-tu-vps>:30888 y prueba tu propio chat privado, ¡por voz o por texto!
¿Qué aprendes con este proyecto?
- Buenas prácticas de microservicios y segregación de responsabilidades.
- Uso de Kubernetes Services para redes internas seguras.
- Montaje de volúmenes para modelos pesados (hostPath).
- Variables de entorno y ConfigMaps para parametrizar despliegues IA.
- Escalabilidad modular: puedes añadir GPU, intermediarios cache, otros frontends, ¡o tus propios plugins!
Consejos y troubleshooting
- Si usas VPS baratos, escoge modelos ligeros (ggml). El rendimiento variará mucho según la CPU.
- El frontend en Flask es sólo un punto de partida. ¡Anímate a conectarlo con Telegram, Slack o tus aplicaciones privadas!
- Si tu cluster tiene GPU, revisa imágenes que aprovechen aceleración (por defecto, estos ejemplos son sólo CPU).
- Checa los logs con
kubectl logs -n ia-chat <POD>
si algún servicio no responde. - Evita exponer directamente tus endpoints de IA a Internet, usa CORS restringido o firewalls.
¡Con esto puedes tener tu propio ChatGPT privado y transcriptor de voz en minutos! Comparte en los comentarios mejoras, ideas y tus experimentos, ¡y cuida bien tus tokens!