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

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

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

Для корректной работы системы на сервере должны быть выполнены следующие условия: - Операционная система: Ubuntu. - Наличие прав суперпользователя (root) или возможность выполнения команд через sudo. - Установленный Docker Engine для запуска контейнеров. - Доступ к интернету для загрузки образов контейнеров и моделей. - Открытые порты: - 80 и 443 для работы веб-сервера Nginx и получения SSL-сертификатов. - 8080 для доступа к интерфейсу Open WebUI. - 11434 для локального доступа к API Ollama (внутри сети хоста).

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

Конфигурация и данные приложения размещаются в следующих директориях: - /root/nginx/ — каталог для конфигурации прокси-сервера и файла compose.yml. - /data/nginx/user_conf.d/ — директория для пользовательских конфигурационных файлов Nginx. - /data/nginx/nginx-certbot.env — файл переменных окружения для настройки Certbot. - /etc/systemd/system/ollama.service — файл конфигурации системного сервиса Ollama. - /usr/share/ollama/.ollama/models/ — хранилище загруженных моделей нейросетей. - /var/lib/docker/volumes/open-webui/ — том Docker для хранения данных приложения Open WebUI.

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

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

  1. Установка Ollama:
  2. Скачивается и выполняется скрипт установки с официального репозитория.
  3. Создается системный пользователь ollama.
  4. Загружается модель gpt-oss:20b через команду ollama pull.

  5. Настройка сервиса Ollama:

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

  8. Развертывание Open WebUI:

  9. Запускается контейнер Docker с образом ghcr.io/open-webui/open-webui:cuda.
  10. Контейнер получает доступ ко всем GPU устройствам (--gpus all).
  11. Данные приложения сохраняются в том open-webui.

  12. Настройка прокси-сервера:

  13. Создается каталог /root/nginx.
  14. Генерируется файл compose.yml для запуска Nginx с Certbot.
  15. В конфигурационный файл Nginx добавляется правило пересылки запросов на порт 8080.
  16. Запускается контейнер прокси-сервера через docker compose up -d.

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

В системе используются два типа контейнеров: сервис Open WebUI и прокси-сервер Nginx.

Контейнер Open WebUI: Запускается командой:

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
Параметры запуска: - Порт 8080 маппится на порт 8080 внутри контейнера. - Переменная OLLAMA_BASE_URLS указывает на адрес API Ollama через хост-машину. - Режим перезапуска установлен в always.

Контейнер Nginx с Certbot: Управляется файлом compose.yml в директории /root/nginx. Конфигурация включает: - Образ: jonasal/nginx-certbot:latest. - Режим сети: host. - Том nginx_secrets монтируется в /etc/letsencrypt для хранения сертификатов. - Директория /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d для загрузки пользовательских конфигов. - Переменная CERTBOT_EMAIL установлена на hkadm@hostkey.com.

Запуск осуществляется командой:

docker compose up -d
в директории /root/nginx.

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

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

  • Домен и сертификаты: Сертификаты запрашиваются и хранятся в томе nginx_secrets.
  • Маршрутизация: В конфигурационном файле Nginx (расположенном в /data/nginx/user_conf.d/) добавляется правило пересылки:
    proxy_pass http://127.0.0.1:8080;
    
    Это правило размещается внутри блока location /, перенаправляя весь трафик на локальный порт 8080, где работает Open WebUI.
  • Переменные окружения: Настройка email для Certbot и другие параметры загружаются из файла /data/nginx/nginx-certbot.env.

Базы данных

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

Права доступа и безопасность

  • Пользователи: Для работы Ollama создан системный пользователь ollama.
  • Файлы конфигурации:
  • Директория /root/nginx имеет права 0755 и принадлежит пользователю root.
  • Файл compose.yml имеет права 0644.
  • Сетевая безопасность:
  • Сервис Ollama настроен на прослушивание всех интерфейсов (0.0.0.0), но доступ к нему извне осуществляется только через прокси Nginx.
  • Переменная OLLAMA_ORIGINS установлена в *, разрешая запросы с любых источников для работы через прокси.
  • Брандмауэр: Требуется открыть порты 80 и 443 для внешнего доступа к веб-интерфейсу.

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

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

Управление сервисом Ollama: - Перезагрузка демона:

systemctl daemon-reload
- Перезапуск сервиса:
systemctl restart ollama
- Включение в автозагрузку:
systemctl enable ollama

Управление контейнером Open WebUI: - Проверка статуса:

docker inspect -f '{{.State.Status}}' open-webui
- Остановка и удаление (если требуется):
docker stop open-webui
docker rm open-webui

Управление прокси-сервером Nginx: - Запуск в фоновом режиме:

docker compose up -d
Команда выполняется из директории /root/nginx. - Остановка:
docker compose down

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