YYayaw
Documentation

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éfaut 10 connexions en développement et 3 en production/serverless. La production utilise aussi par défaut un timeout de connexion de 10 secondes, un timeout d'inactivité de 20 secondes, une durée de vie maximale de 300 secondes, un timeout de requête de 20 secondes et les prepared statements désactivés pour la compatibilité avec les poolers. Augmentez DATABASE_POOL_MAX ou les valeurs de cycle de vie seulement si la cible de déploiement supporte les connexions supplémentaires par runtime.
  • BETTER_AUTH_SECRET doit être un secret stable, server-only et à forte entropie en production et dans les runtimes auto-hébergés.
  • DATABASE_STATEMENT_TIMEOUT_SECONDS applique 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=true active l'ensemble complet de requêtes de publication et d'activité CMS sur /dashboard/content. Gardez false par 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=180
  • NEXT_BUILD_WORKERS contrôle le nombre de workers Next.js utilisés pendant next build. Les builds Docker auto-hébergés utilisent 1 par défaut pour rester stables sur de petites machines.
  • NEXT_STATIC_PAGE_GENERATION_TIMEOUT augmente 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.app
  • NEXT_PUBLIC_BASE_URL est 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_URL n'est pas lu par l'application.
  • BETTER_AUTH_URL n'est pas requis par le runtime courant parce que Better Auth reçoit baseURL depuis NEXT_PUBLIC_BASE_URL. Si un ancien déploiement le définit encore, gardez-le aligné avec https://yayaw.app.
  • preview.yayaw.app est le domaine de prévisualisation adossé à la branche durable preview.
  • Gardez www.yayaw.app comme redirection de domaine projet Vercel vers yayaw.app; l'app normalise aussi les requêtes de pages www avant le routage i18n.
  • Gardez les hôtes .eu retirés uniquement comme redirections Vercel 308 vers leurs remplaçants .app, par exemple yayaw.eu et www.yayaw.eu vers yayaw.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 dans BETTER_AUTH_TRUSTED_ORIGINS parce 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_SECRET est utilisé par l'endpoint webhook du plugin Better Auth Stripe.
  • STRIPE_ONE_TIME_WEBHOOK_SECRET est 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-access aprè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 avec BILLING_CODE_ACCESS_GITHUB_REPOSITORY, BILLING_CODE_ACCESS_GITHUB_APP_ID et BILLING_CODE_ACCESS_GITHUB_APP_INSTALLATION_ID.
  • Gardez les secrets GitHub uniquement en variables d'environnement: BILLING_CODE_ACCESS_GITHUB_APP_PRIVATE_KEY pour le provisioning GitHub App de production, ou BILLING_CODE_ACCESS_GITHUB_TOKEN comme 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_URL sur l'hôte production canonique.
  • Définissez le NEXT_PUBLIC_BASE_URL de prévisualisation sur l'hôte branch-backed stable lorsqu'il est configuré.
  • Ne mélangez pas les hôtes www et non-www pour les sessions authentifiées.
  • Gardez BETTER_AUTH_TRUSTED_ORIGINS pour les hôtes preview/local requis. L'hôte canonique et sa variante www sont déjà dérivés de NEXT_PUBLIC_BASE_URL.
  • Pour les routes préfixées par locale, préférez @/i18n/navigation (Link, useRouter, usePathname) à next/link et next/navigation dans 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=
RESEND_API_KEY=
EMAIL_SENDER=team@yayaw.app
EMAIL_SUPPORT=support@yayaw.app
EMAIL_USERNAME=Yayaw Team

