Обзор развертывания 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.
Процесс установки приложения¶
Установка выполняется в несколько этапов, включающих подготовку системы, установку драйверов и развертывание сервисов.
- Подготовка системы и установка драйверов:
- Система обновляется через
apt updateиapt upgrade. - Для Ubuntu 22.04 устанавливается пакет
linux-generic-hwe-22.04для обновления ядра. - Устанавливается компилятор
gcc. - Скачивается и устанавливается репозиторий CUDA от NVIDIA, после чего устанавливаются пакеты
cudaиcuda-toolkit. - В файл
~/.bashrcдобавляются переменные окруженияPATHиLD_LIBRARY_PATHдля CUDA. - Модуль ядра
nouveauудаляется, инициализируются модули NVIDIA. -
Проверяется работа драйверов командой
nvidia-smiиnvcc -V. -
Настройка Docker для NVIDIA:
- Для Ubuntu 22.04 устанавливается пакет
nvidia-docker2. - Для Ubuntu 24.04 устанавливается пакет
nvidia-container-toolkit. -
Сервис Docker перезапускается.
-
Установка Ollama:
- Скрипт установки загружается и выполняется командой
curl -fsSL https://ollama.com/install.sh | sh. - Создается системный пользователь
ollama. - Файл сервиса
/etc/systemd/system/ollama.serviceзаменяется на настроенный шаблон. - Демон
systemdперезагружается, сервисollamaперезапускается и включается в автозагрузку. -
Скачивается модель
qwen3:14bкомандойollama pull qwen3:14b. -
Развертывание Open WebUI и Nginx:
- Создается каталог
/root/nginx. - Генерируется файл
compose.ymlв директории/root/nginx. - В конфигурационный файл Nginx добавляется строка
proxy_pass http://open-webui:8080;. - Запускаются контейнеры через
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.
Запуск контейнеров выполняется командой:
в директории/root/nginx. Прокси серверы¶
В качестве прокси-сервера используется контейнер Nginx с поддержкой Certbot для автоматического получения и обновления SSL-сертификатов.
- Домен и конфигурация настраиваются через файлы в директории
/data/nginx/user_conf.d/. - В блоке
location /конфигурации добавляется правило проксирования: - Сертификаты хранятся в томе
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:
- Перезапуск сервиса: - Включение в автозагрузку:Управление контейнерами Open WebUI и Nginx: - Запуск контейнеров:
Команда выполняется в директории/root/nginx. - Остановка контейнеров: - Обновление образов и перезапуск: