Aller à l'article
Aniq-UI

LearnioDépannage

Dépannage

Les erreurs que vous pouvez rencontrer en installant Learnio, leur cause et comment les corriger.

Pour le pack Full Stack

Docker n'est pas lancé

Ce que vous voyez
failed to connect to the docker API at unix:///…/docker.sock; check if the path is correct and if the daemon is running

Les anciennes versions de Docker affichent plutôt « Cannot connect to the Docker daemon ». Dans les deux cas, le moteur Docker n'est pas démarré.

  1. Ouvrez Docker Desktop

    Lancez Docker Desktop et attendez qu'il indique que le moteur est en marche. Sous Linux, démarrez le service : sudo systemctl start docker.

  2. Vérifiez que Docker répond

    Terminal
    docker info

    Résultat attendu: Une section Server s'affiche au lieu d'une erreur.

  3. Relancez votre commande de démarrage

    docker compose up --build pour le pack Full Stack, ou vos commandes docker build et docker run pour une application seule.

Un port est déjà utilisé

Ce que vous voyez
ports are not available: exposing port TCP 0.0.0.0:3030 … bind: address already in use
Error: listen EADDRINUSE: address already in use :::3030

La première ligne vient de Docker, la seconde de yarn dev. Un autre programme écoute déjà sur 3030, 3031 ou 8000 : souvent une exécution précédente de Learnio, ou le serveur de développement d'un autre projet.

  1. Trouvez ce qui occupe le port

    Sous macOS ou Linux :

    Terminal
    lsof -i :3030

    Sous Windows, dans PowerShell :

    Terminal
    netstat -ano | findstr :3030
  2. Arrêtez-le

    Fermez ce programme, ou arrêtez l'exécution précédente : Ctrl+C dans son terminal, docker compose down dans son dossier, ou docker stop pour un conteneur démarré avec docker run. Relancez ensuite Learnio.

  3. Ou lancez Learnio sur d'autres ports

    Avec le Full Stack sous Docker, créez un fichier nommé .env dans le dossier learnio-lms, à côté de docker-compose.yml, avec le port voulu. SITE_PORT déplace le site étudiant, ADMIN_PORT l'admin et API_PORT l'API ; les adresses utilisées par les applications suivent d'elles-mêmes.

    learnio-lms/.env
    ADMIN_PORT=3041

    Puis relancez la même commande. Après un démarrage raté, elle reprend là où elle s'était arrêtée :

    Terminaldans learnio-lms
    docker compose up --build

    Résultat attendu: L'application répond sur son nouveau port, ici localhost:3041Local.

Sans Docker, les ports sont fixés dans les fichiers .env. Pour y déplacer l'API, modifiez ensemble PORT dans back-end/.env, NEXT_PUBLIC_API_BASE_URL dans les deux frontends et CORS_ORIGIN : les trois doivent concorder. Avec Docker, utilisez plutôt API_PORT. Pour une seule application lancée avec docker run, changez le nombre à gauche de -p.

Configuration

Le build Docker échoue

Le premier build télécharge les images de base et toutes les dépendances, puis construit les images. Quand quelque chose bloque, il s'arrête avec « failed to solve » et l'étape qui a échoué.

  • Pas de connexion ou délai dépassé : le build a besoin d'un accès à internet. Relancez la commande une fois en ligne ; les étapes terminées sont en cache.
  • No space left on device : libérez de l'espace dans Docker Desktop, ou vérifiez ce que Docker occupe avec docker system df.
  • L'échec survient toujours à la même étape : reconstruisez sans le cache, puis démarrez.
Terminaldans learnio-lms
docker compose build --no-cache
docker compose up

Pour un pack à application unique, ajoutez --no-cache à votre commande docker build.

Un premier démarrage qui semble bloqué est généralement encore en train d'insérer les données de démonstration. Le site et le tableau de bord admin ne démarrent qu'une fois que l'API se déclare en bonne santé.

Yarn indique la version 1.22

Ce que vous voyez
This project's package.json defines "packageManager": "yarn@4…". However the current global version of Yarn is 1.22…

Chaque application fixe Yarn 4 via Corepack. Ce message signifie que Corepack n'est pas encore activé.

Terminal
corepack enable

Sous Node 26, qui n'inclut plus Corepack, installez-le d'abord avec npm install -g corepack. Il est normal que yarn install se termine par « Done with warnings » ; un véritable échec se termine par « Failed with errors ».

L'API s'arrête avant de démarrer

Ce que vous voyez
✖ The API cannot start. Fix these in back-end/.env:

L'API vérifie d'abord ses paramètres et liste ce qu'il faut corriger. Les causes habituelles :

  • Il n'y a pas de fichier `.env`. Créez-le dans back-end/ avec cp .env.example .env.
  • `JWT_SECRET` est vide, ou contient la valeur d'exemple avec `NODE_ENV=production`. Générez votre propre secret.
  • `CORS_ORIGIN` est vide avec `NODE_ENV=production`. Indiquez le site étudiant et le tableau de bord admin, séparés par une virgule.
  • `DB_TYPE` n'est ni `sqlite` ni `mysql`.

