kipina-node: automaattinen Ollama-instanssien haku + konttituki

Skripti skannaa localhost, 127.0.0.1, ollama, host.docker.internal
ja tarjoaa valikon jos useampi löytyy. Ei vaadi enää paikallista
ollama-binääriä — toimii myös Docker-konttia tai remote-instanssia
vasten. OLLAMA_URL välitetään Rust-binäärille.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jaakko Vanhala
2026-04-11 10:19:00 +03:00
parent 4e83569194
commit ee048b0b68

View File

@@ -5,6 +5,7 @@ set -e
BASE_URL="https://kipina.studio/download" BASE_URL="https://kipina.studio/download"
HUB_URL="${KIPINA_HUB:-wss://kipina.studio/ws}" HUB_URL="${KIPINA_HUB:-wss://kipina.studio/ws}"
MODEL="${KIPINA_MODEL:-qwen2.5-coder:3b}" MODEL="${KIPINA_MODEL:-qwen2.5-coder:3b}"
OLLAMA_URL="${OLLAMA_URL:-http://localhost:11434}"
# Tunnista OS ja arkkitehtuuri # Tunnista OS ja arkkitehtuuri
OS=$(uname -s | tr '[:upper:]' '[:lower:]') OS=$(uname -s | tr '[:upper:]' '[:lower:]')
@@ -24,30 +25,83 @@ echo " ║ Kipinä Agentic Node ║"
echo " ╚══════════════════════════════════════╝" echo " ╚══════════════════════════════════════╝"
echo "" echo ""
echo " OS: $OS ($ARCH)" echo " OS: $OS ($ARCH)"
echo " Hub: $HUB_URL"
echo " Malli: $MODEL"
echo "" echo ""
# Tarkista Ollama # Etsi Ollama-instanssit
if ! command -v ollama &>/dev/null; then CANDIDATES=(
echo " ✗ Ollama ei ole asennettu." "http://localhost:11434"
echo " Asenna: curl -fsSL https://ollama.ai/install.sh | sh" "http://127.0.0.1:11434"
echo " macOS: brew install ollama" "http://ollama:11434"
exit 1 "http://host.docker.internal:11434"
)
# Lisää OLLAMA_URL listaan jos asetettu ja ei jo mukana
if [ -n "$OLLAMA_URL" ]; then
ALREADY=false
for c in "${CANDIDATES[@]}"; do
[ "$c" = "$OLLAMA_URL" ] && ALREADY=true
done
$ALREADY || CANDIDATES=("$OLLAMA_URL" "${CANDIDATES[@]}")
fi fi
# Varmista Ollama käynnissä echo " Etsitään Ollama-instansseja..."
if ! curl -s http://localhost:11434/api/tags &>/dev/null; then FOUND=()
echo " Käynnistetään Ollama..." for url in "${CANDIDATES[@]}"; do
ollama serve &>/dev/null & if curl -s --connect-timeout 1 "$url/api/tags" &>/dev/null; then
sleep 3 FOUND+=("$url")
fi fi
echo " ✓ Ollama käynnissä" done
# Lataa malli if [ ${#FOUND[@]} -eq 0 ]; then
if ! ollama list 2>/dev/null | grep -q "$MODEL"; then # Ei löytynyt — yritä käynnistää lokaali
if command -v ollama &>/dev/null; then
echo " Käynnistetään Ollama..."
ollama serve &>/dev/null &
sleep 3
if curl -s --connect-timeout 1 "http://localhost:11434/api/tags" &>/dev/null; then
OLLAMA_URL="http://localhost:11434"
echo " ✓ Ollama käynnistetty ($OLLAMA_URL)"
else
echo " ✗ Ollaman käynnistys epäonnistui."
exit 1
fi
else
echo ""
echo " ✗ Ollamaa ei löytynyt."
echo " Kontti/remote: OLLAMA_URL=http://HOST:11434 ./kipina-node"
echo " Asenna: curl -fsSL https://ollama.ai/install.sh | sh"
exit 1
fi
elif [ ${#FOUND[@]} -eq 1 ]; then
OLLAMA_URL="${FOUND[0]}"
echo " ✓ Ollama löytyi: $OLLAMA_URL"
else
echo ""
echo " Löytyi ${#FOUND[@]} Ollama-instanssia:"
echo ""
for i in "${!FOUND[@]}"; do
echo " $((i+1))) ${FOUND[$i]}"
done
echo ""
read -p " Valitse [1-${#FOUND[@]}]: " -r CHOICE
if [[ "$CHOICE" =~ ^[0-9]+$ ]] && [ "$CHOICE" -ge 1 ] && [ "$CHOICE" -le ${#FOUND[@]} ]; then
OLLAMA_URL="${FOUND[$((CHOICE-1))]}"
else
OLLAMA_URL="${FOUND[0]}"
echo " Käytetään oletusta: $OLLAMA_URL"
fi
echo " ✓ Valittu: $OLLAMA_URL"
fi
echo ""
echo " Hub: $HUB_URL"
echo " Ollama: $OLLAMA_URL"
echo " Malli: $MODEL"
# Lataa malli (toimii sekä lokaalilla binäärillä että API:n kautta)
if ! curl -s "$OLLAMA_URL/api/tags" | grep -q "$MODEL"; then
echo " Ladataan $MODEL..." echo " Ladataan $MODEL..."
ollama pull "$MODEL" curl -s "$OLLAMA_URL/api/pull" -d "{\"name\":\"$MODEL\"}" > /dev/null
fi fi
echo " ✓ Malli $MODEL valmis" echo " ✓ Malli $MODEL valmis"
@@ -64,4 +118,4 @@ echo " ✓ Yhdistetään laskentaverkkoon..."
echo " Ctrl+C pysäyttää" echo " Ctrl+C pysäyttää"
echo "" echo ""
HUB_URL="$HUB_URL" OLLAMA_MODEL="$MODEL" exec "$BIN_PATH" HUB_URL="$HUB_URL" OLLAMA_URL="$OLLAMA_URL" OLLAMA_MODEL="$MODEL" exec "$BIN_PATH"