Autoalojar LiteLLM Proxy: claves virtuales, presupuestos y comparativa con New API y Magpie
Despliega LiteLLM Proxy con PostgreSQL en tu propio servidor usando la plantilla de Zenavo, configura proveedores de modelos en el panel /ui, emite claves virtuales con límite de gasto y compara LiteLLM, New API y Magpie.
Este artículo también está disponible en English, 简体中文, 繁體中文, 日本語 y Bahasa Indonesia.
Meter las claves de API principales de tus proveedores directamente en cada aplicación o portátil del equipo impide limitar cuánto puede gastar un servicio y obliga a cambiar la configuración en todas partes cuando toca rotar una clave. LiteLLM es uno de los proxies de modelos de código abierto más usados en el ecosistema de Python e ingeniería de IA: unifica más de 100 proveedores tras un único endpoint compatible con OpenAI, e incluye el panel de administración /ui, claves virtuales (Virtual Keys), límites de presupuesto (Budgets) y registro de gasto por petición.
En esta guía usamos la plantilla de LiteLLM de Zenavo para desplegar LiteLLM junto con PostgreSQL en tu propio servidor Linux, y lo comparamos con New API y Magpie. El servidor, Zenavo y las API de los modelos se facturan por separado.
1. Despliega LiteLLM y PostgreSQL
Conecta un servidor Linux a Zenavo (se recomienda al menos 1 GB de memoria), abre la plantilla de LiteLLM, elige el servidor y despliega.
El proyecto arranca con dos servicios conectados a través de la red privada del proyecto:
| Servicio / Variable | Valor o finalidad |
|---|---|
litellm |
Imagen ghcr.io/berriai/litellm:v1.109.1, puerto HTTP 4000 |
postgresql |
Imagen postgres:16, base de datos litellm, volumen persistente /var/lib/postgresql/data |
LITELLM_MASTER_KEY |
Clave maestra sk-... generada automáticamente para iniciar sesión en /ui y usar las API de administración |
LITELLM_SALT_KEY |
Sal de cifrado generada automáticamente para cifrar en PostgreSQL las claves de API de tus proveedores |
STORE_MODEL_IN_DB |
True, para que los modelos añadidos desde /ui se guarden en PostgreSQL |
No cambies nunca
LITELLM_SALT_KEYdespués de guardar credenciales: LiteLLM usaLITELLM_SALT_KEYpara cifrar y descifrar las claves de los proveedores en la base de datos. Si la cambias más adelante, las claves guardadas dejarán de poder leerse. CopiaLITELLM_MASTER_KEYyLITELLM_SALT_KEYen tu gestor de contraseñas (por ejemplo, Vaultwarden autoalojado) nada más desplegar.
2. Asocia un dominio e inicia sesión en /ui
- En la pestaña Networking del servicio
litellm, asocia un dominio personalizado comollm.example.comal puerto4000y añade un registro DNSAque apunte a tu servidor. Consulta Dominios y HTTPS. - En la pestaña Variable del servicio
litellm, copiaLITELLM_MASTER_KEY. - Abre
https://llm.example.com/uie inicia sesión con el usuarioadminy tuLITELLM_MASTER_KEY.
postgresql solo se comunica con litellm por la red privada y no necesita acceso público.
3. Añade modelos y emite claves virtuales
Añade modelos de proveedores
Como la plantilla activa STORE_MODEL_IN_DB="True", no hace falta editar ningún archivo YAML:
- En
/ui, abre Models → Add Model. - Elige un proveedor (OpenAI, Anthropic, DeepSeek, Gemini, Azure, Bedrock, etc.), escribe el alias del modelo que pedirán tus clientes (como
claude-sonnetogpt-4o) y pega la clave de API del proveedor. - Guarda y envía una petición de prueba en Test Key / Playground para confirmar que responde.
Emite claves virtuales con presupuesto (Virtual Keys)
No uses LITELLM_MASTER_KEY en el código de tus aplicaciones ni en tus herramientas diarias. Abre Virtual Keys → Create New Key:
- Crea una clave distinta para cada aplicación, compañero o herramienta (por ejemplo,
nextjs-prod,open-webui,claude-code-alex); - Limita qué modelos puede llamar esa clave;
- Define un presupuesto máximo (Max Budget, por ejemplo
$20), un periodo de reinicio (diario o mensual) y límites de velocidad (TPM / RPM).
4. Conecta aplicaciones, agentes de programación e interfaces de chat
Cualquier SDK o cliente que admita una URL base de OpenAI personalizada se conecta directamente a LiteLLM:
- Backends de aplicaciones (OpenAI SDK / LangChain / Vercel AI SDK): usa
https://llm.example.com/v1como Base URL y una clave virtual como API Key. Si tu aplicación corre en el mismo proyecto de Zenavo (como una app Next.js con PostgreSQL), llama directamente ahttp://litellm.zenavo.internal:4000/v1por la red privada. - Claude Code y Codex CLI: LiteLLM también sirve
/v1/messagesy/v1/responses; configúralos con las mismas variables de entorno explicadas en la guía de New API. Si además quieres ver registros, desplegar y revertir servicios de Zenavo desde Claude Code, consulta Desplegar y depurar proyectos de Zenavo desde Claude Code. - Interfaces de chat y agentes personales: en Open WebUI, LobeHub u OpenClaw autoalojados, apunta la URL del proxy de OpenAI a
https://llm.example.com/v1(ohttp://litellm.zenavo.internal:4000/v1dentro del mismo proyecto).
5. LiteLLM vs New API vs Magpie: ¿qué pasarela elegir?
El catálogo de Zenavo ofrece tres pasarelas de modelos de código abierto, cada una pensada para un caso de uso distinto:
| Plantilla de pasarela | Enfoque principal | Almacenamiento | Ideal para |
|---|---|---|---|
| LiteLLM | Proxy OpenAI orientado a ingeniería y SDK, con claves virtuales, presupuestos, guardrails e integración con Langfuse / OpenTelemetry | PostgreSQL 16 | Backends de aplicaciones de IA en producción y equipos de ingeniería que controlan presupuestos y registros por servicio |
| New API | Centro multiusuario de reparto y contabilidad de modelos, con cuentas de usuario, cuotas de tokens y balanceo de canales | SQLite (/data) por defecto |
Repartir cuentas o tokens por persona en un equipo para usar Open WebUI, LobeHub, Claude Code y Codex |
| Magpie | Pasarela ligera en un solo contenedor que traduce entre Anthropic Messages, OpenAI Responses/Chat y Gemini, con conmutación por error entre claves y suscripciones | Volumen /config |
Desarrolladores individuales y equipos pequeños que usan Claude Code y Codex CLI y quieren enrutar entre protocolos con un panel /me de autoconsulta |
6. Copias de seguridad y actualizaciones
LiteLLM guarda sus modelos, claves virtuales y registros de gasto en el servicio postgresql:
- Abre la pestaña Backup & Restore del servicio
postgresqlpara crear y descargar copias de seguridad de la base de datos o programar copias automáticas. Consulta Copias de seguridad y restauración. - Guarda siempre
LITELLM_SALT_KEYjunto con las copias de seguridad de la base de datos: sin laLITELLM_SALT_KEYoriginal, una base de datos restaurada no podrá descifrar las claves de los proveedores que contiene. - Antes de actualizar, haz primero una copia de seguridad de PostgreSQL y luego cambia la etiqueta de la imagen (por defecto
v1.109.1) en Settings → Source del serviciolitellm.
Preguntas frecuentes
¿Por qué /ui devuelve 502 recién terminado el despliegue?
Al arrancar, LiteLLM espera a PostgreSQL y ejecuta sus migraciones de base de datos con Prisma; la plantilla incluye un margen de 40 segundos en la comprobación de estado (start_period: 40). Espera a que el servicio pase a Running o abre el Zenavo Agent integrado en el borde derecho de la consola para revisar los registros de arranque.
Al añadir un modelo en /ui dice que no puede guardarlo en la base de datos.
Comprueba que la variable STORE_MODEL_IN_DB="True" sigue activa en el servicio litellm y que el servicio postgresql está en estado Running.
Un cliente recibe BudgetExceededError.
Esa clave virtual ha alcanzado su Max Budget. Abre Virtual Keys en /ui para ampliar su presupuesto, reiniciar el gasto acumulado o configurar un reinicio mensual automático.
¿Puedo usar LiteLLM y New API juntos?
Sí. Algunos equipos gestionan el grupo de canales de proveedores en New API y colocan LiteLLM delante de sus microservicios para controlar el presupuesto por aplicación y enviar trazas a Langfuse, conectando ambos por .zenavo.internal.
Despliega la plantilla de LiteLLM y pon tus proveedores de modelos tras un proxy con PostgreSQL y control de presupuesto en cuestión de minutos.
Esto es lo que leen los agentes de programación, en https://zenavo.app/es-ES/blog/self-host-litellm.md.
No se pudo cargar el Markdown. Ábrelo directamente: https://zenavo.app/es-ES/blog/self-host-litellm.md