Configuration du web
Variables d'environnement de l'interface, injection à l'exécution et image Docker
Configuration du web
Variables
| Variable | Rôle | Exemple local |
|---|---|---|
VITE_SERVER_URL | origine du serveur : client oRPC (/rpc), Better Auth (/api/auth) et traductions (/api/i18n) | http://localhost:3000 |
VITE_CHATBOT_URL | URL du chat, ouverte par le lien « Chat » du menu et par le widget de chat | http://localhost:8501 |
VITE_BETTER_AUTH_CALLBACK_URL | origine du web, utilisée comme callbackURL de la connexion Microsoft (+ "/dashboard") | http://localhost:3001 |
SHADCN_PRESET | preset shadcn/ui, passé en build-arg à l'image web dans docker-compose.yml | voir .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
| Commande | Effet |
|---|---|
bun run dev:web (racine) ou bun run dev (dans apps/web) | serveur de développement Vite sur le port 3001 |
bun run build | build de production dans apps/web/dist |
bun run serve | sert dist sur le port 3001 (bunx --bun serve --listen 3001 --single ./dist) |