Post

Власний приватний ChatGPT у Homelab: запускаємо Ollama та Open WebUI в Docker

Власний приватний ChatGPT у Homelab: запускаємо Ollama та Open WebUI в Docker

🇬🇧 Read this article in English


Штучний інтелект став невіддільною частиною щоденної роботи розробників та системних адміністраторів. Проте хмарні сервіси на кшталт ChatGPT чи Claude мають два суттєвих недоліки: платні підписки ($20 на місяць за кожного користувача) та відсутність приватності. Відправляти внутрішні конфігураційні файли серверів, комерційний код чи конфіденційні документи на сторонні сервери — це величезний ризик витоку даних.

На щастя, індустрія відкритих нейромереж (Open Source LLM) зробила гігантський стрибок. Сьогодні кожен ентузіаст може за 10 хвилин розгорнути власний повнофункціональний аналог ChatGPT на домашньому сервері, який працюватиме повністю автономно, без інтернету та безкоштовно.

Для цього ми використаємо зв’язку двох найкращих інструментів сучасності:

  • Ollama — швидкий та оптимізований бекенд-рушій для завантаження та виконання нейромереж (Llama 3, DeepSeek, Qwen, Mistral).
  • Open WebUI — розкішний вебінтерфейс, який виглядає й працює точно як ChatGPT (історія листування, робота з PDF-файлами, голосовий ввід, підтримка кількох користувачів).

Як працює ця зв’язка?

1
2
3
4
5
6
7
[ Браузер / Телефон ]
        │
        ▼ (HTTPS через Nginx Proxy Manager)
[ Open WebUI ] ── (Завантаження файлів / RAG / Промпти)
        │
        ▼ (Внутрішня Docker-мережа: порт 11434)
[ Ollama Core ] ── (Виконання моделі на GPU або CPU)

Вся магія відбувається локально: Open WebUI надсилає ваші запити у внутрішній API-сокет Ollama, отримує згенеровані токени у реальному часі та транслює їх у вікно чату.


Крок 1. Підготовка Docker Compose

Створимо окрему директорію для нашого ШІ-сервісу на сервері, наприклад /opt/local-ai:

1
sudo mkdir -p /opt/local-ai && cd /opt/local-ai

Створимо файл docker-compose.yml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
version: '3.8'

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    volumes:
      - ./ollama_data:/root/.ollama
    ports:
      - "11434:11434"
    # Якщо у вас є відеокарта NVIDIA, розкоментуйте блок нижче для апаратного прискорення:
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: all
    #           capabilities: [gpu]

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_SECRET_KEY=super_secret_homelab_key_change_me
    volumes:
      - ./openwebui_data:/app/backend/data
    depends_on:
      - ollama

💡 CPU чи GPU?
Якщо у вашому сервері немає дискретної відеокарти NVIDIA — не хвилюйтеся! Ollama автоматично оптимізує обчислення під звичайний процесор (CPU) через набір інструкцій AVX2. Легкі сучасні моделі (наприклад, llama3.2:3b чи qwen2.5:3b) відповідають блискавично навіть на скромному залізі.

Запускаємо стек:

1
docker compose up -d

Крок 2. Завантажуємо перші моделі

Після підняття контейнерів бекенд Ollama готовий завантажувати нейромережі з офіційного каталогу. Ви можете зробити це однією командою з термінала сервера:

1
2
3
4
5
6
7
8
# Чудова універсальна модель від Meta (дуже швидка на CPU)
docker exec -it ollama ollama run llama3.2:3b

# Найкраща модель для генерації коду, Bash-скриптів та конфігурацій
docker exec -it ollama ollama run qwen2.5-coder:7b

# Модель із ланцюжком роздумів (reasoning)
docker exec -it ollama ollama run deepseek-r1:8b

Коли завантаження завершиться, модель завантажиться у пам’ять і ви навіть зможете поспілкуватися з нею прямо в терміналі. Натисніть Ctrl + D, щоб вийти.


Крок 3. Налаштування Open WebUI

Відкрийте в браузері адресу http://192.168.50.125:3000.

  1. Створення облікового запису адміністратора: Перший зареєстрований користувач автоматично отримує права адміністратора. Введіть ім’я, Email та пароль.
  2. Панель керування: Перейдіть в Admin Panel -> Settings -> General і, якщо потрібно, вимкніть публічну реєстрацію (Enable New Sign Ups: Off), щоб ніхто сторонній у мережі не міг витрачати ресурси вашого сервера.
  3. У спадному списку вибору моделей зверху ви одразу побачите всі моделі, завантажені в Ollama!

Крок 4. Доступ через гарний домен та HTTPS

У попередніх статтях ми налаштували AdGuard Home та Nginx Proxy Manager. Давайте дамо нашому штучному інтелекту гарне захищене ім’я:

  1. DNS Rewrite в AdGuard:
    • Domain: ai.home.myhomelab.org
    • IP Address: IP вашого проксі-сервера (наприклад, 192.168.50.125).
  2. Proxy Host у Nginx Proxy Manager:
    • Domain: ai.home.myhomelab.org
    • Scheme: http
    • Forward Host: IP вашої віртуальної машини з Open WebUI.
    • Forward Port: 3000
    • Websockets Support: Обов’язково увімкнути (необхідно для генерації тексту в режимі стрімінгу без затримок).
    • SSL: Оберіть ваш Wildcard-сертифікат *.home.myhomelab.org та увімкніть Force SSL.

Тепер ваш приватний ШІ доступний за сучасною адресою https://ai.home.myhomelab.org!


Суперсили Open WebUI: що варто спробувати?

1. Робота з вашими приватними документами (RAG)

Натисніть на значок скріпки біля рядка введення і завантажте будь-який PDF-документ, текстовий лог сервера чи інструкцію. Open WebUI автоматично розіб’є документ на вектори і модель відповідатиме на запитання виключно за вмістом вашого файлу.

2. Створення кастомних асистентів (Modelfiles)

У розділі Workspace -> Models ви можете створити власного асистента (наприклад, «DevOps-помічник»), прописавши йому системний промпт:

«Ти досвідчений DevOps інженер. Твоє завдання — аналізувати помилки в логах Docker та писати лаконічні bash-скрипти українською мовою.»


Висновок

Розгортання власної нейромережі в Homelab — це не просто данина моді, а практичний інструмент особистої цифрової незалежності. Ви отримуєте швидкого помічника для кодингу, аналізу текстів та мозкового штурму, який не залежить від інтернет-з’єднання, не бере щомісячну плату і гарантує, що ваші приватні дані ніколи не залишать стін вашого дому.

This post is licensed under CC BY 4.0 by the author.