#!/usr/bin/env bash set -Eeuo pipefail [[ $EUID -eq 0 ]] || { echo "Bitte als root ausführen." >&2; exit 1; } MCP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" COMPOSE=(docker compose -f "$MCP_DIR/compose.yaml") export SEARXNG_SETTINGS_FILE="${SEARXNG_SETTINGS_FILE:-$MCP_DIR/../web-search/searxng-settings.yml}" [[ -s $SEARXNG_SETTINGS_FILE ]] || { echo "SearXNG-Konfiguration fehlt: $SEARXNG_SETTINGS_FILE" >&2 exit 1 } profiles=() if [[ -s /etc/mike-ai/homeassistant-admin-mcp.env ]]; then profiles+=(--profile homeassistant) else echo "Home Assistant bleibt aus: Secret-Datei fehlt." fi if [[ -s /etc/mike-ai/arr-mcp.env ]]; then profiles+=(--profile arr) else echo "ARR bleibt aus: Secret-Datei fehlt." fi if [[ -s /etc/mike-ai/runraid/.env && -x /usr/local/bin/runraid ]]; then profiles+=(--profile unraid) else echo "Unraid bleibt aus: runraid 0.4.2 oder Secret-Datei fehlt." fi # TinySearch keeps the embedding bundle outside the container. Download it # once on a fresh host; subsequent rebuilds reuse the named volume. # # Do not call `tinysearch setup` here. The pinned container image already # contains a complete Playwright/Chromium installation, while that command # unconditionally tries to install Chromium again. On IPv4-only hosts this # redundant download can hang indefinitely. Prepare only the persistent ONNX # bundle that is actually absent on a fresh installation. docker volume create mike-ai-tools_tinysearch-models >/dev/null tiny_image="marcellm01/tinysearch@sha256:5a03d5a1f1b0fabe48f2a26e05db4a84bcb611106a57ec51e42db4549976aa9c" if ! docker run --rm --entrypoint test \ -v mike-ai-tools_tinysearch-models:/data/models "$tiny_image" \ -f /data/models/all-minilm-l6-v2-onnx/model.onnx; then echo "TinySearch-Modell wird einmalig geladen." docker run --rm --entrypoint python \ -v mike-ai-tools_tinysearch-models:/data/models "$tiny_image" \ -c 'from tinysearch.services.onnx_bundle_service import ensure_onnx_bundle_sync; ensure_onnx_bundle_sync("fast")' fi "${COMPOSE[@]}" "${profiles[@]}" up -d --build for webui in mike-ai-open-webui Open-WebUI; do if docker container inspect "$webui" >/dev/null 2>&1; then docker network connect mike-ai-tools "$webui" 2>/dev/null || true fi done "${COMPOSE[@]}" "${profiles[@]}" ps