Aller à l'article
Aniq-UI

VelraVariables d'environnement

Variables d'environnement

Le rôle de chaque paramètre des fichiers .env de l'API et des frontends, et ceux dont vous avez besoin.

Pour le pack Full Stack

Où se trouvent les paramètres

FichierLu parContient des secrets
back-end/.envL'API, avec yarn dev et dans Docker ComposeOui. Ne le versionnez jamais.
storefront/.envLe site public, au moment du buildNon. Toutes les valeurs sont publiques.
admin-dashboard/.envLe tableau de bord de l'agence, au moment du buildNon. Toutes les valeurs sont publiques.
.env à côté de docker-compose.ymlDocker Compose, pour le pack Full StackNon

Créez le fichier de chaque application à partir du .env.example situé à côté, qui documente chaque variable : cp .env.example .env. Les exemples fonctionnent tels quels pour un lancement local, et le démarrage avec Docker Compose n'a besoin d'aucun fichier.

Où se trouvent les paramètres

Un seul fichier, .env dans le dossier du site, lu lors du build du site. Toutes ses valeurs sont publiques : il ne contient donc jamais de secret. Créez-le à partir de .env.example, qui pointe vers une API sur http://localhost:8000 : cp .env.example .env. Avec Docker, passez les mêmes valeurs en --build-arg.

Où se trouvent les paramètres

Un seul fichier, .env dans le dossier du tableau de bord, lu lors du build du tableau de bord. Toutes ses valeurs sont publiques : il ne contient donc jamais de secret, les clés des fournisseurs se trouvent dans le .env de l'API. Créez-le à partir de .env.example, qui pointe vers une API sur http://localhost:8000 : cp .env.example .env. Avec Docker, passez les mêmes valeurs en --build-arg.

Où se trouvent les paramètres

Un seul fichier, .env dans le dossier de l'API, lu par l'API avec yarn dev, et par un conteneur quand vous ajoutez --env-file .env -e NODE_ENV=production à son docker run. Il contient des secrets : ne le versionnez jamais. Créez-le à partir de .env.example, qui documente chaque variable et fonctionne tel quel pour un lancement local : cp .env.example .env.

L'image Docker définit ses propres valeurs par défaut, donc docker run fonctionne sans fichier : SQLite sur /data/database.sqlite, fichiers téléversés dans /data/uploads, CORS_ORIGIN pour les deux frontends locaux, FRONTEND_URL=http://localhost:3031, PUBLIC_MEDIA_URL=http://localhost:8000/media et SEED_DEMO_DATA=false. Remplacez-en n'importe laquelle avec -e.

Paramètres essentiels de l'API

L'API vérifie JWT_SECRET et, en production, CORS_ORIGIN avant de démarrer. Si l'une manque ou est inutilisable, elle s'arrête avec une ligne qui indique quoi corriger.

VariableRôle
NODE_ENVdevelopment en local, qui crée et met à jour les tables au démarrage. production sur un serveur en ligne, qui ne touche jamais aux tables.
PORTLe port de l'API, 8000. Les deux frontends pointent vers lui.
DB_TYPEsqlite (comme dans .env.example) ou mysql. Non défini, cela signifie MySQL : gardez donc la ligne.
SQLITE_DATABASEChemin du fichier SQLite, ./database.sqlite par défaut.
JWT_SECRETSigne chaque connexion. Obligatoire. La valeur de l'exemple n'est acceptée qu'en dehors de la production.
JWT_EXPIRATIONLa durée d'une connexion, 7d par défaut. La réponse de connexion la renvoie sous expires_in.
CORS_ORIGINLes adresses du site et du tableau de bord, séparées par des virgules. Non défini, seuls http://localhost:3030 et http://localhost:3031 sont autorisés, jamais toutes les origines ; obligatoire en production.
FRONTEND_URLL'adresse du tableau de bord, depuis laquelle se connectent ses notifications en direct, http://localhost:3031 si non défini.
TRUST_PROXYOptionnel. Le nombre de reverse proxys devant l'API, pour que les limites par adresse comptent le vrai visiteur.
RATE_LIMIT_LOGINOptionnel. Nombre de connexions échouées qu'une adresse peut faire en 15 minutes avant 429, 10 par défaut.
SEED_DEMO_DATALu uniquement par l'image Docker, sur un volume sans base de données : true la crée avec l'agence de démonstration, false avec les tables seulement.

Générez votre propre JWT_SECRET avec :

