Инструменты пользователя

Инструменты сайта


truenas:application:strata_qwen_server

Strata + Qwen3.8-Flash-Next на сервере TrueNAS (Docker, Custom App) и подключение клиентов по IP

Введение

Инструкция описывает, как развернуть движок Strata с моделью Qwen3.8-Flash-Next на домашнем сервере TrueNAS SCALE в Docker — как приложение (Custom App) через веб-интерфейс TrueNAS — и подключаться к нему по сети с других компьютеров: из Goose Desktop, OpenCode, Open WebUI, Claude Code или любого OpenAI-совместимого клиента.

Локальная установка на Windows-ПК (проверенная пошагово, с замерами скорости и таблицей моделей) — на странице Qwen3.8-Flash-Next на Strata + Goose Desktop (Windows).

Без обновления TrueNAS: на текущем драйвере 550 работает llama.cpp, который держит модель на NVMe и подгружает через RAM — см. llama.cpp: большие MoE-модели с NVMe + RAM на TrueNAS.

Статус инструкции. Сервер обследован по SSH, совместимость образа Strata с текущим драйвером проверена на сервере (см. «Шаг 1»). Сама установка Custom App после обновления TrueNAS ещё не выполнялась — такие места помечены (проверить).

Сервер

Данные сняты по SSH (truenas_admin@192.168.1.135):

Параметр Значение
Система TrueNAS SCALE 25.04.2.6 (Fangtooth), ядро 6.12.15
CPU Intel Core i5-14500 (14 ядер / 20 потоков, AVX2, без AVX-512)
RAM 62 GB
GPU NVIDIA RTX 2000 Ada Generation, 16 GB, PCIe 4.0 x8
Драйвер NVIDIA 550.142 — для Strata слишком старый
Docker 27.5, NVIDIA Container Runtime установлен (runtime по умолчанию — nvidia)
Быстрый пул appData — 2 × Samsung 990 PRO 4 TB (NVMe), свободно ~3.3 TB, монтируется в /mnt/appData
Большой пул storage — 5 × HDD 16 TB, /mnt/storage
Занятые порты среди прочих 8080 (ai-anki), 8081 (youtrack) — для Strata берём 30080

Кто уже использует видеокарту и память (на момент обследования):

  • VRAM занято 11.8 из 16 GB: Ollama, LibreTranslate, Whisper, XTTS / VoxCPM TTS.
  • RAM: из 62 GB около 24 GB занимают приложения, ещё ~22 GB — кэш ZFS (ARC, отдаётся по требованию).

Strata нужна почти вся видеопамять и десятки GB RAM, поэтому на время работы Strata GPU-приложения нужно останавливать (см. «Шаг 3»).

Шаг 1: Обновить TrueNAS до 25.10.7 или новее (драйвер NVIDIA 580)

Почему

Образы Strata требуют драйвер NVIDIA: cuda13 — 580+, cuda12 — 575+. Проверка на этом сервере образом ghcr.io/niko1221/strata:0.2.13-cuda12:

$ docker run --rm --gpus all ghcr.io/niko1221/strata:0.2.13-cuda12 strata components engine
this PC           linux-x86_64, cuda (nvidia-smi)
  installed       0.1.59 linux-x86_64-cuda  /opt/strata/components/engine/0.1.59-linux-x86_64-cuda-cuda12
Your NVIDIA graphics driver (550.142) is too old for Strata. Install driver 575 or newer ...

На TrueNAS драйвер не обновляется отдельно — он приходит с версией системы:

Версия TrueNAS Драйвер NVIDIA Strata
25.04 Fangtooth (сейчас) 550.142 не работает
25.10.0 – 25.10.6 Goldeye 570.172.08 (open kernel modules) не работает (нужно 575+)
25.10.7 Goldeye и новее 580.173.02 (LTS-ветка) работает образ cuda13

Источники: release notes TrueNAS 25.10 (переход на open kernel modules с 570.172.08) и заметки к 25.10.7 (обновление на 580.173.02). RTX 2000 Ada (архитектура Ada) открытыми модулями поддерживается.

