Зміст

🤖 Локальний ШІ на домашньому сервері: Ollama + Open WebUI в Proxmox

Мета: підняти власний ШІ вдома — без підписок, лімітів і без витоку даних у хмару.

Як це влаштовано

Локальний ШІ — це три незалежних шари:

3 Шар 3: Інтерфейс
Open WebUI · oterm · Continue.dev · curl
2 Шар 2: Runtime (менеджер моделей)
Ollama · LM Studio · llama.cpp · vLLM
1 Шар 1: Модель (файл .gguf / .safetensors)
Llama · Mistral · Gemma · Qwen · DeepSeek

Ми використовуємо Ollama як runtime і Open WebUI як інтерфейс. Ollama — це обгортка над llama.cpp, яка завантажує модель, керує GPU і обслуговує REST API на порту 11434. Open WebUI просто ходить до цього API по HTTP.

Архітектура сетапу:

Proxmox Host VM (Ubuntu 24.04) NVIDIA GPU passthrough Ollama :11434 Open WebUI :3000

Ollama запускаємо як системний сервіс (не в Docker) — так простіше з доступом до відеокарти. Open WebUI — в Docker, бо це просто веб-інтерфейс без вимог до GPU.

💡 Якщо ставите все на готовий Linux-комп’ютер — секцію з Proxmox і VM можна пропустити.


1. Створення VM в Proxmox

ПараметрЗначенняЧому
OSUbuntu 24.04 Server ISOLTS, найкраща підтримка NVIDIA
BIOSOVMF (UEFI)Надійніше для PCIe passthrough
Machineq35Підтримує PCIe
CPU typehostКритично! Без цього Ollama може не бачити GPU
CPU cores4–8За наявністю
RAM4–8 GBДля ОС, Docker і Ollama
BallooningfalseФіксована пам’ять для стабільності
Disk80–100 GBМоделі займають 5–15 GB кожна
Pre-enroll keysfalseМоже блокувати NVIDIA драйвер
DisplayVirtIO-GPUЗалишаємо, Primary GPU не вмикаємо

⚠️ CPU type: host — найпоширеніша помилка. З дефолтним QEMU CPU Ollama може не побачити GPU взагалі.


2. GPU Passthrough

Proxmox WebUI → VM → Hardware → Add → PCI Device → обираємо відеокарту.

Прапорці:

  • All Functions — передає всі функції карти разом (відео, аудіо)
  • ROM-Bar — допомагає з ініціалізацією NVIDIA драйвера у VM
  • ☑️ PCI-Express — вмикаємо якщо є (лише з q35)
  • Primary GPU — не вмикати, інакше втратите консоль Proxmox

💡 Налаштування IOMMU, vfio і GPU passthrough на хості — в окремому матеріалі про ігрову VM на Proxmox. Тут передбачається, що хост вже підготовлений.

/2026/05/09/ollama-open-webui-na-proxmox-z-gpu/images/proxmox-add-pci-device.png

Перевірити що GPU захоплена vfio (на хості):

lspci -nnk | grep -A3 NVIDIA
# Має бути: Kernel driver in use: vfio-pci

3. Ubuntu + NVIDIA драйвери

Підключаємось до VM по SSH і встановлюємо оновлення:

sudo apt update && sudo apt upgrade -y

Перевіряємо чи GPU видно системі:

lspci | grep -i nvidia
nvidia-smi

Якщо nvidia-smi не відповідає — дивимось які драйвери доступні і встановлюємо:

ubuntu-drivers list
sudo apt install nvidia-driver-590-open   # або версію під вашу карту
sudo reboot

Після перезавантаження перевіряємо:

nvidia-smi
# Має показати GPU, версію драйвера, VRAM, температуру
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 595.58.03              Driver Version: 595.58.03      CUDA Version: 13.2     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 5060 Ti     Off |   00000000:01:00.0  On |                  N/A |
|  0%   32C    P8              5W /  180W |      34MiB /  16311MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

Додатково встановлюємо btop для моніторингу CPU і GPU в реальному часі:

sudo apt install btop -y

💡 AMD: замість драйверів NVIDIA спочатку встановлюється ROCm. Список сумісних карт — docs.ollama.com/gpu, інструкція — docs.ollama.com/linux.

