12 KiB
Инструкция по развёртыванию iiEasyWeb
Пошаговое развёртывание: Git, Docker, ребрендинг, поиск (SearXNG), воркер Nextcloud (Python).
Требования
- Docker и Docker Compose
- (Опционально) NVIDIA GPU и драйверы — для Ollama
- Доступ к Gitea (например
192.168.88.165:3000) - Nextcloud и Authentik — при использовании воркера и OAuth
Архитектура
┌─────────────────────────────────────────────────────────────┐
│ 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) │
└───────────────┘
1. Git — отправка кода в репозиторий
Сервер Gitea: 192.168.88.165, веб-интерфейс на порту 3000.
Репозиторий: ars/iiEsaywebUI.
Что не должно попадать в Git
.env,worker/.envworker/.venv, секретные ключи, токены- Убедитесь, что в
.gitignoreесть эти пути (в проекте уже настроено).
Вариант A — SSH
-
Настройте
~/.ssh/config(при необходимости укажите порт SSH сервера, если не 22):Host 192.168.88.165 HostName 192.168.88.165 User git Port 22 -
URL репозитория:
git@192.168.88.165:ars/iiEsaywebUI.git
Вариант B — HTTPS с токеном
- URL:
https://192.168.88.165:3000/ars/iiEsaywebUI.git - При push: логин
ars, пароль — подставьте свой токен из Gitea (или пароль учётной записи, в зависимости от настроек Gitea). Не храните токен в URL в документации.
Шаги (если репозиторий ещё не инициализирован)
cd /home/its/iiEasyWeb
git init
git remote add origin git@192.168.88.165:ars/iiEsaywebUI.git
# или HTTPS: git remote add origin https://192.168.88.165:3000/ars/iiEsaywebUI.git
git add .
git status # проверьте, что нет .env и секретов
git commit -m "Initial deployment setup"
git branch -M main
git push -u origin main
Если ветка по умолчанию на Gitea — master, используйте git push -u origin master.
2. Docker — поднятие стека
Файлы: корень проекта — docker-compose.yml, .env.example.
Шаги
-
Каталог и конфиг:
cd /home/its/iiEasyWeb cp .env.example .env -
Редактирование
.env:-
Домены:
DOMAIN_OPENWEBUI,DOMAIN_NEXTCLOUD,DOMAIN_AUTHENTIK, при необходимостиDOMAIN_VAULTWARDEN. -
Authentik:
OAUTH_CLIENT_ID,OAUTH_CLIENT_SECRET,OPENID_CONNECT_ISSUER. -
Qdrant — сгенерировать ключ и прописать в
QDRANT_API_KEY:openssl rand -hex 32 -
Остальное по необходимости (Nextcloud для воркера, Vaultwarden, Ollama). Для GPU:
NVIDIA_VISIBLE_DEVICES=all.
-
-
Запуск:
docker compose up -d docker compose ps -
Модель Ollama (после старта контейнера ollama):
docker exec ollama ollama pull gemma3n:e4b-it-fp16 docker exec ollama ollama list -
Проверка: Open WebUI доступен на порту 3001 (маппинг
3001:8080вdocker-compose.yml), т.е.http://localhost:3001или вашDOMAIN_OPENWEBUI.
3. Ребрендинг
Используйте только скрипт: scripts/rebrand_safe_final.sh. Старый rebrand.sh может ломать OAuth.
Медиафайлы
Поместите в каталог media/:
- Обязательно:
media/logo.png - По желанию:
favicon.png,logo-dark.svg,logo-light.svg
Запуск ребрендинга
Контейнер open-webui должен быть запущен.
cd /home/its/iiEasyWeb
sudo ./scripts/rebrand_safe_final.sh
После обновления образа Open WebUI
docker compose pull
docker compose up -d
sudo ./scripts/rebrand_safe_final.sh
Проверка
Очистите кеш браузера и откройте http://localhost:3001 или DOMAIN_OPENWEBUI.
Подробнее: QUICK_START.md, REBRAND_SOLUTION.md.
4. Поиск (SearX / SearXNG)
Поиск уже включён в docker-compose.yml: сервис searxng, Open WebUI настроен на него (RAG_WEB_SEARCH_ENGINE=searxng, SEARXNG_QUERY_URL=...&format=json, ENABLE_WEB_SEARCH=true).
Настройка при развёртывании
-
Секретный ключ SearXNG
Вsearxng/settings.ymlзаменитеCHANGE_ME_SECRET_KEYна свою строку (любая случайная строка). Иначе в логах возможны предупреждения. -
Проверка после старта:
docker exec open-webui curl -s "http://searxng:8080/search?q=test&format=json" | head -c 200 -
Если появляется ошибка User-Agent (Invalid leading whitespace):
Используйте проверенный скрипт fix_user_agent_final.sh. Вdocker-compose.ymlдля сервисаopen-webuiдобавьте:- volume:
./scripts/fix_user_agent_final.sh:/fix_user_agent_final.sh:ro - entrypoint:
["/bin/sh", "-c", "sh /fix_user_agent_final.sh && exec /bin/bash /app/start.sh"]
Затем перезапустите:docker compose restart open-webui.
- volume:
-
Диагностика:
sudo ./scripts/diagnose_search.shПри проблемах:
sudo ./scripts/fix_search_complete.sh.
Подробнее: SEARXNG_SETUP.md.
5. Nextcloud Python (воркер)
Воркер синхронизации Nextcloud → Open WebUI/Qdrant запускается на хосте (не в Docker).
Каталог: worker/. Файлы: nextcloud_sync.py, .env.example, requirements.txt.
Переменные окружения
cd /home/its/iiEasyWeb/worker
cp .env.example .env
Заполните в .env:
- Nextcloud:
DOMAIN_NEXTCLOUD,NC_USER,NC_APP_PASSWORD, при необходимостиNC_SCAN_PATHS. - Open WebUI:
DOMAIN_OPENWEBUI,OPENWEBUI_API_KEY(ключ создаётся в Open WebUI: Settings → Account → API Keys). - По желанию:
SYNC_INTERVAL,MAX_FILE_SIZE,LOG_LEVEL.
Важно: для Nextcloud используйте пароль приложения (App Password), не основной пароль учётной записи.
Установка и запуск
pip install -r requirements.txt
python nextcloud_sync.py --once
Постоянный режим (daemon):
python nextcloud_sync.py --daemon
Production (systemd)
Создайте файл /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
Замените User=its и пути при необходимости. Затем:
sudo systemctl daemon-reload
sudo systemctl enable iieasy-sync
sudo systemctl start iieasy-sync
Порядок выполнения
- Git — инициализация репозитория, remote, первый push (без
.envи секретов). - Docker —
cp .env.example .env, правка.env, генерацияQDRANT_API_KEY,docker compose up -d, загрузка модели Ollama. - Первый вход в Open WebUI (при необходимости настройка Authentik OIDC), создание API ключа в Settings → Account → API Keys.
- Ребрендинг — файлы в
media/,sudo ./scripts/rebrand_safe_final.sh. - Поиск — правка
searxng/settings.yml(secret_key), при ошибке User-Agent — entrypoint сfix_user_agent_final.sh; при проблемах —diagnose_search.sh,fix_search_complete.sh. - Nextcloud Python — настройка
worker/.env,pip install -r requirements.txt, проверка--once, затем--daemonили systemd.
Замечания
- Токен/пароль Gitea: в документации не указывайте токен в открытом виде; используйте «подставить свой токен из Gitea» или SSH.
- Имя репозитория: на сервере используется
iiEsaywebUI(с одной «a») — в URL remote указывайте так же. - Порт SSH: если Gitea слушает SSH на порту не 22 (например 3000), укажите в
~/.ssh/configдля хостаPort 3000; URL остаётсяgit@192.168.88.165:ars/iiEsaywebUI.git.