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

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

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

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

Необходимы следующие сетевые порты: - Порт 11434 для доступа к API Ollama. - Порт 8080 для веб-интерфейса Open WebUI. - Порты 80 и 443 для работы прокси-сервера Nginx и получения SSL-сертификатов через Certbot.

Если планируется использование GPU для ускорения работы моделей, на сервере должны быть установлены драйверы NVIDIA и доступ к видеокарте.

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

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

  • /root/nginx/ — каталог для конфигурации прокси-сервера Nginx и скрипта compose.yml.
  • /etc/nginx/user_conf.d/ — директория для пользовательских конфигурационных файлов Nginx.
  • /etc/letsencrypt/ — хранилище SSL-сертификатов и ключей (подключается как том nginx_secrets).
  • /etc/systemd/system/ollama.service — файл конфигурации системного сервиса Ollama.
  • /etc/docker/daemon.json — файл конфигурации демон-процесса Docker для настройки runtime NVIDIA.

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

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

Установка Ollama

Приложение Ollama устанавливается с использованием официального скрипта установки:

curl -fsSL https://ollama.com/install.sh | sh
После установки создается системный пользователь ollama.

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

Файл сервиса /etc/systemd/system/ollama.service модифицируется для добавления следующих переменных окружения: - OLLAMA_HOST=0.0.0.0 — позволяет принимать подключения извне. - OLLAMA_ORIGINS=* — разрешает CORS-запросы со всех источников. - LLAMA_FLASH_ATTENTION=1 — включает оптимизацию внимания для ускорения работы.

После изменения конфигурации сервис перезагружается и активируется для запуска при старте системы.

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

В систему загружается модель gemma3:27b с помощью команды:

ollama pull gemma3:27b

Настройка Docker для NVIDIA GPU

Для работы с видеокартами NVIDIA устанавливаются пакеты nvidia-container-toolkit и nvidia-container-runtime. Конфигурация Docker обновляется путем создания файла /etc/docker/daemon.json с указанием nvidia в качестве runtime по умолчанию. Сервис Docker перезапускается для применения изменений.

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

Развертывание веб-интерфейса Open WebUI и прокси-сервера осуществляется через Docker.

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

Контейнер запускается с использованием образа ghcr.io/open-webui/open-webui:cuda. Команда запуска включает следующие параметры: - Порт 8080 маппится на порт 8080 контейнера. - Используется флаг --gpus all для доступа ко всем доступным GPU. - Добавляется хост host.docker.internal для связи с локальными сервисами. - Монтируется том open-webui в директорию /app/backend/data для хранения данных. - Устанавливаются переменные окружения: - ENV=dev - OLLAMA_BASE_URLS=http://host.docker.internal:11434 - Контейнер настроен на автоматический перезапуск (--restart always).

Команда запуска:

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

Запуск прокси-сервера Nginx и Certbot

Прокси-сервер развертывается через docker compose в директории /root/nginx. Используется образ jonasal/nginx-certbot:latest.

Конфигурация compose.yml включает: - Том nginx_secrets для хранения сертификатов Let's Encrypt. - Монтирование директории /data/nginx/user_conf.d для пользовательских конфигов. - Режим сети host. - Переменную CERTBOT_EMAIL=hkadm@hostkey.com. - Файл переменных окружения /data/nginx/nginx-certbot.env.

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

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

Базы данных

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

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

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

Настройки прокси: - Изображение: jonasal/nginx-certbot:latest. - Электронная почта для сертификатов: hkadm@hostkey.com. - Конфигурация пользователя размещается в /data/nginx/user_conf.d. - Сертификаты хранятся в томе nginx_secrets, который подключается к /etc/letsencrypt.

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

  • Директория /root/nginx создается с правами 0755 и владельцем root.
  • Файл compose.yml имеет права 0644 и владельца root.
  • Сервис Ollama работает от имени системного пользователя ollama.
  • Доступ к API Ollama разрешен для всех источников (OLLAMA_ORIGINS=*), что необходимо для работы веб-интерфейса.
  • Контейнер Open WebUI имеет доступ ко всем GPU устройствам через флаг --gpus all.

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

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

Управление сервисом Ollama

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

Управление контейнерами

  • Запуск прокси-сервера:
    cd /root/nginx
    docker compose up -d
    
  • Остановка прокси-сервера:
    cd /root/nginx
    docker compose down
    
  • Остановка контейнера Open WebUI:
    docker stop open-webui
    
  • Удаление контейнера Open WebUI:
    docker rm -f open-webui
    

Обновление конфигурации прокси-сервера требует изменения файла compose.yml или переменных окружения, после чего необходимо выполнить перезапуск контейнеров через docker compose up -d.

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