[{"data":1,"prerenderedAt":167},["ShallowReactive",2],{"seo-verification":3,"blog-alojar-langfuse-en-un-vps-ma-es":6,"promo-bar-likely":166},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-alojar-langfuse-en-un-vps-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":99,"ctaBody":100,"ctaButton":101,"ctaUrl":102,"relatedPosts":103},177,"alojar-langfuse-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"self-host-langfuse-vps","self-host-langfuse-on-a-vps-llm-observability-no-saas-bill","استضافة-langfuse-على-vps-مراقبة-llm-بلا-فاتورة-saas","Alojar Langfuse en un VPS: observabilidad LLM sin SaaS","Autoaloje Langfuse en un VPS — rastree cada llamada de IA, evalúe prompts y controle costos LLM. Guía completa: nginx, TLS, SDK Python\u002FJS, solución de problemas.",11,2,false,"2026-07-12T00:00:00+00:00","2026-11-04T16:30:26+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},1,"Inteligencia Artificial","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-langfuse-vps-poster.svg",{"categorySlug":34,"appSlug":35},"inteligencia-artificial","langfuse","Toda aplicación impulsada por un LLM acaba planteando una pregunta que sus desarrolladores no pueden responder solo con los logs: ¿por qué se degradó esta respuesta, qué versión del prompt rindió mejor y adónde se va el dinero? Langfuse (MIT, ~30 k estrellas en GitHub, v3.212.0) es la respuesta open source: una plataforma de observabilidad full-stack para aplicaciones LLM, que usted despliega en su propio VPS y conecta a cualquier proveedor de modelos en unos minutos.",[38,42,52,55,80,83,87,90,93,96],{"type":39,"title":40,"body":41},"h2","Por qué las aplicaciones LLM necesitan una observabilidad dedicada","Las herramientas de APM tradicionales (Datadog, New Relic) capturan la latencia HTTP y las tasas de error, pero son ciegas a lo que ocurre dentro de una llamada LLM. Una respuesta que llega en 800 ms puede ser igualmente falsa, tan vaga que resulte inútil, o tres veces más cara que la de la víspera porque una regresión de prompt se coló entre las mallas de la revisión de código. Langfuse resuelve este problema tratando cada interacción LLM como una traza estructurada: registra el prompt completo (incluidos el mensaje de sistema y el historial de conversación), la compleción, el modelo utilizado, el recuento de tokens, el desglose de la latencia por span, así como todas las puntuaciones de evaluación que su equipo le asocie. Después puede filtrar, comparar y reproducir cualquier traza, individualmente o de forma agregada.",{"type":43,"title":44,"items":45},"ul","Lo que Langfuse le ofrece de entrada",[46,47,48,49,50,51],"Trazado LLM full-stack: prompt, compleción, latencia, costo y número de tokens — incluidos los spans anidados para las cadenas de agentes (LangChain, LlamaIndex, Dify).","Hub de gestión de prompts: versione sus prompts, prepare variantes, haga pruebas A\u002FB en producción y promueva la ganadora sin despliegue de código.","Framework de evaluación: ejecute LLM-as-a-judge, colas de anotación humana o funciones de scoring personalizadas sobre cualquier traza o dataset.","Analítica de costos: siga el consumo de tokens por modelo, endpoint, usuario y sesión — cambie de proveedor apoyándose en datos concretos, no en suposiciones.","Gestión de datasets: capture las trazas de producción como juegos de pruebas de referencia para la evaluación sin conexión y la detección de regresiones.","SDK nativo para Python y TypeScript, más una integración automática con LiteLLM, LangChain, LlamaIndex, Dify, Haystack y VercelAI.",{"type":39,"title":53,"body":54},"Sobre qué funciona Langfuse (y por qué necesita 4 GB de RAM)","Langfuse v3 se presenta como un stack Docker Compose de seis servicios: `langfuse` (frontend Next.js + API), `langfuse-worker` (tareas en segundo plano y evaluaciones), `postgres` (estado de la aplicación), `clickhouse` (analítica de las trazas — almacenamiento en columnas optimizado para las series temporales de alta cardinalidad), `redis` (cola y caché) y `minio` (almacenamiento de objetos compatible con S3 para los archivos multimedia adjuntos). ClickHouse justifica el mínimo de 4 GB: su compilador JIT y su motor de ejecución vectorial necesitan margen. En un VPS poco solicitado, el stack completo consume en reposo entre 1,5 y 2 GB; bajo una carga de producción moderada, prevea 4 GB, y 8 GB para un trazado sostenido de alto rendimiento.",{"type":56,"title":57,"steps":58},"steps","Desplegar Langfuse en su VPS en seis pasos",[59,62,65,68,71,74,77],{"title":60,"body":61},"Pida un VPS Power (8 GB de RAM)","Langfuse exige al menos 4 GB de RAM: en el catálogo, el primer plan que los supera es el VPS Power (4 vCPU, 8 GB), instalado sobre Ubuntu 24.04 — suficiente también para un tráfico de producción permanente. Elija un dominio o subdominio que usted controle — las cookies de sesión NextAuth de Langfuse exigen un verdadero dominio en HTTPS.",{"title":63,"body":64},"Instalación en un clic desde el Marketplace","Abra su panel de control ServOrbit, vaya a Marketplace → Inteligencia Artificial → Langfuse, y haga clic en Desplegar. Introduzca su dominio cuando se le solicite. Docker Compose descarga las seis imágenes y las arranca; la interfaz web está lista en el puerto 3000 en 60 a 90 segundos.",{"title":66,"body":67},"Abra la interfaz web y cree su primer proyecto","Vaya a `https:\u002F\u002Fvotre-domaine.com`. Langfuse muestra la pantalla de registro en el primer arranque. Cree su cuenta de administrador y luego vaya a Ajustes → Proyectos → Crear un proyecto. Copie la **Clave pública** y la **Clave secreta** desde los ajustes del proyecto — las necesitará en su aplicación.",{"title":69,"body":70},"Instrumente su aplicación Python o TypeScript","En Python: `pip install langfuse`, defina `LANGFUSE_HOST=https:\u002F\u002Fvotre-domaine.com`, `LANGFUSE_PUBLIC_KEY` y `LANGFUSE_SECRET_KEY`, y luego decore sus llamadas LLM con `@observe()` o utilice `langfuse.trace()`. En TypeScript: `npm install langfuse`, inicialice el cliente con su host y sus claves. Las trazas aparecen en el panel unos segundos después de la primera llamada.",{"title":72,"body":73},"Active el trazado automático si utiliza LiteLLM","Si LiteLLM ya forma parte de su stack, añada `success_callback = [\"langfuse\"]` a `litellm_config.yaml` y defina las tres variables de entorno de Langfuse. Cada llamada LLM retransmitida por el proxy se traza automáticamente, con los datos de costo y de tokens adjuntos.",{"title":75,"body":76},"Lance su primera evaluación","Vaya a Traces, filtre una muestra representativa y haga clic en «Añadir al dataset». Abra Datasets → su dataset → Lanzar la evaluación, elija el LLM-as-a-judge con una plantilla de prompt («Evalúe la pertinencia de esta respuesta en una escala del 1 al 5») y confirme. Las puntuaciones aparecen en cada traza del conjunto y alimentan el panel analítico agregado.",{"title":78,"body":79},"Conectarse por primera vez","La URL abre la pantalla de Langfuse con un enlace «Sign up»: cree su cuenta y, después, su organización y su primer proyecto en el asistente.",{"type":39,"title":81,"body":82},"Configuración post-instalación: reverse proxy nginx, TLS y variables de entorno clave","La instalación del Marketplace de ServOrbit configura nginx y el certificado TLS por usted. Si parte de una instalación manual, estos son los puntos críticos.\n\n**Reverse proxy nginx.** Langfuse escucha en el puerto 3000. Su vhost nginx debe proxificar este puerto y transmitir las cabeceras que NextAuth necesita:\n\n```nginx\nserver {\n    listen 443 ssl;\n    server_name your-domain.com;\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\nSi `X-Forwarded-Proto` no se transmite, NextAuth genera URLs de callback en `http:\u002F\u002F` y las cookies de sesión no se adjuntan en la respuesta HTTPS — síntoma: bucle de redirección después del inicio de sesión.\n\n**Variables de entorno clave.** El archivo `.env` del stack Langfuse tiene tres variables que debe personalizar antes del primer arranque:\n\n- `NEXTAUTH_SECRET`: cadena aleatoria larga (mínimo 32 caracteres). Sin ella, las sesiones no persisten entre reinicios.\n- `NEXTAUTH_URL`: URL pública completa de su instancia (`https:\u002F\u002Fyour-domain.com`). Debe coincidir exactamente con el dominio nginx.\n- `LANGFUSE_INIT_ORG_ID`, `LANGFUSE_INIT_PROJECT_ID`, `LANGFUSE_INIT_PROJECT_PUBLIC_KEY`, `LANGFUSE_INIT_PROJECT_SECRET_KEY`: opcionales, pero útiles para provisionar organización y proyecto en el primer arranque sin usar la interfaz.\n\n**TLS.** Los despliegues de ServOrbit usan Let's Encrypt mediante certbot en modo DNS-01 — no es necesario abrir el puerto 80. Si configura el certificado manualmente, apunte las directivas `ssl_certificate` y `ssl_certificate_key` hacia los archivos emitidos por certbot y active la renovación automática.",{"type":84,"title":85,"body":86},"tip","Combínelo con LiteLLM para una visibilidad completa de los costos de la IA","El stack de IA de ServOrbit ya incluye LiteLLM como pasarela compatible con OpenAI. Conecte Langfuse a LiteLLM con tres variables de entorno y obtendrá una visión de conjunto completa: LiteLLM aplica los límites de tasa y enruta entre los proveedores; Langfuse registra cada traza con el prompt completo, la compleción, el modelo, los tokens y el costo. Juntos le ofrecen una capa de operaciones de IA privada y auditable — sin intermediario SaaS, sin ningún dato que salga de su infraestructura.",{"type":39,"title":88,"body":89},"Integración SDK: trazado de sus agentes LLM en Python y TypeScript","Langfuse incluye dos SDK oficiales que cubren los principales frameworks de agentes.\n\n**Python — decorador `@observe()`.**\nLa forma más directa de trazar un agente:\n\n```python\nfrom langfuse.decorators import observe, langfuse_context\n\n@observe()\ndef run_agent(user_message: str) -> str:\n    response = openai_client.chat.completions.create(\n        model=\"gpt-4o\",\n        messages=[{\"role\": \"user\", \"content\": user_message}]\n    )\n    return response.choices[0].message.content\n```\n\nTodas las funciones anidadas decoradas con `@observe()` aparecen como spans hijos dentro de la misma traza. Para adjuntar metadatos:\n\n```python\nlangfuse_context.update_current_trace(\n    user_id=\"user-42\",\n    session_id=\"session-abc\",\n    tags=[\"production\", \"agent-v2\"]\n)\n```\n\n**LangChain.** La integración nativa se activa en una línea:\n\n```python\nfrom langfuse.callback import CallbackHandler\nhandler = CallbackHandler()\nchain.invoke({\"input\": query}, config={\"callbacks\": [handler]})\n```\n\n**TypeScript \u002F JavaScript.**\nInicialización del cliente:\n\n```typescript\nimport Langfuse from \"langfuse\";\nconst lf = new Langfuse({\n  publicKey: process.env.LANGFUSE_PUBLIC_KEY!,\n  secretKey: process.env.LANGFUSE_SECRET_KEY!,\n  baseUrl: process.env.LANGFUSE_HOST,\n});\n```\n\nCreación de una traza y una generación:\n\n```typescript\nconst trace = lf.trace({ name: \"agent-run\", userId: \"user-42\" });\nconst generation = trace.generation({ name: \"llm-call\", model: \"gpt-4o\", input: messages });\n\u002F\u002F … llamada LLM …\ngeneration.end({ output: result, usage: { input: 120, output: 45 } });\nawait lf.shutdownAsync();\n```",{"type":39,"title":91,"body":92},"Costos LLM mostrados a $0.00 en la vista Tracing v4 — qué ocurre y cómo sortearlo","Un problema activo afecta a la vista Tracing v4 de Langfuse (reportado en la \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flangfuse\u002Flangfuse\u002Fissues\u002F16077\">issue #16077\u003C\u002Fa>, 17 comentarios en agosto de 2026): la columna **Cost ($)** muestra sistemáticamente $0.00 en todas las trazas.\n\nLa causa es estructural. La vista v4 lee el costo que lleva la **observación raíz** de cada traza, que es de tipo SPAN: un span no tiene costo propio, solo encapsula generaciones hijas. El costo real se reparte entre las observaciones de tipo GENERATION hijas, pero la vista no las agrega: lee la raíz, encuentra cero y muestra cero.\n\nSus datos están intactos. Tres soluciones alternativas funcionan mientras llega la corrección oficial:\n\n**1. Pestaña Analytics \u002F Metrics** — la vista agregada calcula los costos sobre el conjunto de las generaciones.\n\n**2. Filtrar por tipo GENERATION en Traces** — añada el filtro `observation_type = GENERATION`. Cada línea muestra su costo real.\n\n**3. Abrir el detalle de una traza** — el panel lateral muestra el desglose completo con los costos correctos.\n\nSi observa este comportamiento, compruebe que está en Langfuse v3.x con Tracing v4 activado. La issue está abierta y con seguimiento del equipo de Langfuse.",{"type":39,"title":94,"body":95},"Solución de problemas: cinco errores frecuentes tras la instalación","**1. El contenedor `langfuse` no arranca — `Error: NEXTAUTH_SECRET` ausente.**\nCompruebe su `.env`:\n\n```bash\ndocker compose config | grep NEXTAUTH_SECRET\n```\n\nSi la línea está ausente o vacía, genere un valor y reinicie:\n\n```bash\nopenssl rand -base64 32\n# pegue el resultado en .env: NEXTAUTH_SECRET=\u003Cvalor>\ndocker compose up -d langfuse\n```\n\n**2. Conexión a la base de datos rechazada — `ECONNREFUSED postgres:5432`.**\nCasi siempre es un problema de temporización en el arranque. Verifique que su `docker-compose.yml` declara `depends_on` con `condition: service_healthy` para el servicio `postgres`. Inspeccione los logs de postgres si el problema persiste:\n\n```bash\ndocker compose logs postgres --tail=50\n```\n\n**3. Las trazas no aparecen en el panel.**\nCompruebe: (a) ¿están definidas las variables `LANGFUSE_HOST`, `LANGFUSE_PUBLIC_KEY` y `LANGFUSE_SECRET_KEY` en su aplicación? (b) ¿apunta el host a la URL HTTPS pública y no a `localhost:3000`? (c) ¿vacía el SDK Python su búfer antes de que finalice el proceso (`langfuse.flush()`)?\n\nLlamada de prueba rápida:\n\n```python\nfrom langfuse import Langfuse\nlf = Langfuse()\nlf.trace(name=\"test-connection\")\nlf.flush()\nprint(\"Traza enviada — compruebe el panel.\")\n```\n\n**4. Bucle de redirección después del inicio de sesión.**\nCausa más frecuente: `NEXTAUTH_URL` no coincide con el dominio en uso, o `X-Forwarded-Proto` no se transmite desde nginx. Verifique que `NEXTAUTH_URL=https:\u002F\u002Fyour-domain.com` (sin barra final) y que su configuración nginx incluye `proxy_set_header X-Forwarded-Proto $scheme;`.\n\n**5. ClickHouse consume toda la RAM disponible.**\nLimite el consumo de memoria añadiendo a su `.env`:\n\n```bash\nCLICKHOUSE_MAX_MEMORY_USAGE=2000000000\n```\n\nEste valor (2 GB) es un punto de partida razonable para un VPS de 8 GB que aloja únicamente Langfuse.",{"type":39,"title":97,"body":98},"Langfuse vs Langsmith vs Helicone","Langsmith (el producto alojado de LangChain) y Helicone son las principales alternativas SaaS. Ambos son excelentes — y ambos le obligan a hacer transitar sus trazas por sus servidores. Para los equipos que manipulan prompts sensibles (jurídicos, financieros, médicos), o para los entornos de conformidad que prohíben toda salida de datos hacia un tercero, el autoalojamiento no es una opción. Langfuse le ofrece el mismo conjunto de funcionalidades (trazado, evaluaciones, gestión de prompts, analítica de costos) sobre una infraestructura que usted controla. La licencia MIT significa también que puede leer, modificar y auditar cada línea del código por el que transitan sus trazas.","Despliegue Langfuse en su VPS","Obtenga una observabilidad LLM completa en un clic: rastree cada petición de IA, gestione sus prompts y controle sus costos, sobre una infraestructura que usted controla.","Desplegar Langfuse","\u002Fapplications\u002Finteligencia-artificial\u002Flangfuse",[104,128,147],{"id":105,"slug":106,"slugs":107,"title":111,"excerpt":112,"readTime":113,"views":114,"isPinned":19,"noindex":19,"publishedAt":115,"updatedAt":116,"category":117,"categories":123,"featuredImage":30,"bgImage":31,"posterImage":125,"relatedSolution":126},156,"alojar-litellm-en-un-vps-pasarela-llm-privada",{"fr":108,"en":109,"ar":110,"es":106},"self-host-litellm-vps","self-host-litellm-on-a-vps-your-private-llm-api-gateway","استضف-litellm-ذاتيا-على-vps-بوابة-api-خاصة-لنماذج-llm","Alojar LiteLLM en un VPS: su pasarela de API LLM privada","Despliegue LiteLLM en un VPS ServOrbit: pasarela de API compatible con OpenAI hacia Ollama, Anthropic, Azure y 100+ LLM, con control del gasto y límites por clave.",9,3,"2026-01-21T00:00:00+00:00","2026-11-09T20:55:12+00:00",{"id":118,"name":119,"slug":120,"color":121,"icon":122},7,"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[124],{"id":118,"name":119,"slug":120,"color":121,"icon":122},"\u002Fblog\u002Fcovers\u002Fself-host-litellm-vps-poster.svg",{"categorySlug":34,"appSlug":127},"litellm",{"id":129,"slug":130,"slugs":131,"title":135,"excerpt":136,"readTime":137,"views":138,"isPinned":19,"noindex":19,"publishedAt":139,"updatedAt":140,"category":141,"categories":142,"featuredImage":30,"bgImage":31,"posterImage":144,"relatedSolution":145},12,"como-alojar-localai-en-un-vps",{"fr":132,"en":133,"ar":134,"es":130},"heberger-localai-vps","how-to-host-localai-on-a-vps","كيفية-استضافة-localai-على-خادم-vps","Cómo alojar LocalAI en un VPS","Despliegue LocalAI en su VPS: Docker Compose completo, modelos GGUF, galería, Whisper, embeddings, protección por clave API, conexión SDK OpenAI y solución de problemas.",8,0,"2026-06-08T00:00:00+00:00","2026-10-07T23:07:24+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[143],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-localai-vps-poster.svg",{"categorySlug":34,"appSlug":146},"local-ai",{"id":148,"slug":149,"slugs":150,"title":154,"excerpt":155,"readTime":156,"views":138,"isPinned":19,"noindex":19,"publishedAt":157,"updatedAt":158,"category":159,"categories":160,"featuredImage":30,"bgImage":31,"posterImage":162,"relatedSolution":163},176,"alojar-openobserve-en-un-vps",{"fr":151,"en":152,"ar":153,"es":149},"self-host-openobserve-vps","self-host-openobserve-on-a-vps-unified-logs-metrics-and-traces","استضافة-openobserve-على-vps-سجلات-ومقاييس-وتتبعات-موحدة","Alojar OpenObserve en un VPS: logs, métricas y trazas","Sustituya Elasticsearch + Grafana por OpenObserve: un solo binario Rust para logs, métricas, trazas y paneles, con un almacenamiento 140× más barato.",6,"2026-07-10T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":118,"name":119,"slug":120,"color":121,"icon":122},[161],{"id":118,"name":119,"slug":120,"color":121,"icon":122},"\u002Fblog\u002Fcovers\u002Fself-host-openobserve-vps-poster.svg",{"categorySlug":164,"appSlug":165},"monitorizacion-observabilidad","openobserve",true,1794270533530]