Guia para apps alojadas en el servidor pmpserverubu (Coolify) que necesitan consumir el MCP de pampling-global-database (Odoo, bases de datos SQL). Objetivo: que la misma base de codigo funcione en local y en produccion cambiando solo variables de entorno, y que el trafico en produccion vaya por la red interna de Docker sin salir al dominio publico.
Desde una app que corre en local, lo natural es apuntar al dominio publico:
PAMPLING_DB_MCP_URL=https://globaldb.pampl.ing/mcp
En produccion eso tambien funciona, pero hace que el trafico salga del servidor, pase por Traefik y el dominio publico, y vuelva a entrar. Ademas anade latencia y dependencia innecesaria del DNS publico y del certificado TLS. Conviene resolver por red interna de Docker.
La app define varias variables de URL y las prueba en orden de prioridad. La primera que responda se usa; el resto queda como fallback.
Orden recomendado:
PAMPLING_DB_MCP_CONTAINER_URL — hostname interno en CoolifyPAMPLING_DB_MCP_GATEWAY_URL — gateway interno si hay un aliasPAMPLING_DB_MCP_PROXY_URLPAMPLING_DB_MCP_INTERNAL_URLPAMPLING_DB_MCP_URL — dominio publico (local y ultimo fallback)Configuracion en cada entorno:
PAMPLING_DB_MCP_URL=https://globaldb.pampl.ing/mcp.PAMPLING_DB_MCP_CONTAINER_URL con el hostname interno.Siempre acompanado de:
PAMPLING_DB_MCP_AUTHORIZATION=Bearer <token de usuario del MCP>
pampling-global-database tiene configurado un alias de red Docker estable en Coolify:
pampling-global-database
Esto significa que desde cualquier app en la red coolify se puede usar siempre la misma URL, aunque Coolify recree el contenedor:
PAMPLING_DB_MCP_CONTAINER_URL=http://pampling-global-database:8000/mcp
Es lo recomendado para apps nuevas.
En Coolify, en la app pampling-global-database, el campo custom_network_aliases tiene el valor pampling-global-database. Coolify lo traduce al compose interno para que Docker lo anada como alias de red al contenedor.
Configurable via UI de Coolify (Application → Advanced → Network aliases) o via API:
curl -X PATCH "http://COOLIFY_HOST:8000/api/v1/applications/UUID" \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"custom_network_aliases":"pampling-global-database"}'
Requiere redeploy para aplicarse.
En el servidor:
docker inspect $(docker ps --filter "name=q179bkab6m4ls" --format '{{.Names}}') \
--format '{{json .NetworkSettings.Networks}}' | jq .
En la lista Aliases de la red coolify debe aparecer pampling-global-database.
Antes de configurar el alias, la unica URL interna era el nombre del contenedor con sufijo que Coolify genera:
q179bkab6m4lsz7ogg31uzn5-113734424905
Problema: al redesplegar pampling-global-database, el sufijo cambia y las apps consumidoras fallan con ENOTFOUND. Ya no es necesario usar este formato; usar el alias estable.
Si por algun motivo hay que recuperarlo, el hostname actual se obtiene con:
docker ps --format '{{.Names}} {{.Networks}} {{.Ports}}' | grep -E 'q179|8000|database|mcp'
Variables en produccion:
PAMPLING_DB_MCP_CONTAINER_URL=http://pampling-global-database:8000/mcp
PAMPLING_DB_MCP_AUTHORIZATION=Bearer <token>
Variables en local:
PAMPLING_DB_MCP_URL=https://globaldb.pampl.ing/mcp
PAMPLING_DB_MCP_AUTHORIZATION=Bearer <token>
Verificacion en produccion:
curl https://pampling-stock.pampl.ing/api/health
curl https://pampling-stock.pampl.ing/api/stores
curl 'https://pampling-stock.pampl.ing/api/stock?shop=0005&page=1&pageSize=5'
Verificacion en local:
curl http://localhost:3000/api/health
curl http://localhost:3000/api/stores
https://globaldb.pampl.ing/admin/users.html) o crear el usuario y darle permisos a las BDs/integraciones necesarias.PAMPLING_DB_MCP_CONTAINER_URL=http://pampling-global-database:8000/mcp.