Mise à jour de l'install.md
This commit is contained in:
271
INSTALL.md
271
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).
|
||||
|
||||
- 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.
|
||||
|
||||
## 2. Recuperer les fichiers
|
||||
|
||||
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 :
|
||||
|
||||
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".)
|
||||
|
||||
Sans ces trois variables, `docker compose up` refusera de demarrer — c'est volontaire pour eviter un deploiement non-securise par defaut.
|
||||
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` :
|
||||
|
||||
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.
|
||||
|
||||
4. Ouvre http://localhost:8081 dans ton navigateur. Bon jeu !
|
||||
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 :
|
||||
|
||||
## Mise a jour
|
||||
```
|
||||
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 <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