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é
failed to connect to the docker API at unix:///…/docker.sock; check if the path is correct and if the daemon is runningLes 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é.
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.Vérifiez que Docker répond
Terminaldocker infoRésultat attendu: Une section Server s'affiche au lieu d'une erreur.
Relancez votre commande de démarrage
docker compose up --buildpour le pack Full Stack, ou vos commandesdocker buildetdocker runpour une application seule.
Un port est déjà utilisé
ports are not available: exposing port TCP 0.0.0.0:3030 … bind: address already in use
Error: listen EADDRINUSE: address already in use :::3030La 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.
Trouvez ce qui occupe le port
Sous macOS ou Linux :
Terminallsof -i :3030Sous Windows, dans PowerShell :
Terminalnetstat -ano | findstr :3030Arrêtez-le
Fermez ce programme, ou arrêtez l'exécution précédente : Ctrl+C dans son terminal,
docker compose downdans son dossier, oudocker stoppour un conteneur démarré avecdocker run. Relancez ensuite Learnio.Ou lancez Learnio sur d'autres ports
Avec le Full Stack sous Docker, créez un fichier nommé
.envdans le dossierlearnio-lms, à côté dedocker-compose.yml, avec le port voulu.SITE_PORTdéplace le site étudiant,ADMIN_PORTl'admin etAPI_PORTl'API ; les adresses utilisées par les applications suivent d'elles-mêmes.learnio-lms/.envADMIN_PORT=3041Puis relancez la même commande. Après un démarrage raté, elle reprend là où elle s'était arrêtée :
Terminaldanslearnio-lmsdocker compose up --buildRé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.
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.
learnio-lmsdocker compose build --no-cache
docker compose upPour 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
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é.
corepack enableSous 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
✖ 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/aveccp .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.comavecAdmin@123. L'étudiant de démonstration se connecte au site étudiant sur le port3030:demo@learnio.comavecDemo@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 seeddansback-end/. Avec Docker, le volume a été créé avecSEED_DEMO_DATA=false. - « The database has no tables yet » signifie que le schéma n'a jamais été créé : exécutez
yarn seeddansback-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=truesur un nouveau volume. - « The database has no tables yet » signifie que le schéma n'a jamais été créé : exécutez
yarn seedet redémarrez l'API. - Vérifiez le compte. Le super admin est
admin@learnio.comavecAdmin@123, l'étudiant de démonstrationdemo@learnio.comavecDemo@123. Une connexion qui échoue répond401avec 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-Afterindique 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.
Vérifiez que l'API répond
Ouvrez localhost:8000/api/healthLocal. Il doit répondre avec le statut
ok.Vérifiez l'adresse de l'API dans le frontend
NEXT_PUBLIC_API_BASE_URLdans le.envdu frontend doit être l'adresse de l'API,/apicompris, par exemplehttp://localhost:8000/api.Redémarrez le frontend
L'adresse est compilée dans l'application. Redémarrez
yarn devaprès l'avoir modifiée ; avec Docker, relancezdocker 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.
Indiquez l'hôte public de votre bucket
Avec Docker, mettez
MEDIA_HOSTNAME=your-bucket.r2.devdans un fichier.envà côté dedocker-compose.yml. Sans Docker, définissezNEXT_PUBLIC_MEDIA_HOSTNAMEdans le.envde chaque frontend. Écrivez uniquement l'hôte, sanshttps://.Recompilez les frontends
L'hôte est compilé dans l'application. Relancez
docker compose up --build, ou redémarrezyarn devet 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.
| Pack | Dossier | Contenu |
|---|---|---|
| Full Stack | learnio-lms | admin-dashboard, back-end, frontend, docker-compose.yml |
| Site étudiant | frontend | Dockerfile, package.json, .env.example |
| Tableau de bord admin | admin-dashboard | Dockerfile, package.json, .env.example |
| API | back-end | Dockerfile, 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 :
learnio-lmsdocker compose down -v
docker compose upSans Docker, arrêtez l'API, puis :
back-endrm -f database.sqlite && yarn seedDans PowerShell :
back-endRemove-Item database.sqlite; yarn seedRelancer 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.