Как обновить

  1. System → General Settings → Manage Configuration → Download File — сохранить конфигурацию (с ключом шифрования).
  2. System → Update: в выпадающем списке Train выбрать TrueNAS-SCALE-Goldeye (сервер его уже видит), дождаться списка обновлений, убедиться, что предлагается 25.10.7 или новее, нажать Download / Apply, перезагрузить.
  3. После перезагрузки проверить драйвер: System → Shell (или SSH):
    nvidia-smi --query-gpu=name,driver_version --format=csv

    Ожидается NVIDIA RTX 2000 Ada Generation, 580.x.

  4. Проверить, что GPU-приложения (Ollama, Whisper, LibreTranslate и др.) запустились и видят карту. (проверить после обновления)

Важно: переход 25.04 → 25.10 — смена основной версии. Перед обновлением почитайте release notes 25.10 (раздел о breaking changes) и убедитесь, что есть резервная копия важных данных. Откат возможен выбором предыдущего boot environment (System → Boot).

Шаг 2: Выбор модели под этот сервер

Ресурсы сервера: 62 GB RAM + 16 GB VRAM = 78 GB, но часть занята другими приложениями. Strata планирует память по всему объёму RAM сервера и не знает о других контейнерах, поэтому модель надо выбирать с запасом.

Столбец «Нужно RAM+VRAM» — оценка Strata (та же, что в таблице на странице Windows-ПК).

FAMILY / MODEL Скачать Нужно RAM+VRAM На этом сервере
gyro / Gyro-M — ~35 GB да
qwen / Q2_0 66 GB ~38 GB да, рекомендуется для начала
unsloth / UD-IQ1_M 68 GB ~39 GB да
unsloth / UD-Q2_K_XL 80 GB ~51 GB только если остановить другие тяжёлые приложения (Nextcloud, PhotoPrism, Jellyfin…)
unsloth / UD-IQ3_XXS 84 GB ~55 GB то же, впритык
qwen / IQ3_XXS, IQ3_S 76 / 84 GB ~76 / ~84 GB только в режиме «только Strata» — см. ниже «Вариант: IQ3_S»
unsloth UD-Q4_K_XL и крупнее 111+ GB 82+ GB нет — не хватит RAM
qwen36 (Qwen3.6-35B-A3B) меньше меньше да; меньшая модель, умеет несколько запросов одновременно — (проверить размер –plan)

Скорость здесь будет ниже, чем на ПК с RTX 4080: у RTX 2000 Ada примерно в 3 раза меньше пропускная способность видеопамяти и шина PCIe x8. Замеров нет. (проверить)

Вариант: IQ3_S в режиме «только Strata»

Если на время работы Strata остановить все остальные приложения, сервер по памяти почти равен Windows-ПК, на котором IQ3_S проверен (64 GB RAM + 16 GB VRAM, реально занято ~50 GB RAM + 15.7 GB VRAM, ~21.5 ток/с на RTX 4080). На сервере 62 GB RAM — запас меньше, а генерация будет медленнее (видеопамять RTX 2000 Ada примерно в 3 раза медленнее, чем у RTX 4080). (проверить на сервере)

Что нужно:

  1. Остановить приложения (Apps → Installed → Stop): все GPU-приложения (ollama, whisper, libretranslate, xtts, voxcpmtts) и тяжёлые по памяти (nextcloud, photoprism, jellyfin, open-webui, anki, pdf-ocr, youtrack…). Проверка свободной памяти: free -g — в available должно быть 55+ GB.
  2. Ограничить кэш ZFS (ARC). По умолчанию он может занять почти всю RAM и отдаёт её постепенно, а Strata при загрузке сразу закрепляет десятки GB. System → Advanced Settings → Init/Shutdown Scripts → Add:
    • Type: Command
    • Command: echo 8589934592 > /sys/module/zfs/parameters/zfs_arc_max (8 GB)
    • When: Post Init
    • Сохранить и, чтобы применить сразу, выполнить ту же команду в System → Shell под root (sudo -i). Проверка: awk '/^size/ {print $3/2^30 « GB»}' /proc/spl/kstat/zfs/arcstats. (проверить)
    • Минус: меньше кэша для файлов на дисках — сетевые шары и приложения могут работать чуть медленнее.
  3. В YAML («Шаг 6») поставить MODEL: IQ3_S (скачивание ~85 GB) и restart: «no» — чтобы после перезагрузки сервера Strata не стартовала автоматически рядом с остальными приложениями и не вызвала нехватку памяти.

