Files
iiEsaywebUI/README.md
2026-02-19 18:12:09 +00:00

12 KiB
Raw Permalink Blame History

iiEasy AI-платформа

Корпоративная AI-платформа на базе Open WebUI с интеграцией Ollama, Qdrant, SearXNG и синхронизацией Nextcloud.

Архитектура

┌─────────────────────────────────────────────────────────────┐
│                    Reverse Proxy (Nginx)                     │
│              *.iieasy.ru (odo.iieasy.ru)                     │
└─────────────────────────────────────────────────────────────┘
                            │
        ┌───────────────────┼───────────────────┐
        │                   │                   │
┌───────▼────────┐  ┌───────▼────────┐  ┌───────▼────────┐
│  Open WebUI    │  │   Authentik     │  │   Nextcloud    │
│  odo.iieasy.ru │  │ auth.iieasy.ru  │  │next.iieasy.ru  │
└───────┬────────┘  └─────────────────┘  └───────┬────────┘
        │                                         │
        │  ┌──────────────────────────────────────┘
        │  │
        ▼  ▼
┌─────────────────────────────────────────────────────────────┐
│              Docker Network (iieasy-ai)                     │
│                                                             │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                │
│  │  Ollama  │  │  Qdrant  │  │ SearXNG  │                │
│  │ (GPU)    │  │ (Vector) │  │ (Search) │                │
│  └──────────┘  └──────────┘  └──────────┘                │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
                    ┌───────────────┐
                    │ Python Worker │
                    │ (Nextcloud →  │
                    │  Qdrant Sync) │
                    └───────────────┘

Компоненты

  • Open WebUI - Веб-интерфейс для работы с AI моделями
  • Ollama - Локальный запуск LLM моделей (Gemma 3)
  • Qdrant - Векторная база данных для RAG
  • SearXNG - Метапоисковая система для веб-поиска
  • Authentik - Централизованный SSO (OIDC)
  • Nextcloud Sync Worker - Автоматическая синхронизация документов из Nextcloud

Быстрый старт

Предварительные требования

  • Docker и Docker Compose
  • NVIDIA GPU с драйверами (для Ollama)
  • Reverse proxy (Nginx) настроенный для доменов *.iieasy.ru
  • Authentik настроенный и доступный на auth.iieasy.ru

1. Клонирование и настройка

cd /home/its/iiEasyWeb
cp .env.example .env
# Отредактируйте .env и заполните все необходимые переменные

2. Генерация API ключей

# Генерация QDRANT_API_KEY
openssl rand -hex 32
# Добавьте результат в .env

3. Запуск инфраструктуры

# Запуск всех сервисов
docker-compose up -d

# Проверка статуса
docker-compose ps

# Просмотр логов
docker-compose logs -f

4. Загрузка модели Ollama

# Загрузка модели Gemma 3
docker exec ollama ollama pull gemma3n:e4b-it-fp16

# Проверка загруженных моделей
docker exec ollama ollama list

