Mise à jour de l'install.md
This commit is contained in:
283
INSTALL.md
283
INSTALL.md
@@ -1,75 +1,256 @@
|
|||||||
# Installation de LoreMindMJ
|
# 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/))
|
## 1. Prerequis
|
||||||
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.
|
|
||||||
|
|
||||||
## Installation (5 minutes)
|
- **Docker Desktop** ([Windows](https://www.docker.com/products/docker-desktop/) /
|
||||||
|
[Mac](https://www.docker.com/products/docker-desktop/)) ou
|
||||||
1. Telecharge `docker-compose.yml` et `.env.example` depuis la [derniere release](https://git.igmlcreation.fr/ietm64/LoreMindMJ/releases) dans un dossier a toi.
|
**Docker Engine + Compose v2** (Linux). Verifie avec :
|
||||||
|
|
||||||
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
|
docker --version
|
||||||
|
docker compose version
|
||||||
```
|
```
|
||||||
(Sous Windows sans openssl : utilise un generateur en ligne type "random hex string 64 chars".)
|
Compose v2 est requis (la commande est `docker compose`, pas `docker-compose`).
|
||||||
|
|
||||||
Sans ces trois variables, `docker compose up` refusera de demarrer — c'est volontaire pour eviter un deploiement non-securise par defaut.
|
- **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).
|
||||||
|
|
||||||
3. Dans un terminal, place-toi dans le dossier et lance :
|
- 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.
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
Le premier demarrage telecharge les images (~500 Mo) et initialise la base. Compte 1-2 minutes.
|
|
||||||
|
|
||||||
4. Ouvre http://localhost:8081 dans ton navigateur. Bon jeu !
|
## 2. Recuperer les fichiers
|
||||||
|
|
||||||
## Mise a jour
|
Telecharge les deux fichiers suivants depuis la
|
||||||
|
[derniere release](https://git.igmlcreation.fr/ietm64/LoreMindMJ/releases) dans
|
||||||
|
un dossier dedie (par exemple `~/loremind/`) :
|
||||||
|
|
||||||
|
- `docker-compose.yml`
|
||||||
|
- `.env.example`
|
||||||
|
|
||||||
|
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 pull
|
||||||
docker compose up -d
|
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` :
|
Les donnees sont dans trois volumes Docker :
|
||||||
```
|
|
||||||
LLM_PROVIDER=ollama
|
|
||||||
LLM_MODEL=gemma4:26b
|
|
||||||
```
|
|
||||||
Telecharge le modele au prealable : `ollama pull gemma4:26b`.
|
|
||||||
|
|
||||||
**1min.ai (cloud, paye)** — Edite `.env` :
|
- `loremindmj_postgres-data` — tout le contenu applicatif (lores, campagnes,
|
||||||
```
|
pages, templates, branches, etc.)
|
||||||
LLM_PROVIDER=onemin
|
- `loremindmj_minio-data` — les images uploadees
|
||||||
ONEMIN_API_KEY=sk-...
|
- `loremindmj_brain-data` — les settings IA (provider courant, cle API 1min.ai)
|
||||||
ONEMIN_MODEL=open-mistral-nemo
|
|
||||||
```
|
|
||||||
|
|
||||||
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
|
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 <service>
|
||||||
|
```
|
||||||
|
Services disponibles : `postgres`, `minio`, `core`, `brain`, `web`.
|
||||||
|
|
||||||
|
- **Redemarrer un seul service** (ex : apres un changement de `.env`) :
|
||||||
|
```
|
||||||
|
docker compose up -d <service>
|
||||||
|
```
|
||||||
|
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`.
|
||||||
|
|||||||
Reference in New Issue
Block a user