Variables d'environnement
Variables de configuration runtime utilisées par l'application.
Cette page liste les variables runtime consommées par l'application. Utilisez Configuration de l'environnement de déploiement pour le runbook opérationnel qui explique où récupérer chaque valeur, comment borner les environnements de fournisseurs hébergés et comment valider un environnement avant promotion.
Noyau
NODE_ENV=development
NEXT_PUBLIC_BASE_URL=http://localhost:3080
DATABASE_URL=postgresql://user:password@localhost:5432/yayaw
DATABASE_POOL_MAX=
DATABASE_IDLE_TIMEOUT_SECONDS=
DATABASE_MAX_LIFETIME_SECONDS=
DATABASE_CONNECT_TIMEOUT_SECONDS=
DATABASE_STATEMENT_TIMEOUT_SECONDS=
DATABASE_PREPARE_STATEMENTS=
CMS_DASHBOARD_FULL_METRICS=false
BETTER_AUTH_SECRET=
BETTER_AUTH_TRUSTED_ORIGINS=http://localhost:3080- Les réglages de pool
DATABASE_*sont optionnels. Les pools runtime de base de données utilisent par défaut10connexions en développement et3en production/serverless. La production utilise aussi par défaut un timeout de connexion de10secondes, un timeout d'inactivité de20secondes, une durée de vie maximale de300secondes, un timeout de requête de20secondes et les prepared statements désactivés pour la compatibilité avec les poolers. AugmentezDATABASE_POOL_MAXou les valeurs de cycle de vie seulement si la cible de déploiement supporte les connexions supplémentaires par runtime. BETTER_AUTH_SECRETdoit être un secret stable, server-only et à forte entropie en production et dans les runtimes auto-hébergés.DATABASE_STATEMENT_TIMEOUT_SECONDSapplique un timeout par requête lorsque le client base de données ouvre une connexion. Laissez vide sauf si le fournisseur Postgres ou la base auto-hébergée a besoin d'un garde-fou explicite.CMS_DASHBOARD_FULL_METRICS=trueactive l'ensemble complet de requêtes de publication et d'activité CMS sur/dashboard/content. Gardezfalsepar défaut pour utiliser les compteurs rapides indexés et éviter que le shell du tableau de bord dépende de lectures agrégées coûteuses.
Réglages De Build
NEXT_BUILD_WORKERS=1
NEXT_STATIC_PAGE_GENERATION_TIMEOUT=180NEXT_BUILD_WORKERScontrôle le nombre de workers Next.js utilisés pendantnext build. Les builds Docker auto-hébergés utilisent1par défaut pour rester stables sur de petites machines.NEXT_STATIC_PAGE_GENERATION_TIMEOUTaugmente le timeout de génération statique Next.js pour les builders lents. Augmentez-le seulement lorsque des pages statiques légitimes expirent.
Hôte Production
Yayaw production utilise https://yayaw.app comme origine publique canonique.
Les déploiements de prévisualisation utilisent https://preview.yayaw.app pour
le domaine adossé à la branche preview.
NEXT_PUBLIC_BASE_URL=https://yayaw.app
BETTER_AUTH_TRUSTED_ORIGINS=https://*.yayaw.app,https://*.vercel.appNEXT_PUBLIC_BASE_URLest la source de vérité applicative pour les URL canoniques, l'URL de base Better Auth, les métadonnées OAuth, les liens sitemap/robots et les URL absolues de ressources générées.NEXT_PUBLIC_SITE_URLn'est pas lu par l'application.BETTER_AUTH_URLn'est pas requis par le runtime courant parce que Better Auth reçoitbaseURLdepuisNEXT_PUBLIC_BASE_URL. Si un ancien déploiement le définit encore, gardez-le aligné avechttps://yayaw.app.preview.yayaw.appest le domaine de prévisualisation adossé à la branche durablepreview.- Gardez
www.yayaw.appcomme redirection de domaine projet Vercel versyayaw.app; l'app normalise aussi les requêtes de pageswwwavant le routage i18n. - Gardez les hôtes
.euretirés uniquement comme redirections Vercel308vers leurs remplaçants.app, par exempleyayaw.euetwww.yayaw.euversyayaw.app. Ne les ajoutez pas àBETTER_AUTH_TRUSTED_ORIGINS. - Les domaines publics d'organisation sont séparés de l'hôte applicatif
canonique. Ils sont vérifiés via le fournisseur de domaines publics configuré
puis mappés dans
organization_public_domains; ils ne doivent pas figurer dansBETTER_AUTH_TRUSTED_ORIGINSparce que dashboard/auth ne sont pas servis depuis ces hôtes.
Facturation Et Stripe
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_ONE_TIME_WEBHOOK_SECRET=
BILLING_GRACE_PERIOD_DAYS=7
BILLING_PRO_SEAT_LIMIT=10
BILLING_BUSINESS_SEAT_LIMIT=100
BILLING_CODE_ACCESS_REPOSITORY_URL=
BILLING_CODE_ACCESS_DOWNLOAD_URL=
BILLING_CODE_ACCESS_DOCUMENTATION_URL=
BILLING_CODE_ACCESS_SUPPORT_URL=
BILLING_CODE_ACCESS_GITHUB_REPOSITORY=
BILLING_CODE_ACCESS_GITHUB_APP_ID=
BILLING_CODE_ACCESS_GITHUB_APP_INSTALLATION_ID=
BILLING_CODE_ACCESS_GITHUB_APP_PRIVATE_KEY=
BILLING_CODE_ACCESS_GITHUB_TOKEN=STRIPE_WEBHOOK_SECRETest utilisé par l'endpoint webhook du plugin Better Auth Stripe.STRIPE_ONE_TIME_WEBHOOK_SECRETest utilisé par l'endpoint webhook custom des achats ponctuels.- Les prix des produits de facturation sont gérés depuis l'admin ou MCP et
synchronisés vers Stripe; les Stripe Price IDs résultants sont stockés en
interne dans
billing_products. - Les URL
BILLING_CODE_ACCESS_*sont des liens non secrets optionnels affichés sur/dashboard/organization/code-accessaprès un achat éligible ou un abonnement actif. Laissez une valeur vide lorsqu'un livrable nécessite une provision manuelle. - L'accès dépôt GitHub pour l'accès au code payant est configuré depuis
/dashboard/admin/billing-settings. Les valeurs non secrètes peuvent aussi être fournies en repli avecBILLING_CODE_ACCESS_GITHUB_REPOSITORY,BILLING_CODE_ACCESS_GITHUB_APP_IDetBILLING_CODE_ACCESS_GITHUB_APP_INSTALLATION_ID. - Gardez les secrets GitHub uniquement en variables d'environnement:
BILLING_CODE_ACCESS_GITHUB_APP_PRIVATE_KEYpour le provisioning GitHub App de production, ouBILLING_CODE_ACCESS_GITHUB_TOKENcomme repli local/staging optionnel. - Voir Configuration de l'environnement de déploiement pour la création de GitHub App, l'ID d'installation, la clé privée et le chemin de repli token.
Hôte Canonique Et Sessions Auth
- Définissez
NEXT_PUBLIC_BASE_URLsur l'hôte production canonique. - Définissez le
NEXT_PUBLIC_BASE_URLde prévisualisation sur l'hôte branch-backed stable lorsqu'il est configuré. - Ne mélangez pas les hôtes
wwwet non-wwwpour les sessions authentifiées. - Gardez
BETTER_AUTH_TRUSTED_ORIGINSpour les hôtes preview/local requis. L'hôte canonique et sa variantewwwsont déjà dérivés deNEXT_PUBLIC_BASE_URL. - Pour les routes préfixées par locale, préférez
@/i18n/navigation(Link,useRouter,usePathname) ànext/linketnext/navigationdans les composants de navigation applicative.
OAuth (Optionnel)
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET=E-mail (Optionnel Mais Requis Pour Invitations/Reset/Magic Link)
RESEND_API_KEY=
EMAIL_SENDER=team@yayaw.app
EMAIL_SUPPORT=support@yayaw.app
EMAIL_USERNAME=Yayaw TeamEMAIL_SENDER est l'adresse expéditrice vérifiée Resend utilisée dans les
en-têtes From. EMAIL_SUPPORT apparaît dans les modèles et contenus support.
EMAIL_USERNAME est le nom affiché avec l'adresse d'envoi. Ces variables sont
des valeurs bootstrap et de repli; les valeurs runtime enregistrées dans Admin >
Site Settings > Email sont prioritaires après setup.
Stockage (Optionnel Pour Les Fonctionnalités Média)
Le stockage média utilise une API compatible S3 comme MinIO, AWS S3 ou R2.
STORAGE_PROVIDER doit rester défini sur s3.
STORAGE_PROVIDER=s3
STORAGE_MEDIA_BUCKET=media
STORAGE_MEDIA_STAGING_BUCKET=media-staging
STORAGE_CMS_FORM_BUCKET=cms-form-submissions
STORAGE_PUBLIC_BASE_URL=
CMS_MEDIA_STAGED_UPLOADS_ENABLED=false
STORAGE_TRANSFER_SIGNING_SECRET=
CMS_PERSONALIZATION_RATE_LIMIT_SECRET=
CMS_PERSONALIZATION_FORM_CONTEXT_SECRET=
CMS_PERSONALIZATION_CLIENT_IP_HEADER=x-real-ip
S3_ENDPOINT=
S3_SIGNED_PUBLIC_ENDPOINT=
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=
S3_SECRET_ACCESS_KEY=
S3_FORCE_PATH_STYLE=trueSTORAGE_MEDIA_BUCKETvautmediapar défaut.CMS_MEDIA_STAGED_UPLOADS_ENABLEDvautfalsepar défaut. Activez-le seulement lorsque toutes les instances exécutent la version compatible avec les téléversements en staging.STORAGE_MEDIA_STAGING_BUCKETsélectionne le bucket privé des téléversements client signés. Le développement peut se replier surSTORAGE_MEDIA_BUCKET, mais le staging en production refuse de démarrer si ce bucket privé distinct n'est pas configuré. Limitez la règle de cycle de vie du fournisseur au préfixe des objets de staging.STORAGE_CMS_FORM_BUCKETsélectionne le bucket privé durable des pièces jointes envoyées par les formulaires CMS publics enregistrés. Il peut se replier surSTORAGE_MEDIA_STAGING_BUCKET, mais ne doit jamais être le bucket média public. Si les deux flux partagent un bucket privé, limitez les règles de cycle de vie du staging à son préfixe pour ne pas effacer les demandes.STORAGE_TRANSFER_SIGNING_SECRETsépare facultativement les grants de stockage same-origin opaques et à courte durée des autres signatures. Il se replie surCMS_PREVIEW_SIGNING_SECRET, puisBETTER_AUTH_SECRET, et le secret effectif doit contenir au moins 32 caractères en production. L'application chiffre et authentifie le bucket, la clé objet, l'opération, le type MIME, la borne d'octets et l'expiration ; les URLs client utilisentNEXT_PUBLIC_BASE_URLet n'exposent jamaisS3_ENDPOINT. Gardez les buckets privés sans accès anonyme. Par défaut, les uploads de staging transitent en streaming par l'application, avec une limite exacte de 250 Mo, une écriture conditionnelle sans écrasement et une deadline au plus tard à l'expiration du grant.S3_SIGNED_PUBLIC_ENDPOINTest une origine d'API S3 publique explicitement activée pour les uploads signés directs lorsque la limite de corps de requête de l'hébergeur applicatif est inférieure au contrat média CMS de 250 Mo. Elle ne se replie jamais surS3_ENDPOINT; en production, seul un hostname HTTPS public sûr est accepté. Le PUT direct retourné signeIf-None-Match: *et le client doit envoyer tous les headers reçus. La politique CORS du bucket doit autoriser l'origine applicative,PUTet les headers de requêteContent-Type,Content-LengthetIf-None-Match. Les téléchargements, dont les photos de personnalisation, passent toujours par le proxy applicatif opaque. Laissez cette valeur vide sur Coolify et en self-host lorsque l'application peut streamer vers l'endpoint S3 interne. Les téléchargements de photos de personnalisation utilisent un grant durable à usage unique, lié à l'audience et limité à deux minutes. Le proxy consomme atomiquement le grant courant avant de lire le stockage, et toute nouvelle émission invalide l'URL précédente.CMS_PERSONALIZATION_RATE_LIMIT_SECRETest un secret HMAC dédié facultatif pour le quota anti-abus des demandes de personnalisation. Il doit contenir au moins 32 caractères et se replie surCMS_PREVIEW_SIGNING_SECRET, puisBETTER_AUTH_SECRET. Le quota ne stocke que le sujet HMAC, jamais l'adresse IP brute, et la demande client n'est pas liée à ce sujet.CMS_PERSONALIZATION_FORM_CONTEXT_SECRETest obligatoire et doit contenir au moins 32 caractères. Il signe le contexte éphémère injecté par le runtime public et lie chaque soumission au handler, à l'action, à la page, à sa révision immuable, au scope, à l'organisation, à la locale, au chemin et à l'origine. Gardez-le distinct pour permettre une rotation indépendante.CMS_PERSONALIZATION_CLIENT_IP_HEADERest obligatoire en production et désigne un header possédé par le proxy qui contient exactement une IP client canonique. Configurez l'ingress pour supprimer toute valeur fournie par le client et écrire la valeur de confiance.x-forwarded-forest refusé car son premier saut n'est pas une identité client authentifiée. Les configurations Caddy fournies écrasentx-real-ip, qui est donc la valeur self-host par défaut ; pour un autre ingress, choisissez son header canonique uniquement après avoir vérifié qu'il écrase les valeurs client. L'endpoint applique atomiquement six soumissions par IP de confiance et 1 200 soumissions globales par heure, puis le worker purge les buckets anti-abus expirés.STORAGE_PUBLIC_BASE_URLest requis pour le stockage compatible S3 et doit être une URL publique capable de servir les chemins publics/<bucket>/<object-key>. Il n'est jamais utilisé pour les buckets privés de staging ou de formulaires CMS.- Si
STORAGE_PUBLIC_BASE_URLutilise l'origine app ou CDN, routez chaque préfixe de bucket public vers le stockage objet avant le repli vers l'app. Les préfixes publics intégrés sont/media/*et/organization-logos/*. - Le stockage compatible S3 requiert endpoint, région, access key, secret key et
URL publique de base. Gardez
S3_FORCE_PATH_STYLE=truepour MinIO et la plupart des endpoints compatibles S3 locaux.S3_ENDPOINTpeut rester un hostname Docker interne ou de réseau privé car il n'est jamais transmis au navigateur. Après promotion, l'objet de staging vérifié reste un tombstone privé d'écriture conditionnelle pendant l'expiration du grant et une stabilisation de 24 heures. Le reaper répète la suppression et n'enregistre le nettoyage qu'après le DELETE final. Un bearer encore valide ou un PUT direct tardif ne peut donc pas recréer durablement le staging, y compris depuis une autre instance applicative. bun run seedtéléverse les ressources par défaut de variables globales de site dansSTORAGE_MEDIA_BUCKETlorsque le stockage est configuré. Sans identifiants de stockage, le seed conserve des ressources publiques locales de repli pour que le setup local se termine.- Les lignes média existantes stockent des URL publiques absolues; changer de fournisseur plus tard requiert soit de garder les anciennes URL joignables, soit de lancer une migration volontaire d'URL média.
OpenAI (Optionnel Pour Les Builders IA)
OPENAI_API_KEY=
OPENAI_COMPONENTS_AI_FALLBACK=true
OPENAI_IMAGE_GENERATION_ENABLED=true
OPENAI_IMAGE_MODEL=gpt-image-1.5
PAGE_AI_QUEUE_DRIVER=direct
PAGE_AI_DEEP_REFINEMENT=false
PAGE_AI_WORKER_POLL_MS=1500
PAGE_AI_WORKER_MAINTENANCE_MS=60000
PAGE_AI_WORKER_ID=OPENAI_COMPONENTS_AI_FALLBACKcontrôle les replis IA texte/objet des flux de component builder et page builder.OPENAI_IMAGE_GENERATION_ENABLEDcontrôle la génération d'images du page builder.- Les réglages runtime de site peuvent aussi désactiver ces fonctions IA via
ai-components-enabledetmedia-image-generation-enabledsans changer les variables d'environnement. - Les images générées par le page builder utilisent le modèle image OpenAI
configuré,
gpt-image-1.5par défaut, et sont stockées comme ressources médiawebpvia la médiathèque d'organisation. PAGE_AI_QUEUE_DRIVERcontrôle le transport de réveil durable Page AI:directen développement local,vercel-queuesur Vercel etdb-workerpour un processus worker long-lived. En production, le défaut estvercel-queueuniquement lorsque les variables runtime Vercel sont présentes; sinon c'estdb-worker.PAGE_AI_DEEP_REFINEMENTest un toggle qualité interne uniquement environnement, non exposé comme réglage de site admin.PAGE_AI_WORKER_POLL_MS,PAGE_AI_WORKER_MAINTENANCE_MSetPAGE_AI_WORKER_IDsont utilisés uniquement parbun run worker:page-aiquandPAGE_AI_QUEUE_DRIVER=db-worker. L'intervalle de maintenance vaut une minute par défaut et pilote la rétention durable des demandes, la récupération des photos orphelines et la purge des buckets anti-abus expirés via un timer indépendant sans chevauchement, y compris pendant un run Page AI long ou bloqué. Les PUT de personnalisation sont abandonnés après deux minutes ; les uploads ambigus conservent un tombstone de nettoyage sans PII jusqu'à un second DELETE objet exécuté après une fenêtre de stabilisation de trois minutes.
PostHog (Optionnel Pour Analytics Et Flags)
NEXT_PUBLIC_ANALYTICS_PROVIDER=posthog
NEXT_PUBLIC_ANALYTICS_CAPTURE_MODE=hybrid
NEXT_PUBLIC_POSTHOG_KEY=
NEXT_PUBLIC_POSTHOG_HOST=https://eu.i.posthog.com
NEXT_PUBLIC_POSTHOG_ENABLE_LOCAL=false
POSTHOG_PERSONAL_API_KEY=
POSTHOG_PROJECT_ID=
POSTHOG_API_HOST=https://eu.posthog.com
POSTHOG_ORG_ID_PROPERTY=organization_id
POSTHOG_FLAG_LOOKUP_TIMEOUT_MS=Les valeurs NEXT_PUBLIC_POSTHOG_* servent à la capture, aux feature flags et à
l'identification client. POSTHOG_PERSONAL_API_KEY, POSTHOG_PROJECT_ID et
POSTHOG_API_HOST sont des valeurs privées server-only utilisées par les
analytics de /dashboard pour interroger PostHog via l'API Query privée.
POSTHOG_ORG_ID_PROPERTY vaut organization_id par défaut et doit correspondre
à la propriété d'événement enregistrée pour les métriques dashboard bornées à
l'organisation. POSTHOG_FLAG_LOOKUP_TIMEOUT_MS ajuste optionnellement le
timeout de lookup des feature flags PostHog côté serveur; il vaut 1500 par
défaut.
NEXT_PUBLIC_ANALYTICS_CAPTURE_MODE contrôle où les événements sont capturés:
hybrid garde l'analytics navigateur pour le comportement produit et envoie les
événements facturation/auth côté serveur, server désactive les scripts
analytics navigateur et suit les vues CMS plus les conversions depuis le
serveur, et client conserve l'ancienne capture uniquement navigateur. Les
événements de facturation côté serveur incluent des propriétés de conversion
comme revenue, value, currency, plan, product_key et les IDs Stripe.
Umami (Fournisseur Analytics Optionnel)
NEXT_PUBLIC_ANALYTICS_PROVIDER=umami
NEXT_PUBLIC_ANALYTICS_CAPTURE_MODE=hybrid
NEXT_PUBLIC_UMAMI_HOST_URL=
NEXT_PUBLIC_UMAMI_SCRIPT_URL=
NEXT_PUBLIC_UMAMI_WEBSITE_ID=
NEXT_PUBLIC_UMAMI_DOMAINS=
NEXT_PUBLIC_UMAMI_AUTO_TRACK=true
UMAMI_API_URL=
UMAMI_WEBSITE_ID=
UMAMI_API_TOKEN=
UMAMI_API_KEY=
UMAMI_USERNAME=
UMAMI_PASSWORD=
UMAMI_CMS_EVENT_PAGE_SIZE=1000Les valeurs NEXT_PUBLIC_UMAMI_* configurent le script de tracking navigateur
et sont intégrées au bundle client au build time. UMAMI_API_URL,
UMAMI_WEBSITE_ID, et soit UMAMI_API_TOKEN (ou l'alias legacy
UMAMI_API_KEY), soit UMAMI_USERNAME plus UMAMI_PASSWORD, sont des valeurs
server-only utilisées par les fournisseurs de données analytics dashboard.
Pour une configuration sans analytics navigateur, définissez
NEXT_PUBLIC_ANALYTICS_CAPTURE_MODE=server. L'app ne rendra pas le script
Umami, et les événements serveur seront envoyés directement vers Umami
/api/send avec un User-Agent serveur. Cela améliore la confidentialité et
évite les cookies client, mais la qualité session, visiteur unique, appareil et
référent est moins précise que la capture navigateur.
Plan De Contrôle MCP (Optionnel)
YAYAW_MCP_API_KEY=
YAYAW_MCP_LOCAL_USER_ID=
CMS_PREVIEW_SIGNING_SECRET=
CMS_LEGACY_PROTOTYPE_WRITES_ENABLED=false
CMS_PROTOTYPE_RUNTIME_V2_WRITES_ENABLED=false
CMS_PROTOTYPE_ROLLOUT_OPERATION_ID=
CMS_LEGACY_PAGE_DESIGN_ADMIN_BYPASS_ENABLED=false
CMS_LOW_LEVEL_PAGE_ADMIN_BYPASS_ENABLED=falseYAYAW_MCP_API_KEYest utilisé par le lanceur MCP stdio local lorsque le développement local doit vérifier une vraie clé API Better Auth.YAYAW_MCP_LOCAL_USER_IDest utilisé uniquement par le lanceur stdio local lorsqu'aucune clé API n'est fournie.- Les clients MCP production se connectent à
/api/mcpavecAuthorization: Bearer <Yayaw API key or OAuth access token>et doivent stocker les secrets hors du dépôt. - Les métadonnées OAuth MCP sont dérivées de
NEXT_PUBLIC_BASE_URL; les clients ChatGPT/App production ont besoin que cette valeur soit l'origine HTTPS publique afin que l'issuer, la ressource, JWKS et les redirections soient stables. CMS_PROTOTYPE_ROLLOUT_OPERATION_IDest géré par le workflow manuel de rollout de confiance. Il reste vide en reader/freeze et identifie le reçu durable en activation, puis consommé, en mode exact. Ne le définissez ni ne le faites tourner indépendamment deCMS Prototype Runtime Rollout.CMS_LOW_LEVEL_PAGE_ADMIN_BYPASS_ENABLEDvautfalsepar défaut. Ne l'activer que pendant une opération de maintenance bornée et auditée qui doit appeleryayaw_pages_create_draftouyayaw_pages_save_draft; les créations et reworks normaux utilisent le workflow de design contextuel.
Transforms Runtime Dynamic Data (Optionnel)
DYNAMIC_DATA_RUNTIME_TRANSFORM_SECRET=DYNAMIC_DATA_RUNTIME_TRANSFORM_SECRETest requis uniquement lorsqu'une route runtime dynamique déployée déclare une transform de valeurhmac_sha256. Générez une valeur server-only stable et à forte entropie, puis faites-la tourner délibérément, car les valeurs de lookup transformées existantes en dépendent.
Mode Maintenance (Optionnel)
MAINTENANCE_MODE=false
MAINTENANCE_MODE_END_DATE=Runtime De Déploiement
DEPLOYMENT_PROVIDER=
DEPLOYMENT_URL=
DEPLOYMENT_ENV=
DEPLOYMENT_GIT_COMMIT_SHA=
DEPLOYMENT_GIT_COMMIT_REF=
PUBLIC_DOMAIN_PROVIDER=
APP_MANAGED_HOSTS=
RESERVED_PUBLIC_DOMAIN_SUFFIXES=
PUBLIC_DOMAIN_CNAME_TARGET=
PUBLIC_DOMAIN_IPV4_TARGETS=
PUBLIC_DOMAIN_TXT_PREFIX=_yayaw
VERCEL_URL=
VERCEL_TOKEN=
VERCEL_PROJECT_ID=
VERCEL_TEAM_ID=DEPLOYMENT_PROVIDERpeut valoirvercel,staticoulocal. Laissez vide pour auto-détecter Vercel viaVERCEL/VERCEL_URL, les déploiements statiques viaDEPLOYMENT_URL, et le local sinon.DEPLOYMENT_URL,DEPLOYMENT_ENV,DEPLOYMENT_GIT_COMMIT_SHAetDEPLOYMENT_GIT_COMMIT_REFfournissent les métadonnées de déploiement dashboard/plan de contrôle pour Docker ou d'autres runtimes non Vercel.PUBLIC_DOMAIN_PROVIDERpeut valoirverceloumanual-dns. Quand il est vide, Vercel est sélectionné uniquement siVERCEL_PROJECT_IDetVERCEL_TOKENsont configurés; sinon la vérification DNS manuelle est utilisée.APP_MANAGED_HOSTSajoute des hôtes possédés par l'app, séparés par des virgules, que les domaines publics d'organisation ne peuvent pas réclamer.RESERVED_PUBLIC_DOMAIN_SUFFIXESajoute des suffixes, comme.preview.example, que les domaines publics personnalisés ne peuvent pas réclamer..vercel.appest toujours réservé.PUBLIC_DOMAIN_CNAME_TARGET,PUBLIC_DOMAIN_IPV4_TARGETSetPUBLIC_DOMAIN_TXT_PREFIXalimentent les indications du fournisseur DNS manuel et le challenge TXT de propriété.VERCEL_URLest fourni par Vercel et permet à l'app de reconnaître les hôtes de déploiement comme des hôtes applicatifs managés.VERCEL_TOKEN,VERCEL_PROJECT_IDetVERCEL_TEAM_IDoptionnel sont des valeurs server-only utilisées pour ajouter, inspecter et vérifier les domaines publics d'organisation via l'API de domaines projet Vercel.
Source De Vérité
Gardez .env.example synchronisé avec l'usage réel du code lorsque vous ajoutez
ou supprimez des variables. Documentez les étapes de récupération dans
Configuration de l'environnement de déploiement
chaque fois qu'un opérateur doit collecter une valeur depuis un fournisseur
externe.
Dépannage De L'Outillage Local
Certaines machines locales peuvent rencontrer un blocage du service esbuild
lors de l'exécution des générateurs Drizzle ou docs.
Si une commande semble bloquée:
- Utilisez les scripts safe avec timeout:
bun run docs:generate
bun run db:generate
bun run db:push- Si cela échoue encore, réinstallez les dépendances:
rm -rf node_modules
bun install- Réessayez la commande et vérifiez avec:
bun run check
bun run build