Terminal
node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"

Chaque fonctionnalité optionnelle ci-dessous reste désactivée tant que ses lignes dans .env.example restent en commentaire.

Utiliser MySQL au lieu de SQLite

Créez une base de données vide, puis définissez le pilote et la connexion dans le .env de l'API :

Le .env de l'API
DB_TYPE=mysql
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=
DB_DATABASE=velra

Lancez ensuite yarn seed pour l'agence de démonstration, ou yarn db:sync pour les tables sans données. L'API en cours d'exécution ne crée et ne met à jour les tables elle-même que lorsque NODE_ENV=development : avec NODE_ENV=production, l'une de ces commandes est lancée avant le premier démarrage (yarn seed:prod ou yarn db:sync:prod après yarn build).

Photos et fichiers téléversés

L'API sert elle-même les photos du seed, depuis public/media/velra, sur /media/velra/…. Les fichiers téléversés depuis le tableau de bord (photos de biens, photos de pièces pour le studio, aperçus mis en scène, photos de profil) sont stockés sur le disque de l'API sous MEDIA_UPLOAD_DIR et servis sur /media/uploads/…, sauf si un bucket est défini.

Le .env de l'API
PUBLIC_MEDIA_URL=http://localhost:8000/media
MEDIA_UPLOAD_DIR=./public/media/uploads

PUBLIC_MEDIA_URL est l'adresse à laquelle /media est joint depuis un navigateur. Chaque adresse de photo en est déduite, et l'API y ramène celles qui sont stockées au démarrage : déplacer l'API conserve donc toutes les photos. Sur un serveur, faites pointer MEDIA_UPLOAD_DIR vers un stockage persistant ; avec Docker, il est dans le volume de données.

Pour envoyer les fichiers vers Cloudflare R2, ou tout bucket compatible S3, définissez les cinq variables. Donnez aux deux frontends l'hôte public du bucket via NEXT_PUBLIC_MEDIA_HOSTNAME (avec Docker Compose, MEDIA_HOSTNAME) pour que Next.js redimensionne ces photos.

Le .env de l'API
R2_ACCESS_KEY_ID=your-r2-access-key-id
R2_SECRET_ACCESS_KEY=your-r2-secret-access-key
R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
R2_BUCKET_NAME=your-bucket-name
R2_PUBLIC_URL=https://your-public-url.r2.dev

Les photos sont ré-encodées au téléversement, sur 1920 pixels de large au maximum, avec une copie plus petite pour les cartes de bien. Les vidéos sont acceptées en MP4, WebM, MOV ou M4V, jusqu'à 150 Mo.

Site public et tableau de bord de l'agence

Chaque valeur NEXT_PUBLIC_* est compilée dans le JavaScript chargé par le navigateur, et toute personne qui ouvre la page peut la lire. Ne mettez jamais de secret dans ces fichiers, et reconstruisez après en avoir modifié un.

