Windows LLM Host — пошаговая инструкция для Claude Code

Это инструкция для Claude Code, запущенного на Windows-машине Алексея.

Цель — превратить свежую Windows-машину в LLM-хост, который через Tailscale/Cloudflare Tunnel доступен с VPS erp-test.nirbi.ru.

Машина: AMD Ryzen 7 9800X3D + NVIDIA RTX 5070 (12 GB VRAM, Blackwell) + 32 GB RAM, Windows 11. Модель: Qwen 2.5 14B Instruct (Q5_K_M, ~10 GB). Назначение: BR 6.3 (AI-агент через API), BR 6.4 (отчёты), BR 6.5 (OSINT).


Целевое состояние после прохождения инструкции

  • ✅ Свежий NVIDIA-драйвер с поддержкой Blackwell (CUDA 12.8+ / 13.x)
  • ✅ Ollama установлен, запущен как Windows-сервис на 0.0.0.0:11434
  • ✅ Модель qwen2.5:14b-instruct-q5_k_m загружена, прогрета
  • ✅ Tailscale установлен, машина видна в Tailnet
  • ✅ С VPS 185.152.93.77 (Tailscale IP будет известен после авторизации) curl http://<windows-tailscale-ip>:11434/api/version отвечает
  • ✅ Файл setup-result.txt на рабочем столе со всеми данными для пользователя

Правила работы для Claude

  1. Действуй автономно — не спрашивай разрешения на установку пакетов, на reboot не отправляй (если возможно избежать)
  2. Все команды — через PowerShell (запускай как Administrator если требуется)
  3. После каждого шага проверяй результат — если упало, попробуй один раз retry, потом проси пользователя помочь
  4. Никаких винтов: не отключать Windows Defender, не менять системные настройки кроме переменных окружения для Ollama
  5. Все скачивания — через winget (он есть на Windows 11 из коробки). Если winget отсутствует — отдельный шаг 0
  6. В конце запиши итоговый отчёт в C:\Users\<имя>\Desktop\llm-setup-result.txt

Шаг 0: Проверки и подготовка

# 0.1. Версия Windows
Get-ComputerInfo | Select-Object WindowsProductName, OsVersion, OsBuildNumber
 
# 0.2. Свободное место (минимум 30 GB на C:)
Get-PSDrive C | Select-Object Used, Free
 
# 0.3. Наличие GPU
Get-CimInstance Win32_VideoController | Select-Object Name, DriverVersion, AdapterRAM
 
# 0.4. winget доступен?
winget --version
# Если "command not found" → установить App Installer из Microsoft Store вручную (показать пользователю инструкцию).
 
# 0.5. PowerShell версия
$PSVersionTable.PSVersion
# Желательно ≥5.1; если PowerShell 7 нет — это ОК, базовых команд хватит.

Если место < 30 GB или нет GPU NVIDIA → остановиться и сообщить пользователю.


Шаг 1: NVIDIA Driver

RTX 5070 — Blackwell architecture, требует драйвер ≥570 (Windows) с поддержкой CUDA 12.8+.

# 1.1. Текущая версия драйвера
nvidia-smi
# Если "command not found" — драйвера нет, ставим.
# Если есть и Driver Version ≥570.xx — пропускаем шаг.
 
# 1.2. Установка свежего драйвера через winget
winget install --id Nvidia.GeForceExperience --accept-source-agreements --accept-package-agreements
# GeForce Experience сам подтянет последний Game Ready / Studio Driver для RTX 5070.
# Альтернатива (если winget GeForce Experience не работает):
# winget install Nvidia.CUDA --accept-source-agreements --accept-package-agreements
# (CUDA Toolkit включает драйвер.)
 
# 1.3. Проверка после установки (может потребоваться logout/login или короткий reboot)
nvidia-smi
# Должно показать: RTX 5070, Driver Version ≥570, CUDA Version ≥12.8

Если nvidia-smi всё равно не находится

Драйвер мог положить себя в C:\Program Files\NVIDIA Corporation\NVSMI\ — добавь в PATH:

$env:PATH += ";C:\Program Files\NVIDIA Corporation\NVSMI"
[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";C:\Program Files\NVIDIA Corporation\NVSMI", "Machine")

Шаг 2: Установка Ollama

# 2.1. Установка через winget
winget install Ollama.Ollama --accept-source-agreements --accept-package-agreements
 
# 2.2. Проверка — Ollama должна стартовать автоматически как Windows-сервис
Start-Sleep -Seconds 5
ollama --version
curl http://localhost:11434/api/version
# Ожидаемо: { "version": "0.X.Y" }

Если ollama не находится после winget — перезапусти PowerShell новым окном (winget добавил PATH, но текущая сессия его не видит). Если всё ещё нет — ставь вручную с https://ollama.com/download/OllamaSetup.exe.

Проверить версию Ollama ≥0.5.0

Blackwell-карты (RTX 5070) поддерживаются с версии 0.5.0+. На январь 2026 актуальная версия — последняя из winget (0.7+). Если версия меньше — обновись через winget или скачай руками с ollama.com.