Порядок работы: остановить приложения → Start у strata → дождаться healthy → работать → Stop у strata → запустить приложения обратно.

Если при загрузке контейнер падает или в логах ошибки памяти — вернуться к Q2_0 / UD-Q2_K_XL либо добавить RAM в сервер (i5-14500 поддерживает до 192 GB; с 128 GB IQ3_S работает рядом со всеми приложениями).

Посмотреть план без запуска (после обновления TrueNAS, образ скачается ~0.7 GB):

docker run --rm --gpus all ghcr.io/niko1221/strata:0.2.13-cuda13 strata launch --plan --family qwen --model q2_0 --vision off --no-tui

Шаг 3: Освободить видеокарту

На время работы Strata остановите приложения, которые держат видеопамять: Apps → Installed → (приложение) → Stop:

  • ollama (держит загруженные модели в VRAM),
  • whisper, libretranslate, xtts, voxcpmtts.

Проверка, что VRAM свободна:

nvidia-smi --query-gpu=memory.used,memory.total --format=csv
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv

Если Strata нужна постоянно — у этих приложений стоит выключить автозапуск или перенести их на CPU.

Шаг 4: Датасет для данных Strata

Модель (десятки GB), подготовленные файлы, пресеты и API-ключ хранятся в /data контейнера. Кладём их на быстрый NVMe-пул:

Datasets → выбрать appData → Add Dataset:

  • Name: strata
  • Dataset Preset: Apps
  • Save.

Путь получится /mnt/appData/strata. Нужно свободное место: размер модели + ~10 GB (для Q2_0 — ~80 GB).

Шаг 5: API-ключ

Сервер будет доступен из сети, поэтому ключ обязателен (Strata без ключа в сеть не отдаёт). Сгенерировать (System → Shell или SSH):

openssl rand -hex 24

Сохраните ключ (например, в KeePass) — он нужен в YAML и на каждом клиенте. Ниже он обозначен <КЛЮЧ>.

Шаг 6: Установка Custom App через веб-интерфейс

Apps → Discover Apps → (меню ⋮ справа вверху) → Install via YAML. (проверить название пункта в 25.10)

  • Name: strata
  • Custom Config — вставить YAML:
services:
  strata:
    image: ghcr.io/niko1221/strata:0.2.13-cuda13
    container_name: strata
    restart: unless-stopped
    ports:
      - "30080:8080"
    environment:
      FAMILY: qwen
      MODEL: Q2_0
      CONTEXT: 64k
      VISION: "off"
      TUNE: skip
      API_KEY: "<КЛЮЧ>"
    volumes:
      - /mnt/appData/strata:/data
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    ulimits:
      memlock:
        soft: -1
        hard: -1
    shm_size: 2gb
    stop_grace_period: 2m
  • Save / Install.

Пояснения:

  • image — версия закреплена (0.2.13); cuda13 — для драйвера 580+. Список версий: ghcr.io/niko1221/strata на GitHub.
  • ports: «30080:8080» — снаружи порт 30080 (8080 и 8081 на сервере заняты), внутри контейнера 8080. Порт открыт для всей сети — поэтому ключ.
  • FAMILY / MODEL — модель из таблицы «Шаг 2»; CONTEXT — длина контекста (32k, 64k, 128k); больше контекст — больше памяти.
  • volumes — всё скачанное и настройки живут в датасете, переживают обновление образа и пересоздание приложения.
  • deploy … nvidia — доступ к GPU (так же настроены ваши whisper и libretranslate).
  • memlock, shm_size — движок закрепляет в RAM десятки GB; не ставьте лимит памяти контейнеру.
  • stop_grace_period: 2m — время на выгрузку модели при остановке.
  • restart: unless-stopped — после перезагрузки сервера Strata стартует сама, если не была остановлена вручную.

