Référence opérateur - trame heymoov-dev.env¶
Note de répartition : ce document a été déplacé depuis heymoov-api vers
heymoov-docs, car il décrit une trame opérateur transverse. Les valeurs
effectives restent hors Git et l'automation exécutable vit dans
heymoov-platform.
Objet¶
Ce document sert de trame opérateur pour préparer le fichier runtime heymoov-dev.
Il ne contient aucun secret versionné. Les secrets déjà présents sur le serveur sont conservés; lors d'une première installation ils sont générés hors Git par les bootstraps.
Source de vérité utilisée¶
Constat mis à jour le 2026-04-30 sur ls2i-staging:
- fichier source observé: runtime dev actuellement en service sur
ls2i-staging - cible de migration:
/etc/heymoov/heymoov-dev.env - topologie non secrète: heymoov-platform/deploy/inventory/heymoov.envs
- stockage dédié actif:
heymoov_devpour l'app etheymoov_dev_hydrapour Hydra
Important:
heymoov-devutilise maintenant un stockage PostgreSQL dédié- les anciennes bases legacy
spocethydraont été sauvegardées puis supprimées le2026-04-30 - backup final avant purge legacy:
/var/backups/heymoov-legacy-postgres-drop/20260430T202011Z - les valeurs secrets du runtime courant ne doivent pas être commitées dans le repository
- le service doit charger ce fichier via
EnvironmentFile= - le répertoire
/opt/heymoov-devn'est pas l'emplacement cible des secrets - les releases et migrations doivent utiliser ce fichier serveur comme source de vérité, sans copie locale
.env.heymoov-dev
Règles de préparation¶
La préparation de heymoov-dev.env se fait à partir de la trame versionnée:
Le repository ne versionne aucune valeur effective du runtime dev.
Valeurs dérivées de la convention cible heymoov-dev¶
Les variables suivantes doivent être renseignées à partir de la ligne dev de heymoov-runtime-target.md:
HTTP_ADDR=127.0.0.1:9196READYZ_ADDR=127.0.0.1:18081CORS_ALLOWED_ORIGINS_WEBSWAGGER_ENABLED=1AUTH_COOKIE_DOMAINHYDRA_PUBLIC_URLHYDRA_OIDC_ISSUER_URLHYDRA_CALLBACK_URLHYDRA_MOBILE_CALLBACK_URLHYDRA_FRONTEND_CALLBACK_URLHYDRA_MOBILE_APP_RETURN_URLMOBILE_WEBAUTHN_RP_ID=auth.dev.heymoov.comMOBILE_WEBAUTHN_RP_DISPLAY_NAME=HeyMoovMOBILE_WEBAUTHN_ALLOWED_ORIGINSMOBILE_WEBAUTHN_CHALLENGE_TTL=5mMERCURE_URLMERCURE_TOPICS_PREFIXFRONTEND_DOCUMENT_URLFRONTEND_SHOWCASE_URLFRONTEND_APP_URLTURNSTILE_EXPECTED_HOSTNAME
Exception transitoire au 26 avril 2026:
- tant que la landing
staging.heymoov.comappelle encorehttps://app.dev.heymoov.com/v1/public/contact-us,CORS_ALLOWED_ORIGINS_WEB_DEVdoit aussi autoriserhttps://staging.heymoov.com - cette exception ne doit pas devenir l'état cible de
heymoov-dev TURNSTILE_EXPECTED_HOSTNAMEreste strictementapp.dev.heymoov.compourheymoov-dev
Valeurs live transitoires actuellement posées sur ls2i-staging:
CORS_ALLOWED_ORIGINS_WEB_DEV="http://localhost:3006,https://staging.heymoov.com"
Retour à la cible attendue une fois app.staging.heymoov.com en service:
- retirer
https://staging.heymoov.comdeCORS_ALLOWED_ORIGINS_WEB_DEV - ne plus faire appeler la landing
stagingversapp.dev.heymoov.com
Valeurs à reprendre depuis une source opérateur¶
Ces variables doivent être reprises depuis l'environnement courant ou une source opérateur de confiance, mais ne doivent pas être écrites dans le repository:
APP_NAMEAPP_ENVPGS_HOSTPGS_PORTPGS_LOGINPGS_DBCORS_ALLOWED_ORIGINS_WEB_DEVJWT_SECRET_DURATIONREFRESH_COOKIE_DURATIONFORGOT_PASSWORD_LINK_DURATIONCHANGE_EMAIL_LINK_DURATIONSECURITY_TOKEN_DURATIONHYDRA_ADMIN_URLHYDRA_INTERNAL_URLsi utiliséHYDRA_ENCRYPTION_KEY_CURRENTMERCURE_COOKIE_DURATIONREDIS_ADDRESSREDIS_DATABASEEMAIL_NOREPLYEMAIL_CONTACTEMAIL_PROVIDERMAILPIT_URL,MAILDEV_URL,MAILTRAP_URL,MAILTRAP_INBOX_IDouSIB_API_KEYselon le provider retenu (SIB_API_KEYest requis quandEMAIL_PROVIDER=BREVO)MAX_UPLOAD_FILESIZETURNSTILE_TIMEOUTTURNSTILE_MAX_CHALLENGE_AGE
Valeurs à figer explicitement pour dev¶
La convention retenue pour heymoov-dev est:
HYDRA_WEB_CLIENT_ID=heymoov-dev-webHYDRA_MOBILE_CLIENT_ID=heymoov-dev-mobile
Convention retenue sur ls2i-staging:
heymoov-dev-webest un client confidentiel enclient_secret_postheymoov-dev-mobileest un client public PKCE entoken_endpoint_auth_method=none- en conséquence,
HYDRA_CLIENT_SECRETSn'a besoin de contenir que le secret du client web
Valeurs passkeys mobiles pour dev¶
La convention passkeys mobile retenue pour heymoov-dev est:
MOBILE_WEBAUTHN_RP_ID=auth.dev.heymoov.comMOBILE_WEBAUTHN_RP_DISPLAY_NAME=HeyMoovMOBILE_WEBAUTHN_CHALLENGE_TTL=5mMOBILE_WEBAUTHN_ALLOWED_ORIGINSdoit contenir les origins natives autorisées par l'app mobile dev
Origins Android actuellement attendues:
android:apk-key-hash:t8pZmppGQfI3Qoo_fn48QLsOarp8g5O8p5V94jBhUuMandroid:apk-key-hash:-sYXRdwJA3hvue3mKpYrOZ9zSPC7b4mbgzJmdZEDO5w
Origin web/iOS à poser dans l'allowlist backend:
https://auth.dev.heymoov.com
Valeurs renseignées par le bootstrap Mercure daemon¶
Ces variables sont renseignées par make bootstrap-mercure-env ENV=dev
dans /etc/heymoov/mercure-dev.env.
Avec le slot primary courant, le bootstrap retient:
- service systemd:
heymoov-dev-mercure.service - Caddyfile:
/etc/heymoov/mercure-dev.Caddyfile - data dir:
/var/lib/heymoov-mercure/dev - URL interne Mercure:
http://127.0.0.1:2022/.well-known/mercure - URL publique Mercure:
https://mercure.dev.heymoov.com - origin publish stricte:
https://app.dev.heymoov.com - origins subscriber CORS:
https://app.dev.heymoov.comethttp://localhost:3006
Il renseigne le daemon à partir des secrets déjà présents dans
/etc/heymoov/heymoov-dev.env:
MERCURE_PUBLISHER_JWT_KEYMERCURE_SUBSCRIBER_JWT_KEYMERCURE_PUBLISHER_JWT_ALG=HS256MERCURE_SUBSCRIBER_JWT_ALG=HS256MERCURE_SERVER_NAME=http://127.0.0.1:2022MERCURE_CORS_ORIGINS=https://app.dev.heymoov.com http://localhost:3006MERCURE_PUBLISH_ORIGINS=https://app.dev.heymoov.com
L'origine http://localhost:3006 fait partie de la cible normale de heymoov-dev:
elle permet au front web lancé localement par les développeurs d'utiliser le hub
Mercure partagé de l'environnement dev. Cette exception ne s'applique pas à
staging ni à prod.
Secrets à fournir ou régénérer hors Git¶
Ces valeurs doivent être reprises depuis l'existant ou régénérées, mais jamais commitées:
PGS_PASSJWT_LEGACY_HS256_KEYWEB_UI_JWT_HS256_KEYSECRET_PEPPERTOKEN_PEPPERHYDRA_ENCRYPTION_KEYSHYDRA_STATE_COOKIE_KEYHYDRA_CLIENT_SECRETSMERCURE_PUBLISHER_JWT_KEYMERCURE_SUBSCRIBER_JWT_KEYMAILTRAP_API_KEYsiEMAIL_PROVIDER=MAILTRAPSIB_API_KEYsiEMAIL_PROVIDER=BREVOTURNSTILE_SECRET_KEYREDIS_PASSWORDsi défini
Valeurs à ne pas reporter telles quelles¶
Points à corriger pendant la création de heymoov-dev:
- remplacer
TURNSTILE_MAX_CHALLENGE_AGE_SECparTURNSTILE_MAX_CHALLENGE_AGE - ne pas reporter les variables
GOOGLE_APPLICATION_CREDENTIALS - ne pas reporter les variables
GOOGLE_CLOUD_PROJECT_ID - ne pas reporter les variables
GOOGLE_RECAPTCHA_PUBLIC_KEY
Les variables GOOGLE_* ne sont pas consommées par le bootstrap principal du backend actuel.
Workflow opérateur¶
- Contrôler la topologie résolue avec
make topology-env ENV=dev CHECK=1. - Copier la trame heymoov-platform/deploy/env/heymoov-runtime.env.template vers
/etc/heymoov/heymoov-dev.envsi le fichier n'existe pas déjà, ou lancermake install-env ENV=dev. - Remplir manuellement toutes les valeurs requises.
- Générer le secret du client web puis remplir
HYDRA_CLIENT_SECRETS. - Lancer
make bootstrap-hydra-clients ENV=dev. - Poser les permissions
root:heymoov-deployet0640sur/etc/heymoov/heymoov-dev.env. - Vérifier qu'aucun placeholder
__REQUIRED_*__ne reste dans le fichier.
Points de contrôle avant activation¶
Avant toute activation de heymoov-dev, vérifier au minimum:
AUTH_COOKIE_DOMAINcorrespond bien au domainedevFRONTEND_DOCUMENT_URLpointe vers/uploads/sur le vhostapp- les callbacks Hydra pointent tous vers le vhost
app TURNSTILE_EXPECTED_HOSTNAMEcorrespond bien au hostappHYDRA_CLIENT_SECRETSne contient que les secrets des clients confidentiels- le groupe
heymoov-deployest restreint aux opérateurs autorisés à lire les secrets et lancer les migrations