magot developers

Déploiement

magot se livre en image conteneur unique, déployable chez un hébergeur suisse ou dans le datacenter de la banque. Seule dépendance : PostgreSQL 16+ standard (aucune extension propriétaire ; pgcrypto seulement).

Contenu de l'image

Processusun seul : API app (:3000) + webhook d'autorisation (:3001), mémoire d'autorisation partagée
Basenode:22-alpine, code TypeScript compilé, dépendances de production seules
Utilisateurnode (non-root), système de fichiers en lecture seule supporté
SondeHEALTHCHECK : l'API répond et voit sa base (GET /health), le webhook répond
ArrêtSIGTERM → plus de nouvelles requêtes, requêtes en cours terminées, décisions d'autorisation en attente écrites, tâches de fond achevées ; forcé après 20 s
Migrationstâche unique node dist/db/migrate.js à chaque version ; applique MAGOT_APP_PASSWORD au rôle applicatif
Exploitationnode dist/scripts/<script>.js (credentials émetteur, fournisseurs d'identité, abonnements d'événements)

Démarrage autonome (docker compose)

cd deploy
cp .env.example .env      # secrets : mots de passe, MAGOT_SECRETS_KEY
docker compose up -d      # db → migrate (tâche unique) → magot

deploy/compose.yaml applique les réglages de durcissement : système de fichiers en lecture seule, aucune capacité Linux, no-new-privileges, ports publiés sur 127.0.0.1 seulement. Une banque qui fournit son Postgres retire le service db et renseigne DATABASE_URL_ADMIN / DATABASE_URL_APP.

Deux rôles Postgres

Exposition réseau

PortQui l'appelleExposition
3000 API appapps mobiles, SDK, app de la banquederrière le reverse proxy TLS de la banque
3001 webhookprocesseur carte, core bankingmTLS uniquement (AUTHZ_TLS_KEY/CERT/CA) ; sans TLS, il n'écoute qu'à l'intérieur du conteneur

Secrets

VariableRôle
MAGOT_SECRETS_KEY32 octets (base64) ; scelle en base les secrets HMAC (émetteurs, abonnements). Sans elle, le service refuse de démarrer s'il existe des secrets à desceller
POSTGRES_PASSWORD, MAGOT_APP_PASSWORDrôles Postgres
AUTHZ_TLS_*certificat serveur du webhook + autorité des certificats clients
APNS_*notifications (facultatif)

À fournir par le coffre de la banque (fichiers montés ou variables injectées). Liste complète commentée : deploy/.env.example.

Limites actuelles