From 7624666b72104ffe3c0aa8d50f26cb78523d0ab1 Mon Sep 17 00:00:00 2001 From: "IETM_FIXE\\ietm6" Date: Tue, 21 Apr 2026 14:41:46 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20l'install.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INSTALL.md | 283 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 232 insertions(+), 51 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 5075d60..2bca0f2 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,75 +1,256 @@ # Installation de LoreMindMJ -## Prerequis +Guide pas-a-pas pour deployer LoreMindMJ chez toi. Compte 5 a 10 minutes selon +ta connexion. -- **Docker Desktop** ([Windows](https://www.docker.com/products/docker-desktop/) / [Mac](https://www.docker.com/products/docker-desktop/)) - ou **Docker Engine + Compose v2** (Linux). -- (Optionnel) **[Ollama](https://ollama.com/)** si tu veux un LLM local. - Sinon, une cle API [1min.ai](https://1min.ai) suffit. +## 1. Prerequis -## Installation (5 minutes) +- **Docker Desktop** ([Windows](https://www.docker.com/products/docker-desktop/) / + [Mac](https://www.docker.com/products/docker-desktop/)) ou + **Docker Engine + Compose v2** (Linux). Verifie avec : + ``` + docker --version + docker compose version + ``` + Compose v2 est requis (la commande est `docker compose`, pas `docker-compose`). -1. Telecharge `docker-compose.yml` et `.env.example` depuis la [derniere release](https://git.igmlcreation.fr/ietm64/LoreMindMJ/releases) dans un dossier a toi. +- **Un fournisseur de LLM**, au choix : + - **[Ollama](https://ollama.com/)** installe sur ta machine hote (gratuit, local, + necessite ~6 Go de RAM libre pour les modeles recommandes). + - **Une cle API [1min.ai](https://1min.ai)** (cloud, facture a l'usage, aucune + installation supplementaire requise). -2. Renomme `.env.example` en `.env` et ouvre-le dans un editeur texte. Trois variables sont **obligatoires** : - - `POSTGRES_PASSWORD` : mot de passe de la base (choisis-en un). - - `ADMIN_PASSWORD` : protege l'ecran Parametres de l'appli. Tu le taperas dans une popup du navigateur. - - `BRAIN_INTERNAL_SECRET` : secret interne partage entre les services. Genere une valeur aleatoire : - ``` - openssl rand -hex 32 - ``` - (Sous Windows sans openssl : utilise un generateur en ligne type "random hex string 64 chars".) +- Environ **2 Go d'espace disque** pour les images Docker (base, Java, Python, + nginx, MinIO) + la taille de tes modeles Ollama si tu choisis le local. - Sans ces trois variables, `docker compose up` refusera de demarrer — c'est volontaire pour eviter un deploiement non-securise par defaut. +## 2. Recuperer les fichiers -3. Dans un terminal, place-toi dans le dossier et lance : - ``` - docker compose up -d - ``` - Le premier demarrage telecharge les images (~500 Mo) et initialise la base. Compte 1-2 minutes. +Telecharge les deux fichiers suivants depuis la +[derniere release](https://git.igmlcreation.fr/ietm64/LoreMindMJ/releases) dans +un dossier dedie (par exemple `~/loremind/`) : -4. Ouvre http://localhost:8081 dans ton navigateur. Bon jeu ! +- `docker-compose.yml` +- `.env.example` -## Mise a jour +Tu n'as pas besoin du code source — les images sont pre-construites et +publiees sur le registry Gitea `git.igmlcreation.fr` (pas Docker Hub). Le +premier `docker compose pull` les telechargera automatiquement. + +## 3. Configurer `.env` + +Renomme `.env.example` en `.env` et ouvre-le dans un editeur texte. **Trois +variables sont obligatoires** — sans elles, `docker compose up` refusera de +demarrer (c'est volontaire pour eviter un deploiement non-securise par defaut) : + +### `POSTGRES_PASSWORD` +Mot de passe de la base de donnees. Choisis-en un fort, tu n'auras pas besoin de +le retenir (seuls les conteneurs l'utilisent). + +### `ADMIN_PASSWORD` +Protege l'ecran **Parametres** de l'application via HTTP Basic. Tu le taperas +dans une popup du navigateur quand tu voudras changer de modele LLM ou de cle +API. Le nom d'utilisateur par defaut est `admin` (modifiable via +`ADMIN_USERNAME`). + +### `BRAIN_INTERNAL_SECRET` +Secret partage entre le service Java (`core`) et le service Python (`brain`) +qui empeche toute requete externe d'atteindre directement le Brain. Genere une +valeur aleatoire de 64 caracteres hex : + +``` +openssl rand -hex 32 +``` + +Sous Windows sans openssl : utilise un generateur en ligne type +"random hex string 64 chars" ou PowerShell : + +```powershell +-join ((48..57) + (97..102) | Get-Random -Count 64 | % {[char]$_}) +``` + +### Variables optionnelles utiles + +- `WEB_PORT` (defaut `8081`) — port d'ecoute de l'UI. +- `ADMIN_USERNAME` (defaut `admin`) — nom d'utilisateur de la popup Parametres. +- `LLM_PROVIDER` (defaut `ollama`) — choix du provider (voir section 5). + +Les autres variables (`MINIO_USER`/`PASSWORD`, `POSTGRES_DB`/`USER`) ont des +valeurs par defaut raisonnables pour un deploiement personnel — tu peux les +laisser telles quelles. + +## 4. Lancer la stack + +Depuis le dossier contenant `docker-compose.yml` et `.env` : + +``` +docker compose up -d +``` + +Le premier demarrage telecharge les images (~1 a 2 Go au total) et initialise +la base. Compte 2 a 5 minutes selon ta connexion. Tu peux suivre la progression : + +``` +docker compose logs -f +``` + +(`Ctrl+C` pour quitter l'affichage, les services continuent de tourner en +arriere-plan.) + +Une fois les services marques `healthy`, ouvre **http://localhost:8081** dans +ton navigateur. Bon jeu ! + +### Verifier que tout tourne + +``` +docker compose ps +``` + +Tu devrais voir 5 conteneurs en etat `Up` / `healthy` : +`loremind-postgres`, `loremind-minio`, `loremind-core`, `loremind-brain`, +`loremind-web`. Le conteneur `loremind-minio-init` s'arrete tout seul apres +avoir cree le bucket d'images — c'est normal. + +## 5. LLM : Ollama ou 1min.ai ? + +### Ollama (local, gratuit) + +Installe Ollama sur ta machine hote (pas dans Docker), puis telecharge un +modele : + +``` +ollama pull gemma4:26b +``` + +Dans `.env` : + +``` +LLM_PROVIDER=ollama +LLM_MODEL=gemma4:26b +OLLAMA_BASE_URL=http://host.docker.internal:11434 +``` + +`host.docker.internal` permet au conteneur `brain` d'atteindre Ollama qui +tourne sur ton hote. Ca marche nativement sur Docker Desktop (Mac / Windows) ; +sur Linux, le `docker-compose.yml` ajoute un `extra_hosts` qui fait la meme +chose. + +### 1min.ai (cloud, paye) + +Dans `.env` : + +``` +LLM_PROVIDER=onemin +ONEMIN_API_KEY=sk-... +ONEMIN_MODEL=gpt-4o-mini +``` + +### Changer a chaud + +Tu peux aussi changer le provider, le modele et la cle API a chaud depuis +l'ecran **Parametres** de l'appli — tes modifications sont persistees dans un +volume Docker et survivent aux redemarrages. Les variables d'env du `.env` +servent uniquement de valeurs initiales au premier demarrage. + +## 6. Mise a jour ``` docker compose pull docker compose up -d ``` -Les donnees (base Postgres, images MinIO, settings Brain) sont dans des volumes Docker et survivent aux mises a jour. +Les donnees (base Postgres, images MinIO, settings Brain) sont dans des volumes +Docker et survivent aux mises a jour. -## LLM : Ollama ou 1min.ai ? +## 7. Sauvegarde -**Ollama (local, gratuit)** — Edite `.env` : -``` -LLM_PROVIDER=ollama -LLM_MODEL=gemma4:26b -``` -Telecharge le modele au prealable : `ollama pull gemma4:26b`. +Les donnees sont dans trois volumes Docker : -**1min.ai (cloud, paye)** — Edite `.env` : -``` -LLM_PROVIDER=onemin -ONEMIN_API_KEY=sk-... -ONEMIN_MODEL=open-mistral-nemo -``` +- `loremindmj_postgres-data` — tout le contenu applicatif (lores, campagnes, + pages, templates, branches, etc.) +- `loremindmj_minio-data` — les images uploadees +- `loremindmj_brain-data` — les settings IA (provider courant, cle API 1min.ai) -Tu peux aussi changer tout ca a chaud depuis l'ecran Parametres de l'appli. +### Dump SQL de la base -## Problemes frequents - -- **Port 8081 deja pris** : change `WEB_PORT=8082` (ou autre) dans `.env`. -- **Ollama injoignable** : verifie qu'Ollama tourne (`ollama serve`) et que le modele est bien telecharge. -- **"set ADMIN_PASSWORD in .env" / "set BRAIN_INTERNAL_SECRET in .env"** au lancement : tu as oublie une des variables obligatoires de l'etape 2. -- **Popup "Ce site vous demande de vous connecter" sur l'ecran Parametres** : c'est normal. Utilise `admin` (ou ce que tu as mis dans `ADMIN_USERNAME`) et ton `ADMIN_PASSWORD`. -- **Tout casser et repartir de zero** : `docker compose down -v` supprime les volumes (attention, perte de donnees). - -## Sauvegarde - -Les donnees sont dans les volumes Docker : `loremindmj_postgres-data`, `loremindmj_minio-data`, `loremindmj_brain-data`. - -Sauvegarde rapide de la base : ``` docker compose exec postgres pg_dump -U loremind loremind > backup.sql ``` + +### Sauvegarde complete des volumes + +Arrete d'abord la stack pour garantir la coherence : + +``` +docker compose stop +docker run --rm -v loremindmj_postgres-data:/data -v $(pwd):/backup alpine tar czf /backup/postgres-data.tar.gz -C /data . +docker run --rm -v loremindmj_minio-data:/data -v $(pwd):/backup alpine tar czf /backup/minio-data.tar.gz -C /data . +docker compose start +``` + +(Sous Windows PowerShell, remplace `$(pwd)` par `${PWD}`.) + +## 8. Problemes frequents + +- **Port 8081 deja pris** — change `WEB_PORT=8082` (ou autre libre) dans `.env`, + puis `docker compose up -d`. + +- **`docker compose up` echoue avec "set POSTGRES_PASSWORD in .env" / "set + ADMIN_PASSWORD in .env" / "set BRAIN_INTERNAL_SECRET in .env"** — tu as + oublie une des 3 variables obligatoires de l'etape 3. + +- **Popup "Ce site vous demande de vous connecter" sur l'ecran Parametres** — + c'est normal. Utilise `admin` (ou ce que tu as mis dans `ADMIN_USERNAME`) + et ton `ADMIN_PASSWORD`. + +- **"502 Bad Gateway" ou erreur IA dans l'UI quand tu cliques sur Assistant IA** + — le Brain n'arrive pas a joindre le provider LLM. Verifie : + - Ollama : `ollama serve` tourne-t-il ? Le modele est-il telecharge + (`ollama list`) ? Le nom dans `LLM_MODEL` correspond-il exactement a un + modele liste ? + - 1min.ai : la cle API est-elle valide ? Le modele existe-t-il ? + - Regarde les logs du Brain : `docker compose logs brain`. + +- **Un service ne demarre pas / reste `unhealthy`** — regarde ses logs : + ``` + docker compose logs + ``` + Services disponibles : `postgres`, `minio`, `core`, `brain`, `web`. + +- **Redemarrer un seul service** (ex : apres un changement de `.env`) : + ``` + docker compose up -d + ``` + Ou tout redemarrer : `docker compose restart`. + +- **Tout casser et repartir de zero (PERTE DE DONNEES)** : + ``` + docker compose down -v + ``` + Le `-v` supprime les volumes — tes lores, campagnes, images et settings sont + perdus definitivement. + +- **"No such image" ou "pull access denied" au premier lancement** — le + registry Gitea requiert peut-etre une authentification selon la visibilite + des images. Verifie avec l'editeur du projet. + +## 9. Ou sont les donnees ? + +- **Application** : http://localhost:8081 +- **Base Postgres** : uniquement accessible via le reseau Docker interne + (pas expose vers l'hote). +- **MinIO** : uniquement accessible via le reseau Docker interne (les images + transitent par le reverse-proxy Java sur `/api/images/{id}/content`). Le + binding MinIO sur `127.0.0.1:9000/9001` du `docker-compose.override.yml` + n'est utilise qu'en developpement. +- **Brain Python** : uniquement accessible via le reseau Docker interne. Toute + requete doit porter l'entete `X-Internal-Secret` ; elle est ajoutee + automatiquement par le Core Java et n'est pas exposee au navigateur. + +## 10. Desinstaller completement + +``` +docker compose down -v +docker image rm git.igmlcreation.fr/ietm64/core git.igmlcreation.fr/ietm64/brain git.igmlcreation.fr/ietm64/web +``` + +Puis supprime le dossier contenant `docker-compose.yml` et `.env`.