Власний приватний 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.
- Створення облікового запису адміністратора: Перший зареєстрований користувач автоматично отримує права адміністратора. Введіть ім’я, Email та пароль.
- Панель керування: Перейдіть в Admin Panel -> Settings -> General і, якщо потрібно, вимкніть публічну реєстрацію (Enable New Sign Ups: Off), щоб ніхто сторонній у мережі не міг витрачати ресурси вашого сервера.
- У спадному списку вибору моделей зверху ви одразу побачите всі моделі, завантажені в Ollama!
Крок 4. Доступ через гарний домен та HTTPS
У попередніх статтях ми налаштували AdGuard Home та Nginx Proxy Manager. Давайте дамо нашому штучному інтелекту гарне захищене ім’я:
- DNS Rewrite в AdGuard:
- Domain:
ai.home.myhomelab.org - IP Address: IP вашого проксі-сервера (наприклад,
192.168.50.125).
- Domain:
- 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.
- Domain:
Тепер ваш приватний ШІ доступний за сучасною адресою https://ai.home.myhomelab.org!
Суперсили Open WebUI: що варто спробувати?
1. Робота з вашими приватними документами (RAG)
Натисніть на значок скріпки біля рядка введення і завантажте будь-який PDF-документ, текстовий лог сервера чи інструкцію. Open WebUI автоматично розіб’є документ на вектори і модель відповідатиме на запитання виключно за вмістом вашого файлу.
2. Створення кастомних асистентів (Modelfiles)
У розділі Workspace -> Models ви можете створити власного асистента (наприклад, «DevOps-помічник»), прописавши йому системний промпт:
«Ти досвідчений DevOps інженер. Твоє завдання — аналізувати помилки в логах Docker та писати лаконічні bash-скрипти українською мовою.»
Висновок
Розгортання власної нейромережі в Homelab — це не просто данина моді, а практичний інструмент особистої цифрової незалежності. Ви отримуєте швидкого помічника для кодингу, аналізу текстів та мозкового штурму, який не залежить від інтернет-з’єднання, не бере щомісячну плату і гарантує, що ваші приватні дані ніколи не залишать стін вашого дому.
