From a8b12a25c90bb9b7fda5375a1a28cb338fa286e1 Mon Sep 17 00:00:00 2001 From: Johan Date: Tue, 14 May 2024 11:28:13 +0200 Subject: [PATCH 1/8] :pencil: update install doc + troubleshooting --- docs/install.md | 14 +++++---- docs/troubleshooting.md | 69 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 docs/troubleshooting.md diff --git a/docs/install.md b/docs/install.md index 006162e..e5caba4 100644 --- a/docs/install.md +++ b/docs/install.md @@ -61,13 +61,15 @@ Pour développer une évolution dans l'application CAMAP, il est nécessaire de ### camap-ts - +- Installer les dépendances : `npm i` +- Tout compiler : `npm run build` +- Relancez éventuellement le container nest-loc-camap ## Installer l'environnement projet Tout d'abord, suivez les étapes d'installation de [**camap-docker**](https://github.com/CAMAP-APP/camap-docker). -Utiliser dans un premier temps le docker-compose.yml de base (pas celui de dev). +Utiliser dans un premier temps le docker-compose.yml de base. Une fois les étapes terminées, assurez vous de jouer une première fois la commande `docker compose up -d --build` et de vérifier que l'environnement fonctionne en mode production. @@ -97,13 +99,13 @@ Une fois les étapes terminées, assurez vous de jouer une première fois la com - `lix use haxe 4.0.5` - `lix download` - `npm install` -- Exécutez les actions: - - "Haxe: Restart Language Server" pour vérifier que votre installation a bien détecté l'environnement haxe. - - "Build" + - Exécutez les actions: + - "Haxe: Restart Language Server" pour vérifier que votre installation a bien détecté l'environnement haxe. + - "Build" ## Utiliser le docker-compose.yml pour le dev -Copier/coller `camap-docker\docker-compose.dev.yml` comme `docker-compose.yml` dans votre dossier camap et exécuter ce docker-compose +Cela permettra, grâce aux volumes, de lancer les conteneurs docker avec les fichiers sources locaux de la machine hote. exécuter ```docker-compose up -d --build``` diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md new file mode 100644 index 0000000..868290e --- /dev/null +++ b/docs/troubleshooting.md @@ -0,0 +1,69 @@ +# Troubleshooting + +Consultez cette section en cas d'erreur + + +## Sur le navigateur +`Error : load.c(181) : Module not found : /srv/www/../lang/fr/tmp/error.mtt.n` +- Vérifier que les fichiers dans `lang/fr` ont bien été générés +- Sinon : + - Relancer build + - Checker permission + +`"Unsupported charset : #255"` +- Attention à ne pas créer la DB vous même, laissez le serveur camap-hx le faire pour imposer le bon charset + +`"Error : Invalid field access : id"` +- **explication**: L'application (haxe) essaye d'accéder à la base de données mais celle-ci n'est pas disponible ou n'est pas initialisée +- à vérifier: + - initialisation la base de données (`camap-ts> npm run schema:sync` puis visiter [https://camap.localdomain/install](https://camap.localdomain/install)) + - la base de données accepte les connexionl'accès via mysql_native_password + - la base de données est accessible dans l'environnement haxe + - Recréez un container neko-loc-camap, charger la page `https://camap.localdomain/` puis vérifiez les logs si besoin +- ⚠ N'oubliez pas, il faut ouvrir la page dans la navigateur pour lancer la génération ! + +La route `https://camap.localdomain/user/login` fonctionne, mais n'affiche pas le formulaire + erreurs en console (`Uncaught TypeError: can't access property "createNeoModule", neo is undefined`) + +## Base de données - loc-mysql +- `[Warning] World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.` + - Changer les permissions vers 0444: `chmod 0444 my.cnf` + - Et monter le dossier : + +```yaml +volumes: + # Set mysql extra config: + - my.cnf:/etc/mysql/conf.d/my.cnf +``` + +Si la config BD est bien prise en compte, le warning suivant doit apparaitre dans les logs de la BD : "Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'" + +- `Public Key Retrieval is not allowed` (depuis un client BD comme DBeaver) + - La config my.cnf n'a pas l'air d'être prise en compte (et donc le mode de connexion particulier) + +## camap-ts - nest-loc-camap +- `[Nest] 31 - 04/30/2024, 9:53:00 AM ERROR [Scheduler] QueryFailedError: Table 'db-camap.BufferedJsonMail' doesn't exist` + - Soit : Les tables de la BD n'ont pas été créées. Vérifier les logs pour voir si une autre erreur apparait + - Soit : Nest n'arrive pas à se connecter à) la BD + +- `Failed to connect to mysql server : Failed to connect on host 'loc-mysql'` + - Relancer, le docker compose a peu être été trop vite.. + - Erreur rare + + ### camap-hx - neko-loc-camap +- ` Failed to connect to mysql server : Client does not support authentication protocol requested by server; consider upgrading MySQL client` + - Pour brancher Neko sur MySQL8, il faut utiliser l'ancienne authentification "mysql_native_password". Pour cela, une ligne a été ajoutée dans `camap-ts/docker-compose/mysql/my.cnf`. Cependant, il faut vérifier que ce fichier est bien pris en compte par la BD. Vérifier les logs de loc-mysql si le warning "World-writable config file" est présent + +- `Segmentation fault` + - Pas sur, mais tentez d'augmenter la RAM affectée à Docker (j'ai dû monter à 12GB personnellement) + - N'hésitez pas à tenter de lancer plusieurs fois le container jusqu'à temps que cela fonctionne + +- `Error : Temploc compilation of error.mtt failed : Called from templo/Main.nml line 183` + - Le dossier lang/master/tmp ne doit pas exister. Essayer de le créer à la main + +- `TypeError: can't access property "createNeoModule", neo is undefined` + - Essayer `npm run build:front` dans camap-ts + - Si il y a une erreur de `camap-common not found`, rebuilder le tout => Dans le dossier packages : `npm run build` + +- `unable to load resources from camap-ts` + - **explication**: SSL n'est pas configuré en local et l'application ne parvient pas à accéder à camap-ts par manque de permission + - **solution**: ouvrir le navigateur sur [https://api.camap.localdomain/](https://api.camap.localdomain/) et ajouter une exception de sécurité. \ No newline at end of file From 55ccf36143fb582c8bfe1ed445a2705034c95791 Mon Sep 17 00:00:00 2001 From: Samuel Bouchet Date: Tue, 14 May 2024 11:43:20 +0200 Subject: [PATCH 2/8] Improve documentation --- docs/install.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/docs/install.md b/docs/install.md index 006162e..64921f7 100644 --- a/docs/install.md +++ b/docs/install.md @@ -21,7 +21,7 @@ Pour développer une évolution dans l'application CAMAP, il est nécessaire de ### camap-hx (Le socle applicatif initial): -#### backend (templates): +#### backend (templates et api): - role: - rendu de templates "templo" via apache2 mod neko. - service d'API sur `/api//` où est défini dans `camap-hx\src\controller\api\.hx` et en tant que `doAction` dans le controlleur. @@ -35,6 +35,9 @@ Pour développer une évolution dans l'application CAMAP, il est nécessaire de - Les modifications des templates (.mtt) sont prises en compte au rechargement de la page. - Les modifications haxe nécessitent une recompilation (build backend/build.hxml depuis vscode) +#### backend (cron): +- voir: voir [crons.md](crons.md) + #### backend (css, html, images, fonts et autres fichiers statics) - role: fournir les fichiers css pour les thèmes et les styles de pages - sources: camap-hx/www/*, camap-hx/www/theme/default/css/bootswatch.scss, camap-hx/www/theme/default/css/variables.less @@ -61,7 +64,52 @@ Pour développer une évolution dans l'application CAMAP, il est nécessaire de ### camap-ts +Camap-ts rassemble un ensemble de sous projet. Le projet parent contient un package.json et quelques outils pour les pilotes globalement. + +- role: build et démarrer les sous-projets +- exécution: voir [package.json](..%2Fpackage.json) + - installer toutes les dépendances des packages: camap-ts> `npm install` + - build tous les packages: camap-ts> `npm run build` + - Démarrer le serveur nest et le cron: camap-ts> `npm start` + +#### camap-ts/packages/camap-common + +- role: Bibliothèque de code partagé pour les autres application. +- sources: camap-ts/packages/camap-common/src +- compilation (via rollup): camap-ts> `npm run build:common` +- output: + - camap-ts/packages/camap-common/dist/index.js + - point d'entrée au format commonJS de la lib + +#### camap-ts/packages/api-core +- role: Serveur d'API NestJS, fournit un service d'API complémentaire à camap-hx/backend. +- sources: camap-ts/packages/api-core/src, camap-common +- compilation: camap-ts> `npm run build:front` +- output: camap-ts/packages/front-core/dist/* +- exécution: + - camap-ts> `npm start` + - cron: voir [crons.md](crons.md) + +#### camap-ts/packages/api-core/mails + +- role: Compiler les templates de mails pour l'envoi de mails de la partie typescript de l'app. +- sources: camap-ts/packages/api-core/mails +- compilation: camap-ts> `npm run build:mail` +- output: camap-ts/packages/api-core/mails/dist +- exécution: via le service nest [emails.md](emails.md) + +#### camap-ts/packages/front-core + +- role: Compile les neomodules pour les fournir au frontend à la demande. +- sources: camap-ts/packages/front-core/src, camap-common +- output: + - camap-ts/public/neostatic/*.bundle.js + - camap-ts/public/neostatic/manifest.json +- compilation: camap-ts> `npm run build:front` +- utilisation: + - Le template haxe [base.mtt](..%2F..%2Fcamap-hx%2Flang%2Fmaster%2Ftpl%2Fbase.mtt) importe les scripts via [BridgeService.hx](..%2F..%2Fcamap-hx%2Fsrc%2Fservice%2FBridgeService.hx) + - voir [neo-modules.md](neo-modules.md) ## Installer l'environnement projet From 80d07ea0fa0299364be915598e1546953f693f40 Mon Sep 17 00:00:00 2001 From: Johan Date: Wed, 15 May 2024 10:43:16 +0200 Subject: [PATCH 3/8] :recycle: move mysql related files --- docker-compose/docker-compose.ci.yml | 36 ------------------- docs/install.md | 2 ++ docs/troubleshooting.md | 13 ++++--- .../mysql => mysql}/init-test-db.sql | 0 {docker-compose/mysql => mysql}/my.cnf | 0 5 files changed, 8 insertions(+), 43 deletions(-) delete mode 100644 docker-compose/docker-compose.ci.yml rename {docker-compose/mysql => mysql}/init-test-db.sql (100%) rename {docker-compose/mysql => mysql}/my.cnf (100%) mode change 100755 => 100644 diff --git a/docker-compose/docker-compose.ci.yml b/docker-compose/docker-compose.ci.yml deleted file mode 100644 index 5e8a23f..0000000 --- a/docker-compose/docker-compose.ci.yml +++ /dev/null @@ -1,36 +0,0 @@ -version: "2" -services: - mysql: - build: ./mysql - environment: - - MYSQL_ROOT_PASSWORD=root - - MYSQL_DATABASE=db - - MYSQL_USER=docker - - MYSQL_PASSWORD=docker - ports: - - "3306:3306" - command: --init-file /data/application/init.sql - volumes: - - database:/var/lib/mysql - - ./mysql/dumps/:/root/dumps - - ./mysql/init-test-db.sql:/data/application/init.sql - nest_e2e: - container_name: nest_e2e - depends_on: - - mysql - image: node:16.18 - ports: - - "3010:3010" - volumes: - - ../:/home/node/app - working_dir: /home/node/app/packages/api-core - command: - - /bin/sh - - -c - - | - sort -u -t '=' -k 1,1 ../../.env.ci.test ../../.env.test > tmp - cat tmp > ../../.env.test - rm tmp - npm run test:e2e -volumes: - database: diff --git a/docs/install.md b/docs/install.md index e5caba4..8d30dfb 100644 --- a/docs/install.md +++ b/docs/install.md @@ -15,6 +15,8 @@ L'installation consistera a 2. installer les outils et dépendances nécessaire pour le développement. 3. personnaliser le docker-file pour utiliser les fichiers sources locaux de la machine hote dans les conteneurs docker, +En cas d'erreur, un troubleshooting est à disposition [ici](./troubleshooting.md) + ## Architecture des projets et interactions Pour développer une évolution dans l'application CAMAP, il est nécessaire de comprendre comment les projets s'articulent. diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 868290e..4822180 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -28,12 +28,11 @@ La route `https://camap.localdomain/user/login` fonctionne, mais n'affiche pas l - `[Warning] World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.` - Changer les permissions vers 0444: `chmod 0444 my.cnf` - Et monter le dossier : - -```yaml -volumes: - # Set mysql extra config: - - my.cnf:/etc/mysql/conf.d/my.cnf -``` + ```yaml + volumes: + # Set mysql extra config: + - my.cnf:/etc/mysql/conf.d/my.cnf + ``` Si la config BD est bien prise en compte, le warning suivant doit apparaitre dans les logs de la BD : "Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'" @@ -51,7 +50,7 @@ Si la config BD est bien prise en compte, le warning suivant doit apparaitre dan ### camap-hx - neko-loc-camap - ` Failed to connect to mysql server : Client does not support authentication protocol requested by server; consider upgrading MySQL client` - - Pour brancher Neko sur MySQL8, il faut utiliser l'ancienne authentification "mysql_native_password". Pour cela, une ligne a été ajoutée dans `camap-ts/docker-compose/mysql/my.cnf`. Cependant, il faut vérifier que ce fichier est bien pris en compte par la BD. Vérifier les logs de loc-mysql si le warning "World-writable config file" est présent + - Pour brancher Neko sur MySQL8, il faut utiliser l'ancienne authentification "mysql_native_password". Pour cela, une ligne a été ajoutée dans `camap-ts/mysql/my.cnf`. Cependant, il faut vérifier que ce fichier est bien pris en compte par la BD. Vérifier les logs de loc-mysql si le warning "World-writable config file" est présent - `Segmentation fault` - Pas sur, mais tentez d'augmenter la RAM affectée à Docker (j'ai dû monter à 12GB personnellement) diff --git a/docker-compose/mysql/init-test-db.sql b/mysql/init-test-db.sql similarity index 100% rename from docker-compose/mysql/init-test-db.sql rename to mysql/init-test-db.sql diff --git a/docker-compose/mysql/my.cnf b/mysql/my.cnf old mode 100755 new mode 100644 similarity index 100% rename from docker-compose/mysql/my.cnf rename to mysql/my.cnf From dbdbebc330689f5028ce780e5b746e189250dab4 Mon Sep 17 00:00:00 2001 From: Johan Date: Wed, 15 May 2024 15:40:58 +0200 Subject: [PATCH 4/8] update doc (dev) --- docs/install.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/docs/install.md b/docs/install.md index 8d30dfb..8702e10 100644 --- a/docs/install.md +++ b/docs/install.md @@ -63,10 +63,6 @@ Pour développer une évolution dans l'application CAMAP, il est nécessaire de ### camap-ts -- Installer les dépendances : `npm i` -- Tout compiler : `npm run build` -- Relancez éventuellement le container nest-loc-camap - ## Installer l'environnement projet Tout d'abord, suivez les étapes d'installation de [**camap-docker**](https://github.com/CAMAP-APP/camap-docker). @@ -105,10 +101,8 @@ Une fois les étapes terminées, assurez vous de jouer une première fois la com - "Haxe: Restart Language Server" pour vérifier que votre installation a bien détecté l'environnement haxe. - "Build" -## Utiliser le docker-compose.yml pour le dev - -Cela permettra, grâce aux volumes, de lancer les conteneurs docker avec les fichiers sources locaux de la machine hote. - -exécuter ```docker-compose up -d --build``` +## Utiliser le docker-compose.dev.yml pour le dev +Cela permettra, grâce aux volumes, de lancer les conteneurs docker avec les fichiers compilés locaux de la machine hote. +exécuter ```docker-compose up -d``` \ No newline at end of file From 7a338bc005bfbb603543bb8241e974422e011209 Mon Sep 17 00:00:00 2001 From: Johan Date: Tue, 21 May 2024 15:28:23 +0200 Subject: [PATCH 5/8] :pencil: update troubleshooting --- docs/install.md | 2 +- docs/troubleshooting.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/install.md b/docs/install.md index 326d83b..ab08763 100644 --- a/docs/install.md +++ b/docs/install.md @@ -38,7 +38,7 @@ Pour développer une évolution dans l'application CAMAP, il est nécessaire de - Les modifications haxe nécessitent une recompilation (build backend/build.hxml depuis vscode) #### backend (cron): -- voir: voir [crons.md](crons.md) +- voir [crons.md](crons.md) #### backend (css, html, images, fonts et autres fichiers statics) - role: fournir les fichiers css pour les thèmes et les styles de pages diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 4822180..c4f02dc 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -9,6 +9,10 @@ Consultez cette section en cas d'erreur - Sinon : - Relancer build - Checker permission + Si cela ne fonctionne pas : + - Lisez ['.templates.md'](./templates.md) pour bien comprendre le fonctionnement des templates + - `cd backend && haxe build.hxml -D i18n_generation && cd tpl && neko ../../../backend/temploc2.n -macros macros.mtt -output ../tmp/ *.mtt */*.mtt */*/*.mtt` + `"Unsupported charset : #255"` - Attention à ne pas créer la DB vous même, laissez le serveur camap-hx le faire pour imposer le bon charset From 94d3ab806554e3f5a39a328acb844ff16161abe4 Mon Sep 17 00:00:00 2001 From: Samuel Bouchet Date: Tue, 21 May 2024 07:49:27 +0200 Subject: [PATCH 6/8] Fix: use bounded cache option for security --- packages/api-core/src/app.module.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/api-core/src/app.module.ts b/packages/api-core/src/app.module.ts index ac8f02e..6b5b8d7 100644 --- a/packages/api-core/src/app.module.ts +++ b/packages/api-core/src/app.module.ts @@ -42,6 +42,7 @@ const envFilePath = join( TypeOrmModule.forRoot(), GraphQLModule.forRoot({ driver: ApolloDriver, + cache: 'bounded', debug: process.env.NODE_ENV !== 'production', playground: process.env.NODE_ENV !== 'production', autoSchemaFile: join(process.cwd(), './src/schema.gql'), From 424363006035186137ee40f5267fe25602dbe922 Mon Sep 17 00:00:00 2001 From: Amaury <108131079+Mandrak-Kimigo@users.noreply.github.com> Date: Wed, 22 May 2024 19:40:37 +0200 Subject: [PATCH 7/8] Update my.cnf log verbosity 1 to avoid spam by msg about obsolete auth module --- mysql/my.cnf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mysql/my.cnf b/mysql/my.cnf index b1d544f..ddf4a47 100644 --- a/mysql/my.cnf +++ b/mysql/my.cnf @@ -13,4 +13,5 @@ character-set-server = utf8mb4 # in production, keep the line commented to prevent database exposure. # bind-address=0.0.0.0 -default-authentication-plugin=mysql_native_password \ No newline at end of file +default-authentication-plugin=mysql_native_password +log-error-verbosity=1 From fc205251554def346af22d0e4d05cc1de885e641 Mon Sep 17 00:00:00 2001 From: Mandrak-Kimigo Date: Wed, 22 May 2024 19:46:04 +0200 Subject: [PATCH 8/8] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20move=20mysql=20related?= =?UTF-8?q?=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose/docker-compose.ci.yml | 36 ------------------- .../mysql => mysql}/init-test-db.sql | 0 {docker-compose/mysql => mysql}/my.cnf | 0 3 files changed, 36 deletions(-) delete mode 100644 docker-compose/docker-compose.ci.yml rename {docker-compose/mysql => mysql}/init-test-db.sql (100%) rename {docker-compose/mysql => mysql}/my.cnf (100%) mode change 100755 => 100644 diff --git a/docker-compose/docker-compose.ci.yml b/docker-compose/docker-compose.ci.yml deleted file mode 100644 index 5e8a23f..0000000 --- a/docker-compose/docker-compose.ci.yml +++ /dev/null @@ -1,36 +0,0 @@ -version: "2" -services: - mysql: - build: ./mysql - environment: - - MYSQL_ROOT_PASSWORD=root - - MYSQL_DATABASE=db - - MYSQL_USER=docker - - MYSQL_PASSWORD=docker - ports: - - "3306:3306" - command: --init-file /data/application/init.sql - volumes: - - database:/var/lib/mysql - - ./mysql/dumps/:/root/dumps - - ./mysql/init-test-db.sql:/data/application/init.sql - nest_e2e: - container_name: nest_e2e - depends_on: - - mysql - image: node:16.18 - ports: - - "3010:3010" - volumes: - - ../:/home/node/app - working_dir: /home/node/app/packages/api-core - command: - - /bin/sh - - -c - - | - sort -u -t '=' -k 1,1 ../../.env.ci.test ../../.env.test > tmp - cat tmp > ../../.env.test - rm tmp - npm run test:e2e -volumes: - database: diff --git a/docker-compose/mysql/init-test-db.sql b/mysql/init-test-db.sql similarity index 100% rename from docker-compose/mysql/init-test-db.sql rename to mysql/init-test-db.sql diff --git a/docker-compose/mysql/my.cnf b/mysql/my.cnf old mode 100755 new mode 100644 similarity index 100% rename from docker-compose/mysql/my.cnf rename to mysql/my.cnf