9.2 KiB
Despliegue en EasyPanel para VPS2
Proyecto: Workspace de tools IA para empresas
Modulo: RAG
Ultima actualizacion: 2026-04-05
Ultima modificacion por: Agente tools IA para potenciar servicios empresariales
Estado: V1 desplegada en VPS2
Proposito
Dejar documentado el patron de despliegue del servicio RAG dentro de EasyPanel, tomando como referencia lo ya montado y funcionando en VPS2, especialmente webfetch y qdrant dentro del proyecto ia_servicios.
Este documento aplica especificamente al despliegue en VPS2 y no debe interpretarse como una guia universal para cualquier otro servidor o cualquier otra instancia de EasyPanel.
Si en el futuro se despliega en otro VPS, cloud o panel distinto, habra que revisar de nuevo red, dominios, recursos, rutas, politicas y servicios disponibles en ese entorno.
Hallazgos confirmados en VPS2
Servicios detectados en el proyecto o entorno relacionado:
ia_servicios_webfetchia_servicios_qdrantia_servicios_postgres-ia-servicioseasypaneltraefik
Forgejo confirmado:
- dominio web:
https://git.por-correo.com - SSH Git:
git@git.por-correo.compor puerto2222 - el endpoint SSH ya responde correctamente para autenticacion Git
- repo remoto ya creado para
RAG:ssh://git@git.por-correo.com:2222/paco/rag-service.git
Redes Docker relevantes:
easypaneleasypanel-ia_servicios
Patron observado:
- los servicios del proyecto
ia_serviciosse montan como servicios Swarm simples - se unen a la red global de EasyPanel y a la red overlay del proyecto
webfetchcorre sin volumen persistente visibleqdrantcorre con volumen persistente propio
Como esta montado webfetch
Confirmado en la revision:
- imagen:
webfetch:latest - puerto interno:
80 - variables de entorno:
WEBFETCH_API_KEY,PORT, metadatos de despliegue - redes:
easypanelyeasypanel-ia_servicios - sin volumen persistente visible
- expuesto por dominio publico gestionado por EasyPanel y Traefik
Esto lo convierte en una buena referencia para el despliegue del backend RAG, con la diferencia de que RAG necesitara mas variables de entorno y consumira qdrant.
Patron real recuperado del despliegue de webfetch
webfetch no fue construido por EasyPanel.
El flujo real fue:
- Crear un directorio temporal en el VPS.
- Copiar alli los archivos necesarios del servicio.
- Construir la imagen localmente en el VPS con
docker build -t webfetch:latest .. - Forzar el servicio Swarm para reutilizar esa imagen local con
docker service update --force ia_servicios_webfetch. - Ajustar variables de entorno por CLI si hacia falta, por ejemplo la API key.
Implicacion importante
- EasyPanel no generaba la imagen
- Docker en el VPS si la generaba
- EasyPanel solo apuntaba al nombre de imagen local
webfetch:latest
Esto explica por que el boton Deploy puede fallar en este patron: intenta hacer docker pull de una imagen que solo existe localmente en el VPS.
Lo que esto significa para RAG
Hay dos caminos validos para RAG en VPS2:
- repetir el patron de
webfetch
- construir la imagen localmente en el VPS
- apuntar el servicio de EasyPanel a esa imagen local
- usar un registry
- publicar la imagen en un registry accesible
- dejar que EasyPanel pueda redeplegar sin depender de imagen local preexistente
Para robustez operativa, el segundo camino es mejor. Para velocidad de arranque, el primero se parece mas a como ya se monto webfetch.
Patron correcto esperado por EasyPanel
Contrastando el caso real de webfetch con la documentacion oficial de EasyPanel:
- EasyPanel espera que un
App Servicetenga una fuente declarada - esa fuente puede ser:
- repositorio GitHub
- proveedor Git custom
- imagen Docker publicada y accesible
- si hay
Dockerfileen el repositorio, EasyPanel puede construir la imagen desde ese codigo
Implicacion practica
El despliegue de webfetch funciono, pero no quedo totalmente integrado en EasyPanel porque la imagen solo existia localmente en el VPS.
Eso rompe parte del flujo esperado del panel, especialmente el redeploy autonomo desde Deploy, porque el panel intenta hacer pull o reconstruir segun la fuente configurada.
Conclusion para RAG
Si queremos que RAG quede bien integrado en EasyPanel, lo correcto no es repetir exactamente el patron manual de webfetch.
Lo correcto es elegir uno de estos caminos:
- App Service + repositorio Git + Dockerfile
- EasyPanel construye la imagen desde el codigo del repo
- es la opcion mas integrada con el panel
- App Service + imagen publicada en registry
- EasyPanel hace pull de una imagen accesible externamente
- tambien queda bien integrado
El patron de imagen solo local en el VPS debe considerarse util como solucion temporal o de emergencia, pero no como la forma final deseable si queremos integracion completa con EasyPanel.
Dado que Forgejo ya esta operativo en git.por-correo.com, el camino preferente para RAG pasa a ser:
- subir el codigo del modulo a un repo propio en Forgejo
- conectar EasyPanel por Git SSH
- dejar que el
App Serviceconstruya desde elDockerfile
Estado actual ya conseguido:
- el repo
paco/rag-serviceya existe en Forgejo - el workspace local ya esta conectado al remote
origin - la rama
mainya fue subida correctamente
Como esta montado qdrant
Confirmado en la revision:
- imagen:
qdrant/qdrant:v1.15 - puerto interno:
6333 - volumen persistente:
ia_servicios_qdrant_storage - mount path:
/qdrant/storage - redes:
easypanelyeasypanel-ia_servicios
Dato importante para RAG:
- al vivir en la misma red del proyecto,
RAGno deberia consumirqdrantpor dominio publico - lo correcto es usar la conectividad interna del proyecto, por ejemplo
http://qdrant:6333
Patron recomendado para desplegar RAG en VPS2
Tipo de servicio
- servicio HTTP dentro del proyecto
ia_servicios - montado como app en EasyPanel
Imagen
- imagen generada desde el
Dockerfiledel moduloRAG - etiqueta recomendada inicial:
rag-service:localo una equivalente en registry cuando se publique
Puerto interno
3000
Redes esperadas
easypaneleasypanel-ia_servicios
Variables de entorno recomendadas
PORT=3000NODE_ENV=productionQDRANT_URL=http://qdrant:6333QDRANT_API_KEY=si se activa mas adelanteQDRANT_COLLECTION=rag_chunksEMBEDDING_PROVIDER=openrouterEMBEDDING_MODEL=qwen/qwen3-embedding-8bEMBEDDING_BASE_URL=https://openrouter.ai/api/v1EMBEDDING_API_KEY=<valor real>ANSWER_PROVIDER=openrouterANSWER_MODEL=openai/gpt-4.1-miniANSWER_BASE_URL=https://openrouter.ai/api/v1ANSWER_API_KEY=<valor real>
Volumen persistente
- no es obligatorio para la app RAG en esta fase
- el estado persistente principal vive en
qdrant
Dominio esperado en VPS2
Si se sigue el patron actual del proyecto, un dominio temporal de EasyPanel para RAG podria verse parecido a:
ia-servicios-rag.<subdominio easypanel>
Mas adelante podra moverse a un dominio propio o subdominio dedicado si conviene.
Recomendacion operativa para VPS2
Para el despliegue real de RAG en EasyPanel:
- Construir o subir la imagen del servicio.
- Crear el servicio en el proyecto
ia_servicios. - Configurar el puerto interno
3000. - Configurar variables de entorno.
- Usar
QDRANT_URL=http://qdrant:6333para aprovechar la red interna. - Exponer dominio solo para el backend
RAG, no para la conexion interna conqdrant. - Probar
GET /health,POST /retrieveyPOST /answerdesde el dominio publicado.
Recomendacion especifica segun el patron actual del VPS2
Si se quiere ir rapido y replicar el modelo de webfetch:
- construir la imagen
RAGdirectamente en el VPS2 - etiquetarla con un nombre local estable, por ejemplo
rag-service:latest - crear o actualizar el servicio de EasyPanel para usar esa imagen local
Si se quiere un despliegue mas mantenible a medio plazo:
- publicar la imagen en registry
- configurar EasyPanel para tirar de esa imagen publicada
- evitar depender de builds manuales dentro del VPS
Si se quiere ademas aprovechar mejor la integracion del panel:
- montar
RAGcomoApp Service - conectar el codigo fuente por Git
- usar el
Dockerfiledel moduloRAG - dejar que EasyPanel gestione build y redeploy segun su flujo esperado
Observacion importante
El servicio ya esta funcional en local con Qdrant remoto y con modos documental y codigo probados.
El siguiente salto natural es solo operativo:
- construir la imagen Docker sin errores de red
- montarla en EasyPanel siguiendo este patron
Estado real alcanzado
El despliegue ya se ha completado en VPS2.
Estado confirmado:
- dominio activo:
https://rag.por-correo.com - servicio escuchando correctamente en produccion
Qdrantoperativo por red interna- pruebas superadas de
health,retrieveyanswer
Consulta documental ya validada:
que tenemos pendiente por hacer en este workspace
Consulta de codigo ya validada:
como se construye source_id en el rag
Pendiente de mejora ya detectado:
- sustituir mas adelante el modelo actual de
answerpor una opcion alineada con la estrategia tecnica del proyecto