From dec2e24e2f431be082274e1203e0cee6a16d5ae0 Mon Sep 17 00:00:00 2001 From: Jaakko Vanhala Date: Sat, 11 Apr 2026 08:46:22 +0300 Subject: [PATCH] =?UTF-8?q?"Liit=C3=A4=20koneesi"=20-nappi=20+=20join.sh?= =?UTF-8?q?=20+=20Docker=20native-node?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UI: status-palkissa vihreä "+ Liitä koneesi" -nappi joka avaa dialogin: curl -sSL https://kipina.studio/join.sh | bash join.sh: - Tarkistaa Ollaman → tarjoaa asennusta jos puuttuu - Käynnistää Ollaman jos ei pyöri - Lataa kielimallin (qwen2.5-coder:3b) - Käynnistää native-noden → yhdistää wss://kipina.studio/ws Docker: Dockerfile.native + docker-compose.prod.yml päivitetty ollama + native-node -konteilla palvelinpuolelle. Co-Authored-By: Claude Opus 4.6 (1M context) --- network-poc/Dockerfile.native | 21 ++++++ network-poc/docker-compose.prod.yml | 32 +++++++- network-poc/frontend/public/join.sh | 73 +++++++++++++++++++ .../frontend/src/components/StatusBar.astro | 20 ++++- network-poc/frontend/src/pages/index.astro | 5 ++ 5 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 network-poc/Dockerfile.native create mode 100644 network-poc/frontend/public/join.sh diff --git a/network-poc/Dockerfile.native b/network-poc/Dockerfile.native new file mode 100644 index 0000000..e3bd8b2 --- /dev/null +++ b/network-poc/Dockerfile.native @@ -0,0 +1,21 @@ +# Native-node: Rust + Ollama-client (ei GPU-tunnistusta) +FROM rust:slim AS builder +RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* +WORKDIR /app +COPY Cargo.toml Cargo.lock* ./ +COPY native-node/Cargo.toml native-node/Cargo.toml +COPY native-node/src native-node/src +# Dummy-cratet workspace-yhteensopivuuteen +COPY hub/Cargo.toml hub/Cargo.toml +COPY node/Cargo.toml node/Cargo.toml +COPY cli/Cargo.toml cli/Cargo.toml +RUN mkdir -p hub/src node/src cli/src && touch hub/src/main.rs node/src/lib.rs cli/src/main.rs +RUN --mount=type=cache,target=/usr/local/cargo/registry \ + --mount=type=cache,target=/app/target \ + cargo build --release -p native-node --no-default-features \ + && cp /app/target/release/native-node /usr/local/bin/native-node + +FROM debian:bookworm-slim +RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* +COPY --from=builder /usr/local/bin/native-node /usr/local/bin/native-node +CMD ["native-node"] diff --git a/network-poc/docker-compose.prod.yml b/network-poc/docker-compose.prod.yml index e0623d8..4b9aa5d 100644 --- a/network-poc/docker-compose.prod.yml +++ b/network-poc/docker-compose.prod.yml @@ -24,10 +24,40 @@ services: - NODE_API_KEY=${NODE_API_KEY:-} volumes: - hub_data:/data - # Frontend-tiedostot päivitetään ilman kontin rebuildia - ./frontend/dist:/app/frontend/dist:ro + ollama: + image: ollama/ollama:latest + container_name: kipina-ollama + restart: unless-stopped + volumes: + - ollama_data:/root/.ollama + # GPU-tuki (kommentoi pois jos ei GPU:ta): + # deploy: + # resources: + # reservations: + # devices: + # - driver: nvidia + # count: all + # capabilities: [gpu] + + native-node: + build: + context: . + dockerfile: Dockerfile.native + container_name: kipina-native-node + restart: unless-stopped + environment: + - HUB_URL=ws://hub:3000/ws + - OLLAMA_URL=http://ollama:11434 + - OLLAMA_MODEL=qwen2.5-coder:3b + - NODE_API_KEY=${NODE_API_KEY:-} + depends_on: + - hub + - ollama + volumes: caddy_data: caddy_config: hub_data: + ollama_data: diff --git a/network-poc/frontend/public/join.sh b/network-poc/frontend/public/join.sh new file mode 100644 index 0000000..347be18 --- /dev/null +++ b/network-poc/frontend/public/join.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# Kipinä — liitä koneesi laskentaverkkoon +set -e + +HUB_URL="${KIPINA_HUB:-wss://kipina.studio/ws}" +MODEL="${KIPINA_MODEL:-qwen2.5-coder:3b}" + +echo "" +echo " ╔══════════════════════════════════════╗" +echo " ║ Kipinä Agentic Network — Node Join ║" +echo " ╚══════════════════════════════════════╝" +echo "" + +# 1. Ollama +if command -v ollama &>/dev/null; then + echo " ✓ Ollama löytyi: $(ollama --version 2>/dev/null || echo 'asennettu')" +else + echo " Ollama ei ole asennettu." + echo "" + read -p " Asennetaanko Ollama? (k/e) " -n 1 -r; echo + if [[ $REPLY =~ ^[Kk]$ ]]; then + echo " Asennetaan Ollama..." + curl -fsSL https://ollama.ai/install.sh | sh + else + echo " Ollama vaaditaan laskentaan. Asenna: https://ollama.ai" + exit 1 + fi +fi + +# 2. Varmistetaan että Ollama on käynnissä +if ! curl -s http://localhost:11434/api/tags &>/dev/null; then + echo " Käynnistetään Ollama..." + ollama serve &>/dev/null & + sleep 3 + if ! curl -s http://localhost:11434/api/tags &>/dev/null; then + echo " ✗ Ollama ei käynnistynyt. Aja: ollama serve" + exit 1 + fi +fi +echo " ✓ Ollama käynnissä" + +# 3. Malli +if ollama list 2>/dev/null | grep -q "$MODEL"; then + echo " ✓ Malli $MODEL ladattu" +else + echo " Ladataan malli $MODEL..." + ollama pull "$MODEL" +fi + +# 4. Native-node +echo "" +echo " Yhdistetään hubiin: $HUB_URL" +echo " Malli: $MODEL" +echo " Ctrl+C pysäyttää" +echo "" + +# Tarkistetaan onko native-node käännetty +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +NATIVE_BIN="$SCRIPT_DIR/target/release/native-node" + +if [ -f "$NATIVE_BIN" ]; then + HUB_URL="$HUB_URL" OLLAMA_MODEL="$MODEL" "$NATIVE_BIN" +elif command -v cargo &>/dev/null && [ -f "$SCRIPT_DIR/native-node/Cargo.toml" ]; then + echo " Käännetään native-node..." + cd "$SCRIPT_DIR" + cargo build --release -p native-node --no-default-features 2>&1 | tail -1 + HUB_URL="$HUB_URL" OLLAMA_MODEL="$MODEL" "$NATIVE_BIN" +else + echo " ✗ native-node binääriä ei löydy eikä Rust ole asennettu." + echo " Asenna Rust: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh" + echo " Tai lataa valmis binääri: https://kipina.studio/download" + exit 1 +fi diff --git a/network-poc/frontend/src/components/StatusBar.astro b/network-poc/frontend/src/components/StatusBar.astro index 90ef3dc..c998220 100644 --- a/network-poc/frontend/src/components/StatusBar.astro +++ b/network-poc/frontend/src/components/StatusBar.astro @@ -10,6 +10,24 @@ Laskenta: - + + + + + + + + diff --git a/network-poc/frontend/src/pages/index.astro b/network-poc/frontend/src/pages/index.astro index ae58242..d59b406 100644 --- a/network-poc/frontend/src/pages/index.astro +++ b/network-poc/frontend/src/pages/index.astro @@ -53,6 +53,11 @@ import Settings from "../components/Settings.astro";