VariableApplicationRôle
NEXT_PUBLIC_API_BASE_URLLes deuxL'adresse de l'API, /api compris, http://localhost:8000/api par défaut.
NEXT_PUBLIC_SITE_URLLes deuxL'adresse publique du site, http://localhost:3030 par défaut. Sur le site, les URL canoniques, les alternatives de langue, les cartes de partage, robots.txt et le sitemap en sont déduits ; dans le tableau de bord, le lien « View website » et l'aperçu de l'annonce.
NEXT_PUBLIC_MEDIA_HOSTNAMELes deuxOptionnel. Les hôtes https qui servent les photos, séparés par des virgules : l'hôte public de votre bucket, comme pub-1234.r2.dev, le domaine de l'API, ou les deux. Les photos de ces hôtes sont redimensionnées par Next.js ; toute autre photo se charge telle quelle. Des hôtes seulement, sans https://. Les deux applications lisent la même liste, une seule valeur sert donc aux deux. Laissez-le vide tant que l'API tourne sur localhost.
NEXT_PUBLIC_WEBSOCKET_BASE_URLTableau de bordL'adresse de l'API sans /api, pour les notifications en direct.
NEXT_PUBLIC_MAP_STYLE_LIGHT, NEXT_PUBLIC_MAP_STYLE_DARKTableau de bordOptionnel. Styles des tuiles de carte. Non défini, les deux thèmes utilisent le style Positron d'OpenFreeMap, qui n'a besoin d'aucune clé.
NEXT_PUBLIC_PLACE_SEARCH_URLTableau de bordLa recherche de lieu dans l'onglet Localisation de l'éditeur de bien, https://photon.komoot.io/api dans .env.example. Tout géocodeur qui répond avec la même forme convient.
API_INTERNAL_URLSiteOptionnel, côté serveur uniquement, lu à l'exécution et non au build. Où le serveur propre au site joint l'API quand l'adresse du navigateur ne fonctionne pas depuis l'intérieur, comme dans Docker (http://api:8000/api dans Docker Compose). Laissez-le non défini ailleurs.
BUILD_STANDALONELes deuxtrue fait produire à yarn build un serveur autonome, ce que les Dockerfiles définissent. Sinon, laissez-la non définie.

Les balises marketing du site sont aussi des valeurs NEXT_PUBLIC_* : Google Tag Manager, GA4, Meta, TikTok, Snapchat et Pinterest, chacune activée par un seul identifiant.

Options de Docker Compose

Rien n'est à définir pour une exécution en local. Pour changer quelque chose, placez-le dans un fichier .env à côté de docker-compose.yml et relancez docker compose up --build : les frontends intègrent ces valeurs à la compilation.

VariablePar défautRôle
SITE_PORT3030Le port du site sur votre ordinateur.
ADMIN_PORT3031Le port du tableau de bord sur votre ordinateur.
API_PORT8000Le port de l'API sur votre ordinateur.
SITE_URL, ADMIN_URL, API_URLLes adresses locales sur ces portsL'adresse à laquelle le navigateur joint chaque application. Définissez les trois lorsque vous servez la stack sur vos propres domaines.
MEDIA_HOSTNAMEVideLes hôtes https qui servent les photos, séparés par des virgules : l'hôte public de votre bucket (avec les variables R2_* dans back-end/.env), le domaine de l'API, ou les deux.
SEED_DEMO_DATAtruefalse démarre avec des tables vides et aucun compte au lieu de l'agence de démonstration. Cela ne compte que sur un nouveau volume.
NEXT_PUBLIC_GTM_ID, NEXT_PUBLIC_GA4_MEASUREMENT_ID, NEXT_PUBLIC_META_PIXEL_ID, NEXT_PUBLIC_TIKTOK_PIXEL_ID, NEXT_PUBLIC_SNAPCHAT_PIXEL_ID, NEXT_PUBLIC_PINTEREST_TAG_IDVideLes balises marketing du site, toutes optionnelles.
NEXT_PUBLIC_ANALYTICS_CURRENCY, NEXT_PUBLIC_ANALYTICS_DEBUGAED, falseLa devise envoyée avec chaque prix suivi, et l'enregistrement de chaque événement dans la console du navigateur.
NEXT_PUBLIC_MAP_STYLE_LIGHT, NEXT_PUBLIC_MAP_STYLE_DARK, NEXT_PUBLIC_PLACE_SEARCH_URLVideLes tuiles de carte et la recherche de lieu du tableau de bord ; vide utilise OpenFreeMap et Photon.

Changez un port quand un autre programme l'utilise déjà, par exemple ADMIN_PORT=3041. CORS_ORIGIN, FRONTEND_URL et PUBLIC_MEDIA_URL de l'API, ainsi que les adresses de l'API et du site côté frontends, sont tous déduits des ports et des trois adresses : ils suivent donc d'eux-mêmes.

Le conteneur de l'API lit aussi back-end/.env s'il existe, donc les clés optionnelles se définissent au même endroit pour yarn dev et pour Docker. Le fichier compose l'emporte pour les valeurs qui diffèrent dans un conteneur : le chemin de la base, le dossier des fichiers téléversés, le port, NODE_ENV=production et les adresses ci-dessus. La base et les fichiers téléversés vivent dans le volume velra-data.

Fonctionnalités IA

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Activer l'assistant IA et le studio de mise en scène IA : les clés des fournisseurs et le modèle d'image.

Le serveur MCP

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Permettre aux agents de code et aux autres clients MCP d'utiliser les outils de l'assistant : la clé et l'endpoint.

Mode démo

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

L'interrupteur d'une démo publique, et pourquoi il reste désactivé pour une vraie agence.

Bloqué sur une étape ?

Trouvez une solution avant de tout recommencer.

Dépannage

Préférences des Cookies

Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et personnaliser le contenu. En cliquant sur "Accepter Tout", vous consentez à notre utilisation des cookies pour l'analyse et la publicité personnalisée.