MonServiceSécurisé est un service numérique développé par le laboratoire d'innovation de l'ANSSI, en lien avec l'incubateur BetaGouv de la direction interministérielle du numérique. Il vise à aider les collectivités territoriales et les autres entités publiques à sécuriser et à homologuer leurs services publics numériques (sites web, applications mobiles, API).
Il est nécessaire en prérequis d'avoir installé
- Git,
- Docker
- Une version récente (>= 18) de Node.js :
Nous vous conseillons d'utilisernvm use, pour utiliser la même version que dans les environnements d'intégration continue et de production, car nous spécifions la version de Node.js à utiliser dans le fichier.nvmrc.
Commencer par récupérer les sources du projet et aller dans le répertoire créé.
$ git clone https://github.com/betagouv/mon-service-securise.git && cd mon-service-securiseCréer un network Docker pour accueillir MonServiceSécurisé en local.
$ docker network create mss-networkCréer un network Docker pour accueillir les services du Lab en local, s'il n'existe pas déjà.
$ docker network create lab-networkCréer un fichier .env à partir du fichier .env.template et renseigner les diverses variables d'environnement.
⚠ La première fois: ne renseignez pas CHIFFREMENT_SEL_DE_HASHAGE_1
Démarrer la base de données
$ docker compose up mss-db --build -dSe connecter au conteneur de la base de données et créer une nouvelle base mss pour un utilisateur postgres.
$ docker compose exec mss-db createdb -U postgres mssLe serveur est configuré et prêt à être redémarré.
$ ./scripts/start.sh⚠ La première fois: l'erreur suivante sur le sels doit s'afficher :
[SERVEUR] 💥 Erreur de vérification des sels: Aucun sel de hachage dans la config.
Exécutez le script suivant pour configurer le sel des hashs (en développement uniquement) :
$ ./scripts/dev_init_sel.shRedémarrez le serveur :
$ ./scripts/start.shLe serveur devrait être accessible depuis un navigateur à l'URL
http://localhost:[PORT_MSS] (avec comme valeur pour PORT_MSS celle indiquée
dans le fichier .env).
Il est alors possible de créer un compte utilisateur à l'url http://localhost:[PORT_MSS]/inscription.
Postgresest relayé sur le port5432de l'hôte. Donc le requêtage via un outil graphique est possible.
Les tests peuvent être lancés depuis un conteneur Docker en exécutant le script
scripts/tests.sh. Les tests sont alors rejoués à chaque modification de
fichier du projet sur la machine hôte.
Les scripts de migration de la base de données sont exécutés automatiquement au démarrage du service. Si vous avez besoin d'exécuter manuellement ces migrations, vous pouvez le faire en exécutant la commande suivante :
$ docker compose exec web npm run migration-bddCertaines parties du frontend sont suffisament compliquées pour ne pas être codées en jQuery.
Pour celles-ci, on utilise Svelte. Le code est rangé dans /svelte.
En local, les composants sont build à la volée grâce à l'option vite build --watch.
En production, ils sont build via le build du package.json.
Dans les deux cas, le code généré se retrouve dans /public/composants-svelte pour être référencé depuis les .pug.