From 78c258ab456dd840059aacd3173b765747c3b41e Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Sun, 30 Aug 2026 08:02:13 +0200 Subject: [PATCH] =?UTF-8?q?Entrypoint=20:=20le=20moteur=20mis=20=C3=A0=20j?= =?UTF-8?q?our=20ne=20survivait=20pas=20=C3=A0=20un=20red=C3=A9marrage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker-entrypoint.sh reposait BIN=/app/llama-server à chaque démarrage du conteneur, sans regarder ce qu'il y avait avant. L'intention était saine — une mise à jour d'image ne doit pas laisser un BIN obsolète — mais elle écrasait aussi le moteur téléchargé depuis l'interface (« mettre à jour le moteur », /data/engine//), pourtant choisi par l'utilisateur et toujours présent sur le volume. Symptôme vécu : Qwen3.8-Flash-Next chargeait avec server-cuda-b10680 ; au redémarrage suivant, retour silencieux au moteur de l'image et « unknown model architecture: 'qwen4exp' », sans qu'aucun réglage ait bougé. Le journal alternait /app et /data/engine sans raison visible. On ne garde BIN que s'il désigne un moteur installé sous $LOKI_HOME/engine/ et encore exécutable ; sinon, comportement d'avant. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01961iDyM6pwn2dE2SW23gYX --- docker-entrypoint.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 2200bac..b174a11 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -18,7 +18,25 @@ fi # Le chemin du moteur est imposé par l'image (llama-server précompilé de # l'image officielle llama.cpp, dans /app) : on le (re)pose à chaque boot, # une mise à jour de l'image ne doit pas laisser un BIN obsolète en base. -loki config set "BIN=${LOKI_ENGINE_BIN:-/app/llama-server}" +# +# SAUF si l'utilisateur a mis le moteur à jour depuis l'interface : celui-là +# vit sous $LOKI_HOME/engine// (volume de données, il survit au +# conteneur) et c'est lui qu'il a choisi. Le reposer sur /app à chaque +# redémarrage ramenait silencieusement l'ancien moteur — un modèle qui +# chargeait la veille ne chargeait plus le lendemain, « unknown model +# architecture », sans que rien n'ait été touché. On ne le garde que s'il +# existe encore : un dossier supprimé à la main ne doit pas laisser BIN dans +# le vide. +cur=$(loki config get BIN) +case "$cur" in + "$LOKI_HOME"/engine/*/llama-server) [ -x "$cur" ] || cur="" ;; + *) cur="" ;; +esac +if [ -n "$cur" ]; then + echo "[entrypoint] moteur mis à jour conservé : $cur" +else + loki config set "BIN=${LOKI_ENGINE_BIN:-/app/llama-server}" +fi # Les autres clés ne sont semées QUE si absentes : ce que l'utilisateur règle # ensuite dans l'UI (modèle, contexte…) est conservé d'un redémarrage à l'autre.