Другие переменные (из документации Strata): PARALLEL (одновременных запросов 1–8), KV (int8 / q4_0 — вдвое меньше памяти на контекст), TUNE=quick (один раз подобрать быстрые настройки), STRATA_SET (расширенные настройки движка), MODEL_PATH (свои GGUF-файлы, смонтированные в контейнер).

Шаг 7: Первый запуск

Первый старт скачивает модель (для Q2_0 ~68 GB) — это долго. Ход загрузки: Apps → Installed → strata → Logs (или docker logs -f strata по SSH). Прерванная загрузка продолжается с места остановки.

Состояние: пока качается и загружается — starting, когда модель загружена — healthy / Running.

Проверка на самом сервере:

curl -s http://127.0.0.1:30080/health
curl -s http://127.0.0.1:30080/v1/models -H "Authorization: Bearer <КЛЮЧ>"

Шаг 8: Проверка с другого компьютера

Windows (PowerShell):

curl.exe -s http://192.168.1.135:30080/v1/models -H "Authorization: Bearer <КЛЮЧ>"

Linux / macOS:

curl -s http://192.168.1.135:30080/v1/chat/completions \
  -H "Authorization: Bearer <КЛЮЧ>" -H "Content-Type: application/json" \
  -d '{"model":"<имя из /v1/models>","messages":[{"role":"user","content":"Привет, ответь одним словом"}],"max_tokens":200}'
  • Connection refused / таймаут — приложение не запущено, неверный порт;
  • 401 — неверный или не переданный ключ.

Имя модели берите точно из ответа /v1/models (для Q2_0 — вида qwen3.8-flash-next-q2_0).

Шаг 9: Подключение клиентов

Общие параметры:

Параметр Значение
Тип API OpenAI Compatible (Chat Completions)
Base URL http://192.168.1.135:30080/v1
Полный путь Chat Completions http://192.168.1.135:30080/v1/chat/completions
API Key <КЛЮЧ>
Модель имя из /v1/models
Anthropic-совместимый адрес http://192.168.1.135:30080 (без /v1)

Goose Desktop

Settings → Models → Add Custom Provider:

Поле Значение
Provider Type OpenAI Compatible
Display Name Strata Server
API URL http://192.168.1.135:30080/v1/chat/completions
API Key <КЛЮЧ>
Available Models имя из /v1/models
Streaming включить

Или файлом %APPDATA%\Block\goose\config\custom_providers\custom_strata_server.json (Linux/macOS — ~/.config/goose/custom_providers/):

{
  "name": "custom_strata_server",
  "engine": "openai",
  "display_name": "Strata Server",
  "description": "Strata on TrueNAS 192.168.1.135:30080",
  "api_key_env": "CUSTOM_STRATA_SERVER_API_KEY",
  "base_url": "http://192.168.1.135:30080/v1/chat/completions",
  "models": [
    { "name": "qwen3.8-flash-next-q2_0", "context_limit": 65536 }
  ],
  "headers": null,
  "timeout_seconds": 600,
  "supports_streaming": true,
  "requires_auth": true
}

Ключ — ввести в Settings → Models у провайдера Strata Server или задать переменной окружения CUSTOM_STRATA_SERVER_API_KEY (проверить). Русский язык, .goosehints и MCP (Developer, Playwright) настраиваются на клиенте — как на странице локальной установки.

Open WebUI (уже стоит на этом же TrueNAS)

Admin Panel → Settings → Connections → OpenAI API → добавить:

Модель Strata появится в списке рядом с моделями Ollama.

OpenCode

~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "strata/qwen3.8-flash-next-q2_0",
  "provider": {
    "strata": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Strata (TrueNAS)",
      "options": {
        "baseURL": "http://192.168.1.135:30080/v1",
        "apiKey": "<КЛЮЧ>"
      },
      "models": {
        "qwen3.8-flash-next-q2_0": {
          "name": "Qwen3.8-Flash-Next Q2_0",
          "tool_call": true,
          "reasoning": true,
          "limit": { "context": 65536, "output": 16384 }
        }
      }
    }
  }
}