💡 RTX 40xx / 50xx (Blackwell/Ada): Ubuntu 24.04 встановить open модуль ядра — це нормально. Для Ollama різниці немає.


4. Встановлення Ollama

Встановлення однією командою:

curl -fsSL https://ollama.com/install.sh | sh

Ollama автоматично стає systemd сервісом. Перевіряємо:

sudo systemctl status ollama

Важливо: за замовчуванням Ollama слухає тільки localhost. Docker-контейнер Open WebUI до нього не достукається. Відкриваємо через systemd override:

sudo systemctl edit ollama

Вписуємо в секцію [Service]:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

Перезапускаємо:

sudo systemctl daemon-reload && sudo systemctl restart ollama

Перевіряємо що GPU працює — запускаємо тестову модель:

ollama run llama3.2:3b "Привіт! Скажи щось українською"

Паралельно в другому терміналі дивимось на GPU:

watch -n 1 nvidia-smi
# GPU Load має підскочити, VRAM — зайнятись

/2026/05/09/ollama-open-webui-na-proxmox-z-gpu/images/gpu-load-during-inference.png


5. Корисні команди Ollama

Моделі

ollama pull qwen3.5:9b         # завантажити модель
ollama list                    # список завантажених моделей
ollama rm qwen3.5:9b           # видалити модель
ollama show qwen3.5:9b         # деталі: розмір, параметри, системний промпт

Запуск

ollama run qwen3.5:9b                          # інтерактивний чат у терміналі
ollama run qwen3.5:9b "поясни що таке VLAN"   # одноразовий запит

Статус і моніторинг

ollama ps                      # які моделі зараз завантажені і скільки VRAM займають
systemctl status ollama        # стан сервісу
journalctl -u ollama -f        # логи в реальному часі

6. Які моделі обрати

Хто робить ці моделі

Більшість популярних моделей — це «відкриті ваги» від великих компаній: вони тренують модель на своїх серверах, а потім публікують файл, який можна завантажити і запустити локально.

КомпаніяМодель
MetaLlama
GoogleGemma
AlibabaQwen
Mistral AIMistral
DeepSeekDeepSeek R1

💡 «Відкриті ваги» — не те саме, що open source. Файл моделі публічний, але код навчання і дані зазвичай закриті. Для локального запуску це не має значення.

Читаємо теги

qwen3  :  14b  -  instruct  -  q4_K_M
  │         │         │             │
  │         │         │             └── квантизація (стиснення)
  │         │         └────────────── тип / спеціалізація
  │         └──────────────────────── розмір (кількість параметрів)
  └─────────────────────────────────── сімейство моделі

Типи:

ТегДля чого
:instruct / :chatРозмова і виконання інструкцій — найпоширеніший вибір
:codeЗаточена під написання і аналіз коду
:visionРозуміє зображення — можна надсилати скріншоти
:thinking / :r1“Думає” перед відповіддю — повільніше, але краще для логіки
без тегаlatest — зазвичай найменший доступний варіант

Квантизація

fp16    ████████████████  ~28 GB  — повна точність, занадто велика
q8_0    ████████          ~15 GB  — майже оригінальна якість
q6_K    ███████           ~12 GB  — дуже близько до оригіналу
q5_K_M  ██████            ~10 GB  — добре
q4_K_M  █████              ~9 GB  ← оптимальний вибір ✓
q3_K_M  ████               ~5 GB  — помітна деградація
q2_K    ██                 ~3 GB  — погана якість
  • Q<число> — кількість біт на вагу. Q4 займає вдвічі менше ніж Q8.
  • _K — K-quant: розумніший алгоритм стиснення, краща якість при тому ж розмірі. Завжди краще ніж _0 або _1.
  • _S / _M / _L — Small / Medium / Large: рівень якості всередині K-quant. Q4_K_M — найпоширеніший збалансований варіант.

Головне правило: краще більша модель з нижчою квантизацією, ніж менша з вищою. 14b q4_K_M майже завжди розумніша за 7b q8_0.

Рекомендовані моделі для 16 ГБ VRAM

