Kalli
Web

Configuration du web

Variables d'environnement de l'interface, injection à l'exécution et image Docker

Configuration du web

Variables

VariableRôleExemple local
VITE_SERVER_URLorigine du serveur : client oRPC (/rpc), Better Auth (/api/auth) et traductions (/api/i18n)http://localhost:3000
VITE_CHATBOT_URLURL du chat, ouverte par le lien « Chat » du menu et par le widget de chathttp://localhost:8501
VITE_BETTER_AUTH_CALLBACK_URLorigine du web, utilisée comme callbackURL de la connexion Microsoft (+ "/dashboard")http://localhost:3001
SHADCN_PRESETpreset shadcn/ui, passé en build-arg à l'image web dans docker-compose.ymlvoir .env.example

Ces variables ne doivent contenir aucun secret : elles sont visibles dans le navigateur.

Le serveur a sa propre variable de confiance : CORS_ORIGIN doit valoir l'origine exacte du web (http://localhost:3001 en local).

Injection à l'exécution

Le plugin runtime-env de apps/web/vite.config.ts insère dans index.html :

<script>
  window.RUNTIME_ENV = {
    VITE_SERVER_URL: '...',
    VITE_CHATBOT_URL: '...',
    VITE_BETTER_AUTH_CALLBACK_URL: '...'
  };
</script>

Chaque valeur vient de process.env au moment où Vite sert ou construit la page. Si la variable est absente, la valeur devient le marqueur {{ .Env.NOM }}.

Dans l'image Docker web (Dockerfile.local), le script d'entrée remplace ces marqueurs par les variables d'environnement du conteneur, avec sed, au démarrage. Le même bundle peut donc servir plusieurs environnements sans recompilation.

Lecture côté code

apps/web/src/utils/runtime-env.ts expose getServerUrl(), getChatbotUrl() et getBetterAuthCallbackUrl(). Ces fonctions lisent window.RUNTIME_ENV, puis import.meta.env, puis process.env. Il faut passer par elles plutôt que par import.meta.env directement.

Ports et scripts

CommandeEffet
bun run dev:web (racine) ou bun run dev (dans apps/web)serveur de développement Vite sur le port 3001
bun run buildbuild de production dans apps/web/dist
bun run servesert dist sur le port 3001 (bunx --bun serve --listen 3001 --single ./dist)