Шаг 3: Конфигурация Ollama (слушать на всех интерфейсах)

По умолчанию Ollama слушает только 127.0.0.1:11434 — нам надо 0.0.0.0:11434, чтобы Tailscale-IP машины тоже принимал запросы.

# 3.1. Установить переменные окружения для системы (требуется administrator)
[Environment]::SetEnvironmentVariable("OLLAMA_HOST", "0.0.0.0:11434", "Machine")
[Environment]::SetEnvironmentVariable("OLLAMA_KEEP_ALIVE", "24h", "Machine")
[Environment]::SetEnvironmentVariable("OLLAMA_NUM_PARALLEL", "2", "Machine")
 
# 3.2. Перезапуск Ollama сервиса чтобы переменные подхватились
# Найти процесс ollama и убить
Get-Process ollama* -ErrorAction SilentlyContinue | Stop-Process -Force
Start-Sleep -Seconds 2
 
# Запустить сервер заново (Ollama service автоматически рестартует, но на всякий)
Start-Process -FilePath "ollama" -ArgumentList "serve" -WindowStyle Hidden
Start-Sleep -Seconds 3
 
# 3.3. Проверка что слушает на 0.0.0.0
netstat -ano | findstr 11434
# Ожидаемо: 0.0.0.0:11434  LISTENING

Альтернатива через Settings GUI

Если PowerShell как admin не подключается — пользователь может вручную: System Properties → Environment Variables → New System Variable:

  • OLLAMA_HOST=0.0.0.0:11434
  • OLLAMA_KEEP_ALIVE=24h Затем перезагрузить Ollama: правой кнопкой по иконке в трее → Quit Ollama, затем запустить заново из Start Menu.

Шаг 4: Загрузка Qwen 2.5 14B

# 4.1. Скачать модель (~10 GB, 10-30 минут на хорошем интернете)
ollama pull qwen2.5:14b-instruct-q5_k_m
 
# 4.2. Проверка
ollama list
# Ожидаемо: qwen2.5:14b-instruct-q5_k_m  ...  ~10 GB
 
# 4.3. Прогрев — первый запрос медленный, потому что модель грузится в VRAM
ollama run qwen2.5:14b-instruct-q5_k_m "Привет! Скажи на русском, что ты готов помогать с заказами в кафе. Кратко, в одну строку."
 
# 4.4. Проверить использование GPU во время генерации
# В отдельном PowerShell-окне:
nvidia-smi -l 1
# Должно видеть процесс ollama в "Processes" с GPU-Util > 50% и Memory-Usage ~9-10 GB

Если модель не помещается в VRAM (Ollama делает CPU offload — будет очень медленно, <5 tok/s):

  • Проверь что других программ нет с занятой VRAM (Chrome с hardware acceleration отжирает)
  • В крайнем случае — fallback на qwen2.5:7b-instruct-q5_k_m (~6 GB VRAM, 50+ tok/s)

Шаг 5: Бенчмарк скорости генерации

# 5.1. Скорость токенов — используем --verbose
ollama run qwen2.5:14b-instruct-q5_k_m --verbose "Напиши 200 слов про преимущества ERP-системы для франшизы кафе. На русском, без markdown."
# В конце вывода будет:
# total duration:    Xs
# eval count:        XXX token(s)
# eval rate:         XX tokens/s     ← это нужное значение
 
# 5.2. Ожидаемая скорость на RTX 5070: 25-35 tok/s
# Если < 15 tok/s — модель скорее всего на CPU. Проверь nvidia-smi.

Шаг 6: Установка Tailscale

Tailscale — это самый простой способ пробросить домашний LLM на VPS, не открывая порты в интернет.

# 6.1. Установка
winget install Tailscale.Tailscale --accept-source-agreements --accept-package-agreements
 
# 6.2. Запуск (откроется браузер для авторизации)
Start-Process "C:\Program Files\Tailscale\tailscale-ipn.exe"
# ИЛИ команда (после установки tailscale в PATH):
# tailscale up

Скажи пользователю: «Авторизуйся в Tailscale через любого провайдера (Google/Microsoft/GitHub). После авторизации жди — я продолжу автоматически».

После авторизации:

# 6.3. Получить Tailscale-IP машины
tailscale ip --4
# Ожидаемо: 100.X.Y.Z
 
# 6.4. Сохрани этот IP — он нужен для VPS
$tailscaleIp = tailscale ip --4
Write-Host "Tailscale IP: $tailscaleIp"
 
# 6.5. Тест — Ollama доступна через tailscale-ip с этой же машины
curl http://${tailscaleIp}:11434/api/version

Шаг 7: Открыть порт 11434 в Windows Firewall

Tailscale-трафик идёт через виртуальный интерфейс Tailscale, но Windows Firewall может блокировать входящие на 11434.