La connexion échoue

  • Vérifiez le compte et l'application. Les comptes du personnel se connectent au tableau de bord admin sur le port 3031 : admin@learnio.com avec Admin@123. L'étudiant de démonstration se connecte au site étudiant sur le port 3030 : demo@learnio.com avec Demo@123.
  • Consultez le journal de l'API. « The database has no accounts, so nobody can sign in » signifie que les données de démonstration n'ont jamais été ajoutées. Sans Docker, exécutez yarn seed dans back-end/. Avec Docker, le volume a été créé avec SEED_DEMO_DATA=false.
  • « The database has no tables yet » signifie que le schéma n'a jamais été créé : exécutez yarn seed dans back-end/ et redémarrez l'API.
  • Vous avez changé le mot de passe du super admin et ne l'avez plus : repartez de données de démonstration neuves, comme indiqué ci-dessous.
  • « That email and password combination didn't work » est la même réponse pour un e-mail inconnu et pour un mauvais mot de passe : vérifiez les deux.
  • « Too many attempts » signifie qu'une même adresse a fait plus de 10 tentatives sur un formulaire de connexion ou de mot de passe en une minute, ce qu'un serveur en production refuse avec 429. Attendez une minute, puis réessayez.

La connexion échoue

  • Consultez le journal de l'API. « The database has no accounts, so nobody can sign in » signifie que les données de démonstration n'ont jamais été ajoutées : exécutez yarn seed, ou démarrez le conteneur Docker avec -e SEED_DEMO_DATA=true sur un nouveau volume.
  • « The database has no tables yet » signifie que le schéma n'a jamais été créé : exécutez yarn seed et redémarrez l'API.
  • Vérifiez le compte. Le super admin est admin@learnio.com avec Admin@123, l'étudiant de démonstration demo@learnio.com avec Demo@123. Une connexion qui échoue répond 401 avec le même message, que l'erreur porte sur l'e-mail ou sur le mot de passe.
  • Une réponse `429` signifie qu'une même adresse a fait plus de 10 tentatives sur une route de connexion, d'inscription ou de mot de passe en une minute. L'en-tête Retry-After indique combien de secondes attendre.

La connexion échoue

Avec le mock exécuté dans le navigateur, n'importe quel e-mail et mot de passe vous connectent en tant que super admin. Une fois une API connectée, connectez-vous avec un compte qui y existe ; le super admin de démonstration est admin@learnio.com avec Admin@123.

Une mention « Sample data » apparaît

Le frontend n'a pas pu joindre l'API : il affiche donc ses données d'exemple intégrées à la place.

  1. Vérifiez que l'API répond

    Ouvrez localhost:8000/api/healthLocal. Il doit répondre avec le statut ok.

  2. Vérifiez l'adresse de l'API dans le frontend

    NEXT_PUBLIC_API_BASE_URL dans le .env du frontend doit être l'adresse de l'API, /api compris, par exemple http://localhost:8000/api.

  3. Redémarrez le frontend

    L'adresse est compilée dans l'application. Redémarrez yarn dev après l'avoir modifiée ; avec Docker, relancez docker compose up --build.

Les images des cours ne s'affichent plus après avoir branché R2

Avec des clés R2_* dans back-end/.env, l'API sert les médias depuis votre bucket, et les frontends n'affichent que les images des hôtes auxquels ils ont été compilés pour faire confiance. Sans cet hôte, chaque miniature de cours affiche son texte alternatif au lieu de l'image.

  1. Indiquez l'hôte public de votre bucket

    Avec Docker, mettez MEDIA_HOSTNAME=your-bucket.r2.dev dans un fichier .env à côté de docker-compose.yml. Sans Docker, définissez NEXT_PUBLIC_MEDIA_HOSTNAME dans le .env de chaque frontend. Écrivez uniquement l'hôte, sans https://.

  2. Recompilez les frontends

    L'hôte est compilé dans l'application. Relancez docker compose up --build, ou redémarrez yarn dev et recompilez pour la production.

    Résultat attendu: Les miniatures des cours se chargent depuis votre bucket.

Le dossier ne correspond pas

Exécutez les commandes dans le dossier où le ZIP est extrait. Si la commande unzip est absente, extrayez-le plutôt avec votre gestionnaire de fichiers ; certains outils ajoutent un dossier supplémentaire portant le nom du ZIP : placez-vous alors dans le dossier intérieur.

PackDossierContenu
Full Stacklearnio-lmsadmin-dashboard, back-end, frontend, docker-compose.yml
Site étudiantfrontendDockerfile, package.json, .env.example
Tableau de bord adminadmin-dashboardDockerfile, package.json, .env.example
APIback-endDockerfile, package.json, .env.example

Repartir de données de démonstration neuves

Cette opération supprime vos données

Tout ce que vous avez créé en local est supprimé, et les données de démonstration sont réinsérées.

Avec Docker, depuis le dossier learnio-lms :

Terminaldans learnio-lms
docker compose down -v
docker compose up

Sans Docker, arrêtez l'API, puis :

Terminaldans back-end
rm -f database.sqlite && yarn seed

Dans PowerShell :

Terminaldans back-end
Remove-Item database.sqlite; yarn seed

Relancer yarn seed sur une base de données que vous conservez ne la réinitialise pas : les rôles gardent les permissions que vous leur avez données et les paramètres les valeurs que vous avez enregistrées. Seule une base de données neuve rétablit celles d'origine.

Bloqué sur une étape ?

Trouvez une solution avant de tout recommencer.

Dépannage

Préférences des Cookies

Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et personnaliser le contenu. En cliquant sur "Accepter Tout", vous consentez à notre utilisation des cookies pour l'analyse et la publicité personnalisée.