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

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

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

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

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

Конфигурационные файлы и данные приложения размещаются в следующих директориях: - /root/nginx/ — каталог для конфигурации прокси-сервера и скрипта docker compose. - /root/nginx/compose.yml — файл конфигурации для запуска контейнеров Nginx и Certbot. - /data/nginx/ — каталог для хранения данных Nginx. - /data/nginx/nginx-certbot.env — файл переменных окружения для Certbot. - /data/nginx/user_conf.d/ — каталог с пользовательскими конфигурациями виртуальных хостов. - /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. Загружается модель llama3.3 с помощью команды ollama pull llama3.3.

  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. Контейнер привязывается к порту 8080 и получает доступ ко всем GPU (--gpus all).
  11. Данные приложения сохраняются в том open-webui по пути /app/backend/data.
  12. Переменная окружения OLLAMA_BASE_URLS указывает на адрес http://host.docker.internal:11434.

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

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

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

В системе используются следующие контейнеры:

Контейнер 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 контейнера. - Используется том open-webui для хранения данных. - Установлен флаг --restart always для автоматического перезапуска. - Переменная ENV установлена в значение dev.

Контейнеры Nginx и Certbot: Управляются через файл docker compose в директории /root/nginx. Конфигурация включает: - Образ jonasal/nginx-certbot:latest. - Режим сети host. - Том nginx_secrets для хранения сертификатов Let's Encrypt. - Монтирование каталога /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, который монтируется в /etc/letsencrypt.
  • Конфигурация хоста: Настройка проксирования осуществляется в файле /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf.
  • Правила маршрутизации:
  • В блоке location / удаляется существующая строка proxy_pass.
  • Добавляется новая строка proxy_pass http://127.0.0.1:8080;, перенаправляющая трафик на локальный контейнер Open WebUI.

Базы данных

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

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

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

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

Управление службами и контейнерами осуществляется следующими командами:

Управление службой 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 rm open-webui

Управление прокси-сервером (Nginx/Certbot): - Запуск контейнеров:

cd /root/nginx
docker compose up -d
- Остановка контейнеров:
cd /root/nginx
docker compose down
- Обновление конфигурации и перезапуск:
cd /root/nginx
docker compose up -d

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