Эх сурвалжийг харах

varundus 2026-08-29 12:31

ardo 2 цаг өмнө
parent
commit
2e167b4da9

+ 6 - 7
main/qdrant-config.yaml

@@ -1,11 +1,10 @@
 storage:
-  # Optimeeri suurtele andmekogumitele
-  hnsw_ef_construct: 100  # Default: 100 (suurendades = täpsem, aeglasem indekseerimine)
-  hnsw_m: 16              # Default: 16 (suurendades = täpsem otsing, rohkem mälu)
+  hnsw_ef_construct: 100
+  hnsw_m: 16
+  on_disk: false
 
-  # Mälu optimeerimine
-  on_disk: false          # Hoia vektorid RAM-is (kiirem, aga vajab rohkem mälu)
-  # on_disk: true         # Kui vektoreid on väga palju (>1M)
+  wal:
+    wal_capacity_mb: 256
 
 service:
-  max_request_size_mb: 256  # Suurenda kui suur failide hulk
+  max_request_size_mb: 256

+ 43 - 0
third/server/languagetool/README.md

@@ -0,0 +1,43 @@
+# LanguageTool – keelekontroll (Docker)
+
+Inglise keele grammatika- ja kirjavigade kontroll API-na. Self-hosted, tasuta, privaatne.
+
+## Ligipääs
+
+| Teenus | URL |
+|--------|-----|
+| LanguageTool API | http://100.87.1.24:8090 |
+| Paigaldatud | 2026-08-08 |
+
+## API kasutus
+
+curl -s -X POST http://localhost:8090/v2/check -d 'language=en-US' -d 'text=We recieve the resuts'
+
+Vastus: matches[] – iga kirje sisaldab rule.id, message, replacements.
+
+## Brauserilaiendus (Firefox/Chrome LT addon)
+
+Seadetes: Settings → Other server → http://localhost:8090/v2
+
+## ⚠️ HOIATUS
+
+ÄRA sea keskkonnamuutujat langtool_languageModel=/ngrams ilma päris n-gram andmeteta!
+Tühi kataloog paneb LanguageTooli arvama, et keelemudel on konfigureeritud, ning
+speller (kirjavigade tuvastus MORFOLOGIK) EI LISATA reeglitesse – jääb ainult grammatika.
+Seisuga 2026-08-08 on speller testimata töökorras ilma languageModel-ta.
+
+## Toetatud keeled
+
+Inglise (en-US, en-GB), saksa, prantsuse jt – LanguageTooli standardkeeled.
+**Eesti keelt (et-EE) LanguageTool ei toeta.**
+
+## Docker käsud
+
+cd /opt/docker-compose/third/server/languagetool
+docker-compose up -d        # käivita
+docker-compose down         # peata
+docker-compose logs -f languagetool   # logid
+
+## Ressursid
+
+~1 GB RAM (Java), ketas ~1 GB. Port 8090.

+ 9 - 0
third/server/languagetool/docker-compose.yml

@@ -0,0 +1,9 @@
+services:
+  languagetool:
+    image: erikvl87/languagetool:latest
+    container_name: languagetool
+    ports:
+      - "8090:8010"
+    environment:
+      - TZ=Europe/Tallinn
+    restart: unless-stopped

+ 3 - 1
third/server/odysseus/docker-compose.yml

@@ -112,8 +112,10 @@ services:
       - "127.0.0.1:8091:80"
     volumes:
       - ntfy-cache:/var/cache/ntfy
+      - ./ntfy/server.yml:/etc/ntfy/server.yml:ro
+      - ./ntfy/data:/var/lib/ntfy
     environment:
-      - NTFY_BASE_URL=http://localhost:8091
+      - NTFY_BASE_URL=https://ohmu.tail20e23.ts.net:8091
     networks:
       - main_ai_network
     restart: unless-stopped

+ 129 - 0
third/server/odysseus/docker-compose.yml.bak-20260811-145547

