diff --git a/.env.example b/.env.example index 7ac9e1f2..921d708c 100644 --- a/.env.example +++ b/.env.example @@ -35,6 +35,28 @@ CORS_ORIGINS=http://localhost:5173,http://localhost:3000 NODE_ENV=development VITE_API_URL=http://localhost:8000/api INTERNAL_API_URL=http://backend:8000/api + +# ⚠️ ADVERTENCIA PRODUCCIÓN — ORIGIN, VITE_HUB_URL y APP_PUBLIC_URL +# ───────────────────────────────────────────────────────────────────── +# Docker Compose carga ESTE archivo (.env raíz) automáticamente cuando +# se ejecuta: docker compose -f docker-compose.prod.yml up +# +# Si estas variables tienen valores localhost aquí, PISARÁN los defaults +# de docker-compose.prod.yml y causarán que el login falle en producción +# (redirect_uri y KC URL apuntarán a localhost). +# +# Para dev local (docker-compose.yml): dejar localhost. +# Para producción (docker-compose.prod.yml): asegurarse que el servidor +# NO tenga este .env raíz con valores localhost, O usar: +# docker compose --env-file .env.prod -f docker-compose.prod.yml up +# +# Variables críticas para producción: +# ORIGIN=https://anexo76-dev.aduanasoft.com ← determina url.origin en SvelteKit +# VITE_HUB_URL=https://workspace.aduanasoft.com +# APP_PUBLIC_URL=https://anexo76-dev.aduanasoft.com +ORIGIN=http://localhost:5173 +VITE_HUB_URL=http://localhost:3001 +APP_PUBLIC_URL=http://localhost:5173 VITE_KEYCLOAK_REALM=master VITE_KEYCLOAK_URL=http://localhost:8080/kcauth VITE_KEYCLOAK_CLIENT_ID=anexo76-frontend diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index ff6e1c53..166b8e4b 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -358,6 +358,10 @@ services: - INTERNAL_API_URL=${INTERNAL_API_URL:-http://backend:8000/api/} - INTERNAL_HUB_URL=https://workspace.aduanasoft.com - HUB_URL=https://workspace.aduanasoft.com + # VITE_HUB_URL: URL pública del Hub para el browser (bakeada en build, pero también se lee + # en runtime por $env/dynamic/private en workspace-auth.ts). El root .env puede tener + # localhost; isDevOnlyUrl() lo descarta y cae a HUB_URL (correcto arriba). + - VITE_HUB_URL=https://workspace.aduanasoft.com - VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL:-https://anexo76-dev.aduanasoft.com/kcauth/} - VITE_KEYCLOAK_REALM=${VITE_KEYCLOAK_REALM:-master} - VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID:-anexo76-frontend} @@ -365,8 +369,14 @@ services: - KEYCLOAK_REALM=${KEYCLOAK_REALM:-master} - KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID:-anexo76-backend} - KEYCLOAK_CLIENT_SECRET=${KEYCLOAK_CLIENT_SECRET:-dev-secret} - # SvelteKit ORIGIN — evita que request.url.origin use la IP/puerto interno del contenedor + # SvelteKit ORIGIN — determina url.origin en load functions y el flag secure de cookies. + # ⚠️ Docker Compose carga el .env raíz automáticamente. Si ese .env tiene + # ORIGIN=http://localhost:5173 (valor dev), sobreescribe el default de abajo. + # SITE_URL es el fallback que usa el código cuando url.origin es localhost. - ORIGIN=${ORIGIN:-https://anexo76-dev.aduanasoft.com} + # SITE_URL: hardcoded — no depende del .env raíz. + # resolveSystemBaseUrl() lo usa cuando ORIGIN tiene localhost (root .env de dev en prod). + - SITE_URL=https://anexo76-dev.aduanasoft.com ports: - "5111:5173" depends_on: diff --git a/frontend/Dockerfile.prod b/frontend/Dockerfile.prod index 2bfc9a56..d825409f 100644 --- a/frontend/Dockerfile.prod +++ b/frontend/Dockerfile.prod @@ -22,9 +22,16 @@ ENV VITE_API_URL=${VITE_API_URL} ARG VITE_KEYCLOAK_URL ENV VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL} +ARG VITE_KEYCLOAK_REALM=master +ENV VITE_KEYCLOAK_REALM=${VITE_KEYCLOAK_REALM} + ARG VITE_KEYCLOAK_CLIENT_ID=anexo76-frontend ENV VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID} +# URL pública del Hub Workspace (bakeada en build para el browser) +ARG VITE_HUB_URL=https://workspace.aduanasoft.com +ENV VITE_HUB_URL=${VITE_HUB_URL} + ARG INTERNAL_API_URL ENV INTERNAL_API_URL=${INTERNAL_API_URL}