L'unité web portait ORIGIN=https://veille.example.org : un fichier versionné qu'il fallait éditer à chaque déploiement, et dont l'oubli casse silencieusement les soumissions de formulaire. Remplacé par PROTOCOL_HEADER / HOST_HEADER : l'application déduit son origine des en-têtes du reverse proxy et fonctionne donc sur n'importe quel domaine, sans édition. Vérifié en exécutant réellement le binaire construit : deux domaines différents servis par le même processus, HTTP 200 dans les deux cas, et un ORIGIN figé l'emporte bien sur les en-têtes. Au passage, une affirmation fausse que j'avais écrite en commentaire : « le .env l'emporte sur les variables systemd ». C'est l'inverse — le --env-file de Node ne remplace pas une variable déjà présente dans l'environnement (constaté sur Node 24). Le commentaire dit désormais pourquoi ORIGIN dans .env fonctionne quand même : parce que l'unité ne le déclare pas. Et un contrôle mécanique interdit désormais de le redéclarer. ExecStart passe par /usr/bin/env : NodeSource installe node dans /usr/bin, une compilation manuelle dans /usr/local/bin, un chemin figé échouait sur l'un des deux. Deux contrôles ajoutés à make verifier : aucune valeur d'exemple active dans les unités systemd, et ORIGIN laissé au .env. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
66 lines
3.7 KiB
Bash
66 lines
3.7 KiB
Bash
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Veille législative Guadeloupe — variables d'environnement
|
|
# Copier en `.env` et renseigner. Le fichier `.env` n'est JAMAIS versionné.
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
# ── API Légifrance (PISTE) ───────────────────────────────────────────────────
|
|
# Compte : https://piste.gouv.fr — application abonnée à l'API « Légifrance ».
|
|
#
|
|
# ATTENTION : une application PISTE expose DEUX couples de valeurs, et un seul
|
|
# fonctionne ici. Il faut le couple OAuth (« Client ID » / « Client secret »),
|
|
# pas la clé d'API (« API key » / « API key secret »), qui donne un
|
|
# `invalid_client` au moment d'obtenir le jeton.
|
|
#
|
|
# Sans ces deux valeurs le pipeline fonctionne en mode dégradé documenté
|
|
# (repli sur le scraping léger AN / Sénat / Conseil constitutionnel).
|
|
LEGIFRANCE_CLIENT_ID=
|
|
LEGIFRANCE_CLIENT_SECRET=
|
|
# `sandbox` pour l'environnement de test PISTE, `prod` pour la production.
|
|
# Vérifié le 25 juillet 2026 : les identifiants de production ne sont PAS
|
|
# acceptés par le bac à sable, qui exige une application distincte.
|
|
LEGIFRANCE_ENV=prod
|
|
# Clé d'API PISTE. Facultative : l'API Légifrance se contente du jeton OAuth.
|
|
LEGIFRANCE_API_KEY=
|
|
|
|
# ── Comportement du pipeline ─────────────────────────────────────────────────
|
|
# Chemin de la base SQLite (relatif à la racine du dépôt).
|
|
VEILLE_DB=data/veille.db
|
|
# Répertoire du cache HTTP des collecteurs.
|
|
VEILLE_CACHE=data/cache_http
|
|
# Durée de validité du cache HTTP, en heures.
|
|
VEILLE_CACHE_TTL_H=6
|
|
# User-agent honnête envoyé aux sources publiques (contact obligatoire).
|
|
VEILLE_USER_AGENT=veille-legislative-971/1.0 (+contact: cyber.mawonaj@gmail.com)
|
|
# Délai minimal entre deux requêtes vers un même hôte, en secondes.
|
|
VEILLE_DELAI_REQUETES=1.0
|
|
# Seuil de similarité de titre pour le rapprochement flou (0.0 → 1.0).
|
|
VEILLE_SEUIL_FUZZY=0.86
|
|
|
|
# ── Notifications de fin de run (désactivées par défaut) ─────────────────────
|
|
VEILLE_NOTIF_ACTIVE=false
|
|
# Webhook générique (POST JSON). Compatible Matrix via un pont, Mattermost, etc.
|
|
VEILLE_NOTIF_WEBHOOK=
|
|
# Envoi courriel : laisser vide pour désactiver.
|
|
VEILLE_NOTIF_SMTP_HOTE=
|
|
VEILLE_NOTIF_SMTP_PORT=587
|
|
VEILLE_NOTIF_SMTP_UTILISATEUR=
|
|
VEILLE_NOTIF_SMTP_MOTDEPASSE=
|
|
VEILLE_NOTIF_DESTINATAIRE=
|
|
|
|
# ── Application web (adapter-node, production) ───────────────────────────────
|
|
# Node ≥ 20.6 : lancer avec `node --env-file=.env build`
|
|
HOST=127.0.0.1
|
|
PORT=3971
|
|
# Mise en sommeil de l'app sans trafic (activation par socket systemd).
|
|
IDLE_TIMEOUT=300
|
|
|
|
# Origine des requêtes. Rien à renseigner dans le cas courant : l'unité
|
|
# systemd fait déduire l'origine des en-têtes posés par le reverse proxy
|
|
# (PROTOCOL_HEADER / HOST_HEADER), ce qui fonctionne quel que soit le domaine.
|
|
#
|
|
# Décommentez seulement si vous préférez la figer — adapter-node la retient
|
|
# alors d'office. Cela fonctionne parce que l'unité systemd ne déclare PAS
|
|
# ORIGIN : le `--env-file` de Node ne remplace jamais une variable déjà
|
|
# présente dans l'environnement.
|
|
# ORIGIN=https://votre-domaine
|