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

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

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

Для успешного развертывания приложения необходимо выполнить следующие условия:

  • Операционная система: Ubuntu 22.04 или Ubuntu 24.04. Версия Ubuntu 25.04 не поддерживается из-за отсутствия официальной поддержки CUDA для не-LTS релизов.
  • Наличие видеокарты NVIDIA с установленными драйверами.
  • Права доступа root или возможность использования sudo для выполнения команд установки.
  • Установленный пакетный менеджер apt.
  • Доступ к интернету для загрузки образов Docker, драйверов и моделей.
  • Свободные порты 80 и 443 для работы веб-сервера и получения SSL-сертификатов.

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

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

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

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

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

  1. Подготовка системы и установка драйверов:
  2. Система обновляется через apt update и apt upgrade.
  3. Для Ubuntu 22.04 устанавливается пакет linux-generic-hwe-22.04 для обновления ядра.
  4. Устанавливается компилятор gcc.
  5. Скачивается и устанавливается репозиторий CUDA от NVIDIA, после чего устанавливаются пакеты cuda и cuda-toolkit.
  6. В файл ~/.bashrc добавляются переменные окружения PATH и LD_LIBRARY_PATH для CUDA.
  7. Модуль ядра nouveau удаляется, инициализируются модули NVIDIA.
  8. Проверяется работа драйверов командой nvidia-smi и nvcc -V.

  9. Настройка Docker для NVIDIA:

  10. Для Ubuntu 22.04 устанавливается пакет nvidia-docker2.
  11. Для Ubuntu 24.04 устанавливается пакет nvidia-container-toolkit.
  12. Сервис Docker перезапускается.

  13. Установка Ollama:

  14. Скрипт установки загружается и выполняется командой curl -fsSL https://ollama.com/install.sh | sh.
  15. Создается системный пользователь ollama.
  16. Файл сервиса /etc/systemd/system/ollama.service заменяется на настроенный шаблон.
  17. Демон systemd перезагружается, сервис ollama перезапускается и включается в автозагрузку.
  18. Скачивается модель qwen3:14b командой ollama pull qwen3:14b.

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

  20. Создается каталог /root/nginx.
  21. Генерируется файл compose.yml в директории /root/nginx.
  22. В конфигурационный файл Nginx добавляется строка proxy_pass http://open-webui:8080;.
  23. Запускаются контейнеры через docker compose up -d.

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

Приложение развертывается с использованием Docker Compose в директории /root/nginx.

Файл compose.yml определяет следующие сервисы:

  • open-webui:
  • Образ: ghcr.io/open-webui/open-webui:main.
  • Имя контейнера: open-webui.
  • Политика перезапуска: always.
  • Объемы: монтируется том open-webui в /app/backend/data для хранения данных.
  • Дополнительные хосты: host.docker.internal мапится на host-gateway.

  • nginx:

  • Образ: jonasal/nginx-certbot:latest.
  • Политика перезапуска: unless-stopped.
  • Порты: 80:80 и 443:443.
  • Переменные окружения: CERTBOT_EMAIL=hkadm@hostkey.com.
  • Файл переменных: /data/nginx/nginx-certbot.env.
  • Объемы:
    • nginx_secrets монтируется в /etc/letsencrypt.
    • /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d.
  • Зависимости: сервис зависит от open-webui.

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

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

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

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

  • Домен и конфигурация настраиваются через файлы в директории /data/nginx/user_conf.d/.
  • В блоке location / конфигурации добавляется правило проксирования:
    proxy_pass http://open-webui:8080;
    
  • Сертификаты хранятся в томе nginx_secrets, который монтируется в /etc/letsencrypt внутри контейнера.
  • Email для уведомлений от Let's Encrypt задается как hkadm@hostkey.com.

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

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

  • Директория /root/nginx имеет владельца root:root и права 0755.
  • Файл /root/nginx/compose.yml имеет владельца root:root и права 0644.
  • Файл сервиса /etc/systemd/system/ollama.service имеет владельца root:root и права 0644.
  • Пользователь ollama создается как системный пользователь для запуска сервиса Ollama.

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

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

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

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

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

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

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