💡 Нові моделі виходять чи не щомісяця — цей список актуальний на момент публікації. Перевіряйте свіжі версії на ollama.com/library.

МодельРозмір файлу (Q4)ШвидкістьНайкраще для
llama3.2:3b2.0 GB⚡⚡⚡Тест, розробка
qwen3.5:4b3.4 GB⚡⚡⚡Дрібні задачі, дуже шустро
ministral-3:8b6.0 GB⚡⚡⚡Альтернатива Qwen, родина Mistral
qwen3.5:9b6.6 GB⚡⚡⚡Загальне, баланс — 🏆 мій вибір
gemma4:e2b7.2 GB⚡⚡Мультимодальна (текст + зображення)
ministral-3:14b9.1 GB⚡⚡Найбільша з Mistral, що комфортно влазить
gemma4:e4b9.6 GB⚡⚡Якість + мультимодальність

⚠️ Якщо модель не вміщується у VRAM повністю — Ollama може перенести частину на CPU. Генерація різко сповільнюється. Моделі 27B+ для 16 ГБ практично не підходять.

Завантажити модель:

ollama pull qwen3.5:9b
ollama list              # переглянути завантажені
ollama rm llama3.2:3b   # видалити непотрібну

/2026/05/09/ollama-open-webui-na-proxmox-z-gpu/images/ollama-library-model-tags.png

💡 Моделі знаходити зручно на ollama.com/library. В Open WebUI вбудованого каталогу немає — потрібно знати назву наперед і тягнути через Settings → Admin Panel → Manage Models.


7. Open WebUI

Де запускати

Open WebUI спілкується з Ollama по HTTP — йому байдуже де фізично знаходиться Ollama.

ВаріантКоли підходить
Та сама VMНайпростіше
Окремий LXC/VMЯкщо хочете ізольовані сервіси
Інша машинаВкажіть OLLAMA_BASE_URL=http://[IP-VM]:11434

💡 Якщо використовуєте community-scripts для Proxmox — там є готовий скрипт openwebui.sh, який підіймає окремий LXC. Просто вкажіть IP вашої VM в налаштуваннях.

Встановлення Docker

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
docker --version   # перевіряємо

⚠️ Після встановлення Docker Ollama може перестати бачити відеокарту. Перевіряємо: sudo -u ollama nvidia-smi. Якщо не бачить — додаємо юзера в групи:

sudo usermod -a -G video,render ollama
sudo systemctl restart ollama
ollama ps   # PROCESSOR має бути 100% GPU, не CPU

Docker Compose

mkdir -p ~/open-webui && cd ~/open-webui
nano docker-compose.yml
services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    volumes:
      - open-webui:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://192.168.X.X:11434
    restart: unless-stopped

volumes:
  open-webui:

Замініть 192.168.X.X на IP вашої Ubuntu VM.

docker compose up -d
docker ps   # перевіряємо що контейнер running

Відкриваємо в браузері: http://[IP-VM]:3000

Перший зареєстрований акаунт автоматично стає адміністратором.

/2026/05/09/ollama-open-webui-na-proxmox-z-gpu/images/open-webui-first-launch.png


Типові помилки

ПроблемаПричинаРішення
Ollama не бачить GPUCPU type не “host”VM → CPU → Type: host
NVIDIA драйвер не встановлюєтьсяSecure Boot увімкненийПри створенні VM: Pre-enroll keys: false
Open WebUI не підключається до OllamaOLLAMA_HOST не виставленийsystemd override: OLLAMA_HOST=0.0.0.0:11434
Open WebUI не підключається до OllamaНеправильний IP або портПеревірити OLLAMA_BASE_URL в docker-compose.yml
Генерація дуже повільна (~3–5 tok/s)Ollama впав на CPU — GPU не бачитьnvidia-smi і ollama ps — чи показує GPU
Генерація помірно повільна (~15–20 tok/s)CPU offloading — модель не влізла у VRAMОбрати меншу модель або нижчу квантизацію
ollama ps показує 100% CPU після Dockerollama втратив доступ до GPU після Dockersudo usermod -a -G video,render ollama + restart
Ollama не стартує / незрозуміла помилкаjournalctl -u ollama -f

Корисні посилання