5. Настройка Authentik

  1. Войдите в Authentik (https://auth.iieasy.ru)
  2. Создайте OIDC Provider:
    • Redirect URI: https://odo.iieasy.ru/oauth/oidc/callback
    • Client ID и Client Secret скопируйте в .env
  3. Обновите OPENID_CONNECT_ISSUER в .env

6. Ребрендинг Open WebUI

После первого запуска Open WebUI выполните:

./scripts/rebrand.sh

Скрипт заменит:

  • Логотипы и favicon
  • Текстовые упоминания "Open WebUI" → "iiEasyWeb"
  • Отключит проверку обновлений
  • Удалит аналитику и телеметрию

7. Настройка API ключа Open WebUI

  1. Откройте https://odo.iieasy.ru
  2. Войдите через Authentik SSO
  3. Перейдите в Settings → Account → API Keys
  4. Создайте новый API ключ
  5. Добавьте ключ в .env как OPENWEBUI_API_KEY

8. Запуск воркера синхронизации Nextcloud

cd worker

# Установка зависимостей
pip install -r requirements.txt

# Настройка переменных окружения
cp .env.example .env
# Отредактируйте .env

# Запуск однократной синхронизации
python nextcloud_sync.py --once

# Или запуск в режиме daemon
python nextcloud_sync.py --daemon

Для production рекомендуется использовать systemd:

# Создайте /etc/systemd/system/iieasy-sync.service
sudo nano /etc/systemd/system/iieasy-sync.service
[Unit]
Description=iiEasy Nextcloud Sync Worker
After=network.target

[Service]
Type=simple
User=its
WorkingDirectory=/home/its/iiEasyWeb/worker
ExecStart=/usr/bin/python3 /home/its/iiEasyWeb/worker/nextcloud_sync.py --daemon
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable iieasy-sync
sudo systemctl start iieasy-sync

Переменные окружения

Основной .env

См. .env.example для полного списка переменных. Основные:

  • DOMAIN_OPENWEBUI - URL Open WebUI
  • DOMAIN_NEXTCLOUD - URL Nextcloud
  • DOMAIN_AUTHENTIK - URL Authentik
  • OAUTH_CLIENT_ID - Client ID из Authentik
  • OAUTH_CLIENT_SECRET - Client Secret из Authentik
  • OPENID_CONNECT_ISSUER - Issuer URL Authentik
  • QDRANT_API_KEY - API ключ Qdrant (сгенерировать)
  • OPENWEBUI_API_KEY - API ключ Open WebUI (создать после первого запуска)

worker/.env

  • NC_USER - Пользователь Nextcloud
  • NC_APP_PASSWORD - App Password (не основной пароль!)
  • NC_SCAN_PATHS - Пути для сканирования
  • OPENWEBUI_API_KEY - API ключ Open WebUI

Структура проекта

iiEasyWeb/
├── docker-compose.yml          # Основной compose файл
├── .env                         # Переменные окружения
├── .env.example                 # Шаблон переменных
├── .gitignore                   # Игнорируемые файлы
│
├── scripts/
│   └── rebrand_safe_final.sh   # ✅ Рекомендуемый скрипт ребрендинга (безопасный)
│   ├── rebrand.sh              # ⚠️ Старый скрипт (может ломать OAuth)
│   └── rebrand_fast.sh         # ⚠️ Быстрый скрипт (может ломать функциональность)
│
├── media/
│   ├── logo-light.svg          # Логотип светлая тема
│   ├── logo-dark.svg           # Логотип темная тема
│   └── favicon.svg             # Favicon
│
├── worker/
│   ├── nextcloud_sync.py       # Главный скрипт воркера
│   ├── config.py               # Конфигурация
│   ├── nextcloud_client.py     # WebDAV клиент
│   ├── openwebui_client.py     # Open WebUI API клиент
│   ├── document_processor.py   # Обработка документов
│   ├── requirements.txt        # Python зависимости
│   └── .env.example            # Шаблон для воркера
│
└── README.md                    # Эта документация

Сетевая архитектура

Все сервисы работают в Docker сети iieasy-ai и доступны только внутри сети, кроме Open WebUI, который доступен через reverse proxy.

Порты

  • Open WebUI: 3001 (внутренний) → Nginx → 443 (HTTPS)
  • Qdrant: 6333 (gRPC), 6334 (HTTP) - только внутри сети
  • SearXNG: 8080 - только внутри сети
  • Ollama: 11434 - только внутри сети

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

  • Все сервисы изолированы в Docker сети
  • Доступ к Qdrant только через API ключ
  • Open WebUI использует Authentik SSO для аутентификации
  • Воркер использует App Password для Nextcloud (не основной пароль)
  • CrowdSec и OPNsense фильтруют трафик на уровне reverse proxy

Поддерживаемые форматы файлов

Воркер синхронизации поддерживает:

  • PDF (.pdf) - извлечение текста через pypdf
  • DOCX (.docx, .doc) - извлечение текста через python-docx
  • Текстовые (.txt, .md, .markdown) - прямое чтение
  • CSV (.csv) - конвертация в текстовый формат

Файлы больше 100MB обрабатываются потоково с ограничением количества страниц.

Устранение неполадок

Open WebUI не подключается к Qdrant

  1. Проверьте, что Qdrant запущен: docker-compose ps qdrant
  2. Проверьте логи: docker-compose logs qdrant
  3. Убедитесь, что QDRANT_API_KEY установлен в .env
  4. Проверьте переменную QDRANT_URI=http://qdrant:6333

Ошибки аутентификации через Authentik

  1. Проверьте redirect URI в Authentik: https://odo.iieasy.ru/oauth/oidc/callback
  2. Убедитесь, что OPENID_CONNECT_ISSUER правильный
  3. Проверьте логи Open WebUI: docker-compose logs open-webui

Воркер не синхронизирует файлы

  1. Проверьте логи: tail -f worker/sync.log
  2. Убедитесь, что OPENWEBUI_API_KEY правильный
  3. Проверьте доступность Nextcloud: curl https://next.iieasy.ru
  4. Проверьте права доступа к путям в NC_SCAN_PATHS

Ollama не использует GPU

  1. Проверьте драйверы NVIDIA: nvidia-smi
  2. Установите nvidia-container-toolkit
  3. Перезапустите Docker: sudo systemctl restart docker
  4. Проверьте переменную NVIDIA_VISIBLE_DEVICES в .env

Лицензия

Внутренний проект iiEasy Research Center.

Поддержка

Для вопросов и проблем обращайтесь к команде разработки iiEasy.