Mise en place d'un installeur pour la version bureau sans passer par Docker.
Some checks failed
E2E Tests / e2e (push) Has been cancelled
Build & Push Images / build (brain) (push) Successful in 1m25s
Build & Push Images / build (core) (push) Successful in 2m55s
Build & Push Images / build (web) (push) Successful in 1m49s
Build & Push Images / build-switcher (push) Successful in 39s

Permet d'utiliser Loremind sans passer par Docker et sans lancer tous les conteneurs
Passage en v0.15.0
This commit is contained in:
2026-06-17 18:04:33 +02:00
parent f1c68634f7
commit 48baa08cfb
26 changed files with 1832 additions and 20 deletions

View File

@@ -0,0 +1,86 @@
# ============================================================================
# Profil "local" — mode local-first (application de bureau, sans Docker)
# ============================================================================
# Active via : --spring.profiles.active=local (ou SPRING_PROFILES_ACTIVE=local)
#
# Objectif : faire tourner le Core sur le poste de l'utilisateur SANS aucune
# infrastructure externe (ni Postgres, ni MinIO, ni Docker). Toutes les donnees
# vivent sous loremind.home (defaut : ~/.loremind).
#
# Surcharge UNIQUEMENT ce qui differe du profil par defaut (application.properties) :
# le reste (timeouts, multipart, licensing...) est herite tel quel.
# --- Base de donnees : H2 en mode fichier, compatibilite PostgreSQL ---------
# MODE=PostgreSQL : H2 interprete le SQL PostgreSQL -> les MEMES migrations
# Flyway (ecrites en SQL Postgres) tournent ici comme sur la prod Postgres.
# Aligne aussi la casse des identifiants (minuscules, comme PG).
# DB_CLOSE_ON_EXIT=FALSE : Spring/Hikari pilote la fermeture (pas le shutdown
# hook H2). AUTO_SERVER volontairement absent (interdit avec DB_CLOSE_ON_EXIT,
# et inutile pour un process unique).
# NON_KEYWORDS=VALUE : PostgreSQL accepte `value` comme nom de colonne non-quote
# (colonne de playthrough_flag), mais H2 le reserve par defaut -> on le relache
# pour que le baseline SQL Postgres (non-quote) passe aussi sur H2. Ajouter
# d'autres mots ici si une migration future utilise un identifiant reserve H2.
spring.datasource.url=jdbc:h2:file:${loremind.home}/db/loremind;MODE=PostgreSQL;DB_CLOSE_ON_EXIT=FALSE;NON_KEYWORDS=VALUE
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
# Schema gere par Flyway (cf. application.properties) ; Hibernate valide seulement.
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.show-sql=false
# --- Stockage des images : systeme de fichiers -----------------------------
storage.backend=filesystem
storage.filesystem.path=${loremind.home}/images
# --- Brain : service IA Python lance en sidecar sur le poste ---------------
brain.base-url=http://localhost:8000
# Secret partage Core <-> Brain. En local il n'a pas de role securitaire fort
# (tout est sur localhost, mono-utilisateur) mais le Brain est fail-closed :
# il DOIT etre defini des deux cotes. Le lanceur de sidecar (BrainSidecar)
# propage cette meme valeur au process Brain via la variable BRAIN_INTERNAL_SECRET.
brain.internal-secret=${BRAIN_INTERNAL_SECRET:loremind-local-secret}
# --- Brain en sidecar (lance par le Core) ----------------------------------
# Le Core demarre lui-meme le process Brain (pas de Docker en local).
brain.sidecar.enabled=${BRAIN_SIDECAR_ENABLED:true}
# Le Brain ecrit son dossier data/ (index vectoriel, settings) sous ce dossier.
brain.sidecar.working-dir=${loremind.home}/brain
# Commande de lancement. VIDE par defaut : le dev qui lance le Brain a la main
# n'est pas perturbe. Le packaging (jpackage) la renseigne vers l'exe PyInstaller.
# - Empaquete : chemin de l'exe, ex. C:/Program Files/LoreMind/brain/loremind-brain.exe
# - Dev : python,-m,uvicorn,app.main:app,--host,127.0.0.1,--port,8000
# (avec brain.sidecar.working-dir pointant sur le dossier brain/)
brain.sidecar.command=${BRAIN_SIDECAR_COMMAND:}
# --- Admin (localhost uniquement) ------------------------------------------
# Application mono-utilisateur sur le poste : l'utilisateur EST l'admin.
# Identifiants par defaut surchargables ; non exposes hors de la machine.
admin.username=${ADMIN_USERNAME:admin}
admin.password=${ADMIN_PASSWORD:admin}
# --- Front servi par le Core (meme origine) --------------------------------
# Le front Angular est servi en statique par le Core (cf. LocalWebConfig),
# donc tout est sur http://localhost:8080 : CORS sans objet, mais on autorise
# l'origine locale par securite si un dev lance Angular separement.
spring.web.cors.allowed-origins=http://localhost:8080,http://localhost:4200
# Mode demo desactive (instance personnelle complete).
app.demo-mode=false
# --- Licensing / Patreon : desactive en mode bureau ------------------------
# Le gating par IMAGE Docker (canal beta tire d'un registry prive) n'a aucun
# sens hors Docker. On coupe toute la machinerie : daemon de refresh no-op,
# /api/license/* renvoie enabled=false, et l'UI masque la section Patreon.
# La distribution beta desktop se fait par installeur beta via Patreon, pas
# par une connexion in-app.
licensing.enabled=false
# --- Verification des mises a jour (bureau) --------------------------------
# Interroge l'API GitHub Releases (derniere release STABLE) au demarrage ; si
# une version plus recente existe, l'icone systray le signale (bulle + item
# « Telecharger »). Pas de mise a jour auto : l'utilisateur telecharge et lance
# le nouvel installeur. Mettre a false pour desactiver toute requete sortante.
desktop.update.enabled=${DESKTOP_UPDATE_CHECK:true}
desktop.update.releases-api-url=https://api.github.com/repos/IGMLcreation/LoreMind/releases/latest