# ---- Database (external Postgres) ---- # With docker-compose the app reaches Postgres via the UNIQUE container name # "pleinr-postgres" on the internal port 5432 (avoids collisions with other # "postgres" containers on a shared proxy network; NOT the published host port). # For local dev outside Docker against the dockerised Postgres, use # localhost on the published host port: postgres://pleinr:pleinr@localhost:54329/pleinr DATABASE_URL=postgres://pleinr:pleinr@pleinr-postgres:5432/pleinr # Individual vars consumed by the postgres container in docker-compose.yml POSTGRES_USER=pleinr POSTGRES_PASSWORD=pleinr POSTGRES_DB=pleinr # ---- Auth.js (NextAuth v5) ---- # Optional with docker-compose: if left unset, the container generates and # persists one automatically. To set it yourself: openssl rand -base64 32 AUTH_SECRET= # Public URL of the app (used by Auth.js for callbacks). # Leave EMPTY behind a reverse proxy (Nginx Proxy Manager, Traefik…): Auth.js # auto-detects it from the Host / X-Forwarded-Proto headers (trustHost). # Set it only to force a value, e.g. https://pleinr.ffnancy.fr AUTH_URL= # ---- First admin user (created by the seed script) ---- SEED_ADMIN_EMAIL=admin@plein-r.fr # Laissez vide : un mot de passe aléatoire est généré au premier démarrage, # affiché UNE FOIS dans les journaux, et doit être changé à la première connexion. SEED_ADMIN_PASSWORD= SEED_ADMIN_NAME=Administrateur Plein R # Données de démonstration (adhérents, promotions, demandes, journal et # comptes au mot de passe connu de tous) : uniquement sur un poste de # développement, jamais en production. Par défaut la base reste vide, avec le # référentiel des catégories et le compte administrateur seulement. # Pour retirer des données de démo déjà en base : npm run db:purge-demo # (ou, dans le conteneur : node dist/purge-demo.cjs). SEED_DEMO=false # ---- App ---- NODE_ENV=production PORT=3000 # ---- VPS sans reverse proxy existant (voir README) ---- # Caddy devant l'application : ports 80 et 443, certificat Let's Encrypt # automatique pour SITE_DOMAIN, et réponse immédiate sur http://IP_DU_SERVEUR # tant que le DNS n'est pas configuré. Renseignez SITE_DOMAIN même si le # domaine ne pointe pas encore : la bascule en HTTPS se fera toute seule. #COMPOSE_FILE=docker-compose.yml:docker-compose.caddy.yml #SITE_DOMAIN=pleinr.example.fr #CADDY_EMAIL=vous@example.fr # ---- Publication des promotions sur les réseaux sociaux ---- # La configuration se fait désormais dans Backend › Réseaux sociaux : on y colle # les identifiants de l'application, on clique Connecter, et les jetons sont # récupérés et stockés chiffrés automatiquement. Rien à mettre ici dans le cas # normal. # # Clé de chiffrement des jetons en base. Si elle est vide, AUTH_SECRET est # utilisé. La définir explicitement permet de faire tourner AUTH_SECRET sans # perdre les connexions réseaux. # openssl rand -base64 32 SOCIAL_TOKEN_KEY= # Versions d'API (facultatif) FACEBOOK_GRAPH_VERSION=v21.0 LINKEDIN_API_VERSION=202506 # --- Repli historique --- # Ces variables restent lues si aucun compte n'est connecté depuis le # backoffice. Utile pour un jeton posé à la main ; sinon, laissez vide. FACEBOOK_PAGE_ID= FACEBOOK_PAGE_ACCESS_TOKEN= LINKEDIN_ORGANIZATION_URN= LINKEDIN_ORGANIZATION_ID= LINKEDIN_ACCESS_TOKEN= # ---- Boîte mail de l'association ---- # La configuration se fait dans Backend › Boîte mail : on y branche Google # (API Gmail), Microsoft (API Graph) ou un serveur SMTP, et les secrets sont # stockés chiffrés. Rien à mettre ici dans le cas normal. # # Les jetons et mots de passe utilisent la même clé que les réseaux sociaux # (SOCIAL_TOKEN_KEY, avec repli sur AUTH_SECRET). # # `off` arrête la file d'envoi sans toucher au reste (le libérateur de # publications programmées a son propre interrupteur, PROMO_SCHEDULER). #MAIL_WORKER=off # Débit de la file, en messages par passage (défaut : 20). Gmail plafonne # autour de 500 destinataires par jour sur un compte gratuit. #MAIL_RATE_PER_MINUTE=20 # --- Repli avant toute configuration depuis le backoffice --- # Permet un premier déploiement sans passer par l'écran. Dès qu'un compte est # enregistré dans Backend › Boîte mail, il prime sur ces variables. SMTP_HOST= SMTP_PORT=465 SMTP_SECURE=true SMTP_USER= SMTP_PASSWORD= SMTP_FROM= SMTP_FROM_NAME=