Готовый файл с ключом и именем модели можно получить на сервере: docker exec strata strata connect opencode (адрес в нём будет внутренний — замените на http://192.168.1.135:30080).

Claude Code

export ANTHROPIC_BASE_URL=http://192.168.1.135:30080
export ANTHROPIC_AUTH_TOKEN=<КЛЮЧ>
claude

Python (openai SDK)

from openai import OpenAI
 
client = OpenAI(base_url="http://192.168.1.135:30080/v1", api_key="<КЛЮЧ>")
r = client.chat.completions.create(
    model="qwen3.8-flash-next-q2_0",
    messages=[{"role": "user", "content": "Привет! Кратко: чем list отличается от tuple?"}],
)
print(r.choices[0].message.content)

Управление

Действие Как
Остановить / запустить Apps → Installed → strata → Stop / Start (остановка корректно выгружает модель и освобождает VRAM)
Логи Apps → strata → Logs или docker logs -f strata
Монитор (скорость, память, запросы) docker exec -it strata strata monitor (выход — q, сервер продолжает работать)
Показать ключ docker exec strata strata launch –show-key –preset docker
Сменить модель Apps → strata → Edit → поменять MODEL / FAMILY → Save. Новая модель скачается, старая останется в /mnt/appData/strata
Обновить Strata Edit → поменять версию в image (например 0.2.14-cuda13) → Save. Модели и настройки сохраняются. strata update внутри контейнера не используется
Удалить старые модели /mnt/appData/strata/Strata-data/models/ и packs/

Безопасность

  • Порт 30080 доступен из всей домашней сети — поэтому ключ обязателен. Не пробрасывайте 30080 на роутере в интернет.
  • Нужен доступ извне — через VPN (Tailscale/WireGuard) или через nginx-proxy-manager (уже стоит на сервере) с HTTPS и ограничением доступа.
  • Контейнер Strata работает от root (нужно для GPU и закрепления памяти) — не монтируйте в него лишние папки.

Проблемы и решения

«Your NVIDIA graphics driver (550.142) is too old for Strata»

Драйвер ниже 575/580. Решение — «Шаг 1» (TrueNAS 25.10.7+). Образ cuda12 не поможет: ему нужен 575+.

CUDA out of memory / модель не помещается

Видеокарту держат другие приложения — «Шаг 3». Либо выберите модель меньше, CONTEXT: 32k или KV: q4_0.

Контейнер убит, сервер тормозит

Не хватает RAM: остановите другие тяжёлые приложения, возьмите модель меньше. У контейнера не должно быть лимита памяти.

Порт занят

Выберите другой внешний порт в ports (например «30081:8080») и поменяйте адрес у клиентов.

Не скачивается модель

Смотрите Logs: прогресс выводится каждые несколько секунд. Нужно свободное место в /mnt/appData/strata (размер модели + ~10 GB).

Приложение: обычный Linux-сервер (не TrueNAS)

На Ubuntu/Debian с драйвером NVIDIA 580+ и NVIDIA Container Toolkit — тот же YAML через docker compose up -d. Без Docker — установщик Terminal:

curl -fsSL https://github.com/Niko1221/Strata/releases/latest/download/install.sh -o install.sh
less install.sh && sh install.sh
strata launch --family qwen --model q2_0 --vision off --access lan --port 8080 --no-tui --yes --save-preset "Server Q2_0"
strata launch --show-key --preset "Server Q2_0"

–access lan открывает доступ из сети и включает API-ключ.

Шпаргалка

# сервер (SSH или System → Shell)
docker logs -f strata
docker exec -it strata strata monitor
docker exec strata strata launch --show-key --preset docker
nvidia-smi
 
# клиент
curl -s http://192.168.1.135:30080/v1/models -H "Authorization: Bearer <КЛЮЧ>"
Что Значение
Адрес API http://192.168.1.135:30080/v1
Данные /mnt/appData/strata
Образ ghcr.io/niko1221/strata:0.2.13-cuda13 (нужен TrueNAS 25.10.7+)
truenas/application/strata_qwen_server.txt · Последние изменения: 2026/11/12 18:15 — werwolf