Обзор развертывания 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 устанавливается с использованием официального скрипта установки:
После установки создается системный пользовательollama. Настройка сервиса Ollama¶
Файл сервиса /etc/systemd/system/ollama.service модифицируется для добавления следующих переменных окружения: - OLLAMA_HOST=0.0.0.0 — позволяет принимать подключения извне. - OLLAMA_ORIGINS=* — разрешает CORS-запросы со всех источников. - LLAMA_FLASH_ATTENTION=1 — включает оптимизацию внимания для ускорения работы.
После изменения конфигурации сервис перезагружается и активируется для запуска при старте системы.
Загрузка модели¶
В систему загружается модель 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.
Запуск выполняется командой:
в директории/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:
- Перезапуск и включение автозапуска:
Управление контейнерами¶
- Запуск прокси-сервера:
- Остановка прокси-сервера:
- Остановка контейнера Open WebUI:
- Удаление контейнера Open WebUI:
Обновление конфигурации прокси-сервера требует изменения файла compose.yml или переменных окружения, после чего необходимо выполнить перезапуск контейнеров через docker compose up -d.