@@ -0,0 +1,129 @@
+services:
+  odysseus:
+    build: ./repo
+    ports:
+      - "${APP_BIND:-0.0.0.0}:${APP_PORT:-3004}:7000"
+    volumes:
+      - /var/run/docker.sock:/var/run/docker.sock:ro
+      - ${APP_DATA_DIR:-/data/docker/odysseus/data}:/app/data:z
+      - ${APP_LOGS_DIR:-/data/docker/odysseus/logs}:/app/logs:z
+      - ${APP_DATA_DIR:-/data/docker/odysseus/data}/ssh:/app/.ssh:z
+      - ${APP_DATA_DIR:-/data/docker/odysseus/data}/huggingface:/app/.cache/huggingface:z
+      - ${APP_DATA_DIR:-/data/docker/odysseus/data}/local:/app/.local:z
+      - /etc/localtime:/etc/localtime:ro
+    extra_hosts:
+      - "host.docker.internal:host-gateway"
+    environment:
+      - TZ=Europe/Tallinn
+      - LLM_HOST=${LLM_HOST:-localhost}
+      - LLM_HOSTS=${LLM_HOSTS:-http://host.docker.internal:11434,http://host.docker.internal:8070}
+      - OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}
+      - EMBEDDING_URL=${EMBEDDING_URL:-http://host.docker.internal:11434/v1/embeddings}
+      - EMBEDDING_MODEL=${EMBEDDING_MODEL:-nomic-embed-text}
+      - SEARXNG_INSTANCE=http://searxng:8080
+      - CHROMADB_HOST=chromadb
+      - CHROMADB_PORT=8000
+      - DATABASE_URL=${DATABASE_URL:-sqlite:///./data/app.db}
+      - AUTH_ENABLED=${AUTH_ENABLED:-true}
+      - LOCALHOST_BYPASS=${LOCALHOST_BYPASS:-false}
+      - ODYSSEUS_ADMIN_USER=${ODYSSEUS_ADMIN_USER:-admin}
+      - ODYSSEUS_ADMIN_PASSWORD=${ODYSSEUS_ADMIN_PASSWORD:-}
+      - ALLOWED_ORIGINS=${ALLOWED_ORIGINS:-http://localhost,http://127.0.0.1}
+      - SECURE_COOKIES=${SECURE_COOKIES:-false}
+      - FASTEMBED_MODEL=${FASTEMBED_MODEL:-sentence-transformers/all-MiniLM-L6-v2}
+      - CLEANUP_INTERVAL_HOURS=${CLEANUP_INTERVAL_HOURS:-24}
+      - BACKGROUND_TASK_FOREGROUND_GATE=false
+      - ODYSSEUS_ENABLE_HOST_DOCKER=true
+      - ODYSSEUS_CHAT_UPLOAD_MAX_BYTES=${ODYSSEUS_CHAT_UPLOAD_MAX_BYTES:-10485760}
+      - ODYSSEUS_GALLERY_UPLOAD_MAX_BYTES=${ODYSSEUS_GALLERY_UPLOAD_MAX_BYTES:-104857600}
+      - PUID=${PUID:-1000}
+      - PGID=${PGID:-1000}
+    devices:
+      - /dev/kfd
+      - /dev/dri
+    group_add:
+      - video
+      - "122"  # docker group
+      - ${RENDER_GID:-render}
+    depends_on:
+      searxng:
+        condition: service_healthy
+      chromadb:
+        condition: service_started
+    networks:
+      - main_ai_network
+    restart: unless-stopped
+
+  chromadb:
+    image: docker.io/chromadb/chroma:latest
+    ports:
+      - "127.0.0.1:8100:8000"
+    volumes:
+      - chromadb-data:/chroma/chroma
+    environment:
+      - ANONYMIZED_TELEMETRY=FALSE
+    networks:
+      - main_ai_network
+    restart: unless-stopped
+
+  searxng:
+    image: docker.io/searxng/searxng:2026.5.31-7159b8aed
+    entrypoint:
+      - /bin/sh
+      - -c
+      - |
+        set -eu
+        if [ ! -s /etc/searxng/settings.yml ] || grep -q 'odysseus-local-searxng-json-2026-05-30\|__SEARXNG_SECRET__' /etc/searxng/settings.yml; then
+          secret="$${SEARXNG_SECRET:-}"
+          if [ -z "$$secret" ]; then
+            secret="$$(python -c 'import secrets; print(secrets.token_urlsafe(48))')"
+          fi
+          sed "s|__SEARXNG_SECRET__|$$secret|g" /tmp/searxng-settings.yml.template > /etc/searxng/settings.yml
+        fi
+        exec /usr/local/searxng/entrypoint.sh
+    ports:
+      - "127.0.0.1:8088:8080"
+    volumes:
+      - searxng-data:/etc/searxng
+      - ./repo/config/searxng/settings.yml:/tmp/searxng-settings.yml.template:ro,z
+    environment:
+      - SEARXNG_BASE_URL=http://localhost:8080/
+    cap_drop:
+      - ALL
+    cap_add:
+      - CHOWN
+      - SETGID
+      - SETUID
+      - DAC_OVERRIDE
+    healthcheck:
+      test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://localhost:8080/', timeout=5).read(1)\""]
+      interval: 5s
+      timeout: 6s
+      retries: 20
+      start_period: 10s
+    networks:
+      - main_ai_network
+    restart: unless-stopped
+
+  ntfy:
+    image: docker.io/binwiederhier/ntfy
+    command: serve
+    ports:
+      - "127.0.0.1:8091:80"
+    volumes:
+      - ntfy-cache:/var/cache/ntfy
+    environment:
+      - NTFY_BASE_URL=http://localhost:8091
+    networks:
+      - main_ai_network
+    restart: unless-stopped
+
+volumes:
+  searxng-data:
+  chromadb-data:
+  ntfy-cache:
+
+networks:
+  main_ai_network:
+    external: true
+    name: main_ai_network

+ 5 - 0
third/server/odysseus/ntfy/server.yml

@@ -0,0 +1,5 @@
+base-url: "https://ohmu.tail20e23.ts.net"
+auth-file: "/var/lib/ntfy/user.db"
+auth-default-access: "deny-all"
+enable-login: true
+enable-signup: false