Перейти к содержанию

Обзор развертывания Open WebUI на сервере

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

Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. Требуется наличие прав суперпользователя для установки пакетов и управления системными службами.

Необходимые сетевые порты: - Порт 8080 для веб-интерфейса приложения. - Порт 11434 для локального доступа к сервису Ollama. - Порты 80 и 443 для работы прокси-сервера Nginx и получения SSL-сертификатов.

Структура файлов и каталогов

Конфигурация и данные приложения распределены по следующим директориям:

  • /root/nginx/ — каталог для конфигурации прокси-сервера и запуска контейнеров.
  • /root/nginx/compose.yml — файл конфигурации Docker Compose для Nginx и Certbot.
  • /data/nginx/ — хранилище данных для прокси-сервера.
  • /data/nginx/nginx-certbot.env — файл переменных окружения для Certbot.
  • /data/nginx/user_conf.d/ — директория с пользовательскими конфигурациями Nginx.
  • /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf — файл конфигурации конкретного хоста с настройками проксирования.
  • /etc/systemd/system/ollama.service — файл конфигурации системной службы Ollama.
  • /etc/systemd/system/ollama.service.bak — резервная копия исходного файла службы Ollama.

Процесс установки приложения

Установка выполняется в несколько этапов, включающих настройку бэкенда, запуск контейнера интерфейса и настройку прокси-сервера.

  1. Установка Ollama:
  2. Скачивание и запуск скрипта установки: curl -fsSL https://ollama.com/install.sh | sh.
  3. Создание системного пользователя ollama.

  4. Настройка службы Ollama:

  5. Создание резервной копии файла службы.
  6. Добавление переменных окружения в файл /etc/systemd/system/ollama.service:
    • OLLAMA_HOST=0.0.0.0
    • OLLAMA_ORIGINS=*
    • LLAMA_FLASH_ATTENTION=1
  7. Перезагрузка демона systemd и перезапуск службы ollama.

  8. Загрузка модели:

  9. Скачивание модели phi4 командой ollama pull phi4.

  10. Запуск контейнера Open WebUI:

  11. Использование образа ghcr.io/open-webui/open-webui:cuda.
  12. Контейнер запускается с доступом ко всем GPU (--gpus all).
  13. Данные сохраняются в том open-webui по пути /app/backend/data.
  14. Переменные окружения:

    • ENV=dev
    • OLLAMA_BASE_URLS=http://host.docker.internal:11434
  15. Настройка прокси-сервера:

  16. Создание директории /root/nginx.
  17. Генерация файла compose.yml в директории /root/nginx.
  18. Обновление конфигурации Nginx в файле /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf для перенаправления трафика на http://127.0.0.1:8080.
  19. Запуск контейнеров Nginx и Certbot через docker compose up -d в директории /root/nginx.

Базы данных

Приложение Open WebUI использует встроенное хранилище данных, которое сохраняется в Docker-томе open-webui. Данные физически размещаются в контейнере по пути /app/backend/data. Отдельная внешняя база данных не подключается.

Контейнеры Docker и их запуск

В системе развернуты два типа контейнеров:

  1. Контейнер Open WebUI:
  2. Имя контейнера: open-webui.
  3. Образ: ghcr.io/open-webui/open-webui:cuda.
  4. Команда запуска:
    docker run -d -p 8080:8080 --gpus all \
      --add-host=host.docker.internal:host-gateway \
      -v open-webui:/app/backend/data \
      --name open-webui \
      -e ENV='dev' \
      -e OLLAMA_BASE_URLS='http://host.docker.internal:11434' \
      --restart always ghcr.io/open-webui/open-webui:cuda
    
  5. Политика перезапуска: always.

  6. Контейнеры Nginx и Certbot:

  7. Управляются через Docker Compose в директории /root/nginx.
  8. Файл конфигурации: /root/nginx/compose.yml.
  9. Образ Nginx: jonasal/nginx-certbot:latest.
  10. Режим сети: host.
  11. Подключенные тома:
    • nginx_secrets (внешний том) монтируется в /etc/letsencrypt.
    • /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d.
  12. Переменная окружения для email: CERTBOT_EMAIL=hkadm@hostkey.com.
  13. Файл переменных окружения: /data/nginx/nginx-certbot.env.

Прокси серверы

Для обработки входящего трафика и обеспечения SSL-шифрования используется контейнер Nginx с Certbot.

  • Образ: jonasal/nginx-certbot:latest.
  • Домен и SSL: Настройка осуществляется автоматически через Certbot с использованием email hkadm@hostkey.com.
  • Проксирование:
  • Входящий трафик на домен перенаправляется на локальный адрес http://127.0.0.1:8080.
  • Конфигурация проксирования находится в файле /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf.
  • В блоке location / добавляется директива proxy_pass http://127.0.0.1:8080;.

Настройки прав

Права доступа к файлам и директориям настроены следующим образом:

  • Директория /root/nginx имеет права 0755, владелец root, группа root.
  • Файл /root/nginx/compose.yml имеет права 0644, владелец root, группа root.
  • Служба Ollama работает от имени системного пользователя ollama.
  • Контейнер Open WebUI запускается с привилегиями, необходимыми для доступа к GPU и монтирования томов.

Запуск, остановка и обновление

Управление сервисами осуществляется через системные утилиты и Docker.

Управление службой Ollama: - Перезагрузка конфигурации systemd: systemctl daemon-reload. - Перезапуск службы: systemctl restart ollama. - Включение автозапуска: systemctl enable ollama.

Управление контейнером Open WebUI: - Проверка статуса: docker inspect -f '{{.State.Status}}' open-webui. - Остановка: docker stop open-webui. - Запуск: docker start open-webui. - Перезапуск: docker restart open-webui.

Управление прокси-сервером (Nginx и Certbot): - Запуск контейнеров: docker compose up -d в директории /root/nginx. - Остановка контейнеров: docker compose down в директории /root/nginx. - Обновление конфигурации требует пересоздания файла compose.yml и перезапуска контейнеров.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×