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

295 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. Клонирование и настройка
```bash
cd /home/its/iiEasyWeb
cp .env.example .env
# Отредактируйте .env и заполните все необходимые переменные
```
### 2. Генерация API ключей
```bash
# Генерация QDRANT_API_KEY
openssl rand -hex 32
# Добавьте результат в .env
```
### 3. Запуск инфраструктуры
```bash
# Запуск всех сервисов
docker-compose up -d
# Проверка статуса
docker-compose ps
# Просмотр логов
docker-compose logs -f
```
### 4. Загрузка модели Ollama
```bash
# Загрузка модели 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 выполните:
```bash
./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
```bash
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:
```bash
# Создайте /etc/systemd/system/iieasy-sync.service
sudo nano /etc/systemd/system/iieasy-sync.service
```
```ini
[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
```
```bash
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.