# Правило для Tailscale-интерфейса
New-NetFirewallRule -DisplayName "Ollama Tailscale" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 11434 `
  -Action Allow `
  -InterfaceAlias "Tailscale" `
  -ErrorAction SilentlyContinue
 
# Универсальное правило (если выше не сработало — Tailscale интерфейс может называться иначе)
New-NetFirewallRule -DisplayName "Ollama 11434" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 11434 `
  -Action Allow `
  -ErrorAction SilentlyContinue
 
# Проверка
Get-NetFirewallRule -DisplayName "Ollama*" | Format-Table DisplayName, Enabled, Direction, Action

Шаг 8: Тест с VPS

Этот шаг не требует действий на Windows — это инструкция, что пользователю передать второму Claude (который работает в obsidian_erp на маке).

Запиши в итоговый отчёт (шаг 9) Tailscale IP машины. Когда мак-Claude получит IP, он:

  1. Установит Tailscale на VPS:
    curl -fsSL https://tailscale.com/install.sh | sh
    sudo tailscale up
  2. Пользователь авторизует VPS в том же Tailnet
  3. С VPS проверит: curl http://<windows-tailscale-ip>:11434/api/version

Шаг 9: Итоговый отчёт

# Собрать все данные для пользователя
$report = @"
=== Windows LLM Host — Setup Report ===
Date: $(Get-Date -Format "yyyy-MM-dd HH:mm:ss")
 
=== Hardware ===
GPU: $((Get-CimInstance Win32_VideoController | Where-Object Name -like "*NVIDIA*").Name)
Driver: $((nvidia-smi --query-gpu=driver_version --format=csv,noheader))
CUDA: $((nvidia-smi --query-gpu=cuda_version --format=csv,noheader))
VRAM: $((nvidia-smi --query-gpu=memory.total --format=csv,noheader))
CPU: $((Get-CimInstance Win32_Processor).Name)
RAM: $([math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory / 1GB, 0)) GB
 
=== Ollama ===
Version: $(ollama --version)
Models:
$(ollama list | Out-String)
 
=== Network ===
Tailscale IP: $(tailscale ip --4)
Ollama listen: $(netstat -ano | findstr 11434 | Out-String)
 
=== Environment ===
OLLAMA_HOST: $([Environment]::GetEnvironmentVariable('OLLAMA_HOST', 'Machine'))
OLLAMA_KEEP_ALIVE: $([Environment]::GetEnvironmentVariable('OLLAMA_KEEP_ALIVE', 'Machine'))
 
=== Next Steps for User ===
1. Передай Алексею (на маке) IP: $((tailscale ip --4))
2. На VPS установить Tailscale (инструкция отдельная)
3. Тест: curl http://$((tailscale ip --4)):11434/api/version
 
=== Performance ===
Тестируй вручную: ollama run qwen2.5:14b-instruct-q5_k_m --verbose "тест"
Ожидаемая скорость: 25-35 tok/s
"@
 
$report | Out-File -FilePath "$env:USERPROFILE\Desktop\llm-setup-result.txt" -Encoding UTF8
Write-Host $report

Покажи пользователю содержимое отчёта и скажи: «Отправь Алексею содержимое файла Desktop\llm-setup-result.txt или просто IP-адрес Tailscale».


Возможные проблемы и их решения

1. winget говорит “command not found”

  • Windows 10/11 без App Installer. Решение: пользователь должен открыть Microsoft Store → искать “App Installer” → установить. Альтернатива: скачать вручную с https://aka.ms/getwinget

2. nvidia-smi показывает “GPU is lost” или “Driver/library mismatch”

  • Reboot машины. После перезагрузки повторить с шага 1.

3. Ollama crashing при загрузке Qwen 14B

  • Версия Ollama < 0.5.0 (не поддерживает Blackwell). Обновись: winget upgrade Ollama.Ollama или скачай вручную.

4. Tailscale не запускается / “tailscaled service not running”

  • Открой PowerShell как Admin: sc.exe start "Tailscale"
  • Или Reboot.

5. С VPS не доходит до Ollama (timeout)

  • Проверить Windows Firewall (шаг 7)
  • Проверить что Ollama слушает на 0.0.0.0, не на 127.0.0.1: netstat -ano | findstr 11434
  • Проверить что Tailscale активен на обеих сторонах: tailscale status

6. Скорость генерации <10 tok/s

  • Модель упала в CPU offload. Проверь nvidia-smi во время генерации — Memory-Usage должна быть ~9-10 GB, GPU-Util > 50%.
  • Закрой Chrome / другие GPU-heavy программы и попробуй снова.
  • В крайнем случае — переключись на qwen2.5:7b-instruct-q5_k_m.

После завершения

Когда пользователь подтвердит что отчёт получен — на mac-стороне Алексей продолжит:

  • Установит Tailscale на VPS
  • Подключит потребителей (OpenClaw framework, BR 6.4/6.5 — TBD) напрямую к Ollama API через autossh-туннель (erp-llm-gateway отказан 2026-05-13, см. ADR-022 rev 2)
  • Свяжет с BR 6.3 (агент), BR 6.4 (отчёты), BR 6.5 (OSINT)

Связанные документы