EMAIL_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=true
  • STORAGE_MEDIA_BUCKET vaut media par défaut.
  • CMS_MEDIA_STAGED_UPLOADS_ENABLED vaut false par défaut. Activez-le seulement lorsque toutes les instances exécutent la version compatible avec les téléversements en staging.
  • STORAGE_MEDIA_STAGING_BUCKET sélectionne le bucket privé des téléversements client signés. Le développement peut se replier sur STORAGE_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_BUCKET sélectionne le bucket privé durable des pièces jointes envoyées par les formulaires CMS publics enregistrés. Il peut se replier sur STORAGE_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_SECRET sépare facultativement les grants de stockage same-origin opaques et à courte durée des autres signatures. Il se replie sur CMS_PREVIEW_SIGNING_SECRET, puis BETTER_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 utilisent NEXT_PUBLIC_BASE_URL et n'exposent jamais S3_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_ENDPOINT est 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 sur S3_ENDPOINT ; en production, seul un hostname HTTPS public sûr est accepté. Le PUT direct retourné signe If-None-Match: * et le client doit envoyer tous les headers reçus. La politique CORS du bucket doit autoriser l'origine applicative, PUT et les headers de requête Content-Type, Content-Length et If-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_SECRET est 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 sur CMS_PREVIEW_SIGNING_SECRET, puis BETTER_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_SECRET est 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_HEADER est 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-for est refusé car son premier saut n'est pas une identité client authentifiée. Les configurations Caddy fournies écrasent x-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_URL est 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_URL utilise 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=true pour MinIO et la plupart des endpoints compatibles S3 locaux. S3_ENDPOINT peut 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 seed téléverse les ressources par défaut de variables globales de site dans STORAGE_MEDIA_BUCKET lorsque 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_FALLBACK contrôle les replis IA texte/objet des flux de component builder et page builder.
  • OPENAI_IMAGE_GENERATION_ENABLED contrô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-enabled et media-image-generation-enabled sans 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.5 par défaut, et sont stockées comme ressources média webp via la médiathèque d'organisation.
  • PAGE_AI_QUEUE_DRIVER contrôle le transport de réveil durable Page AI: direct en développement local, vercel-queue sur Vercel et db-worker pour un processus worker long-lived. En production, le défaut est vercel-queue uniquement lorsque les variables runtime Vercel sont présentes; sinon c'est db-worker.
  • PAGE_AI_DEEP_REFINEMENT est un toggle qualité interne uniquement environnement, non exposé comme réglage de site admin.
  • PAGE_AI_WORKER_POLL_MS, PAGE_AI_WORKER_MAINTENANCE_MS et PAGE_AI_WORKER_ID sont utilisés uniquement par bun run worker:page-ai quand PAGE_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=1000

Les 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=false
  • YAYAW_MCP_API_KEY est 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_ID est utilisé uniquement par le lanceur stdio local lorsqu'aucune clé API n'est fournie.
  • Les clients MCP production se connectent à /api/mcp avec Authorization: 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_ID est 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 de CMS Prototype Runtime Rollout.
  • CMS_LOW_LEVEL_PAGE_ADMIN_BYPASS_ENABLED vaut false par défaut. Ne l'activer que pendant une opération de maintenance bornée et auditée qui doit appeler yayaw_pages_create_draft ou yayaw_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_SECRET est requis uniquement lorsqu'une route runtime dynamique déployée déclare une transform de valeur hmac_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_PROVIDER peut valoir vercel, static ou local. Laissez vide pour auto-détecter Vercel via VERCEL/VERCEL_URL, les déploiements statiques via DEPLOYMENT_URL, et le local sinon.
  • DEPLOYMENT_URL, DEPLOYMENT_ENV, DEPLOYMENT_GIT_COMMIT_SHA et DEPLOYMENT_GIT_COMMIT_REF fournissent les métadonnées de déploiement dashboard/plan de contrôle pour Docker ou d'autres runtimes non Vercel.
  • PUBLIC_DOMAIN_PROVIDER peut valoir vercel ou manual-dns. Quand il est vide, Vercel est sélectionné uniquement si VERCEL_PROJECT_ID et VERCEL_TOKEN sont configurés; sinon la vérification DNS manuelle est utilisée.
  • APP_MANAGED_HOSTS ajoute 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_SUFFIXES ajoute des suffixes, comme .preview.example, que les domaines publics personnalisés ne peuvent pas réclamer. .vercel.app est toujours réservé.
  • PUBLIC_DOMAIN_CNAME_TARGET, PUBLIC_DOMAIN_IPV4_TARGETS et PUBLIC_DOMAIN_TXT_PREFIX alimentent les indications du fournisseur DNS manuel et le challenge TXT de propriété.
  • VERCEL_URL est 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_ID et VERCEL_TEAM_ID optionnel 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:

  1. Utilisez les scripts safe avec timeout:
bun run docs:generate
bun run db:generate
bun run db:push
  1. Si cela échoue encore, réinstallez les dépendances:
rm -rf node_modules
bun install
  1. Réessayez la commande et vérifiez avec:
bun run check
bun run build