Обзор развертывания Open WebUI и Ollama на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется Linux-сервер с операционной системой Ubuntu 22.04 или Ubuntu 24.04. Ubuntu 25.04 не поддерживается из-за отсутствия официальной поддержки CUDA от NVIDIA для релизов, не являющихся LTS (Long Term Support). Для установки драйверов, настройки сервисов и управления контейнерами система должна иметь права root.
-
Операционная система: Ubuntu 22.04 или Ubuntu 24.04.
-
Права доступа: Доступ root или права
sudo. -
Аппаратное обеспечение: Видеокарта NVIDIA с совместимыми драйверами для ускорения CUDA.
-
Сеть: Доступ в интернет для загрузки пакетов и моделей.
-
Порты: Порты 80 и 443 должны быть открыты для работы обратного прокси и завершения SSL-соединений.
FQDN финальной панели¶
Приложение доступно через домен hostkey.in. Полное доменное имя (FQDN) формируется по следующему шаблону: ollama<Server ID>.hostkey.in
Сервис слушает порт 443 для HTTPS-трафика.
Структура файлов и каталогов¶
Развертывание использует специфические директории для конфигурации, хранения данных и сертификатов:
-
Конфигурация Nginx:
/data/nginx/user_conf.d/ -
Файл compose для Nginx:
/root/nginx/compose.yml -
Переменные окружения Nginx:
/data/nginx/nginx-certbot.env -
Юнит-файл сервиса Ollama:
/etc/systemd/system/ollama.service -
Резервная копия Ollama:
/etc/systemd/system/ollama.service.bak -
Томы Docker:
-
nginx_secrets: Хранит сертификаты Let's Encrypt. -
open-webui: Хранит данные бэкенда приложения.
Процесс установки приложения¶
Установка включает настройку операционной системы, установку драйверов NVIDIA и CUDA, конфигурирование Docker для поддержки GPU, а также развертывание сервиса Ollama и контейнера Open WebUI.
-
Подготовка системы: Система обновляется, а ядро обновляется до стека HWE (Hardware Enablement), если используется Ubuntu 22.04.
-
Установка CUDA и драйверов:
-
Устанавливается компилятор GCC.
-
Устанавливаются ключевое кольцо (keyring) и набор инструментов CUDA в зависимости от версии релиза Ubuntu.
-
Переменные окружения для CUDA добавляются в файл
~/.bashrc. -
Удаляется модуль ядра
nouveau, инициализируются драйверы NVIDIA.
-
-
Поддержка GPU в Docker:
-
На Ubuntu 22.04 устанавливается
nvidia-docker2. -
На Ubuntu 24.04 устанавливается
nvidia-container-toolkit. -
Сервис Docker перезапускается для применения изменений.
-
-
Установка Ollama:
-
Бинарный файл Ollama устанавливается через официальный скрипт установки.
-
Создается системный пользователь с именем
ollama. -
Скачивается модель по умолчанию
qwen3:14b.
-
-
Конфигурация сервиса:
-
Генерируется и активируется юнит-файл systemd
ollama.service. -
Сервис перезапускается для применения новой конфигурации.
-
Права доступа и безопасность¶
Безопасность обеспечивается через обратный прокси и изоляцию контейнеров.
-
Межсетевой экран (Firewall): Порты 80 и 443 открыты для контейнера Nginx для обработки входящего трафика.
-
Изоляция пользователей: Сервис Ollama работает под выделенным системным пользователем и группой
ollama. -
SSL/TLS: Сертификаты SSL управляются автоматически контейнером
nginx-certbotс использованием Let's Encrypt. -
Сетевые ограничения: Сервис Ollama настроен на прослушивание адреса
0.0.0.0, но внешний доступ к нему осуществляется только через прокси Nginx.
Базы данных¶
Приложение Open WebUI хранит свои данные внутри тома Docker с именем open-webui. Этот том маппится на путь внутри контейнера /app/backend/data. Внешний сервер базы данных не настраивается; сохранность данных обеспечивается томом Docker.
Контейнеры Docker и их развертывание¶
Два основных контейнера Docker развертываются с помощью docker compose:
-
Open WebUI:
-
Образ:
ghcr.io/open-webui/open-webui:main -
Имя контейнера:
open-webui -
Политика перезапуска:
always -
Томы: Том
open-webuiмонтируется в/app/backend/data. -
Хосты: Добавляется
host.docker.internal, указывающий на шлюз хоста.
-
-
Прокси Nginx:
-
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Порты: Порты хоста 80 и 443 маппятся на порты контейнера 80 и 443.
-
Томы:
-
nginx_secretsмонтируется в/etc/letsencrypt. -
Директория хоста
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.d.
-
-
Зависимости: Зависит от сервиса
open-webui.
-
Развертывание управляется командой docker compose, выполняемой в директории /root/nginx.
Прокси-серверы¶
Nginx выступает в роли обратного прокси и терминала SSL для приложения.
-
Расположение конфигурации:
/data/nginx/user_conf.d/ollama<Server ID>.hostkey.in.conf -
Проксирование (Proxy Pass): Трафик перенаправляется из блока location Nginx в контейнер Open WebUI по адресу
http://open-webui:8080. -
Управление SSL: Контейнер
nginx-certbotавтоматически обрабатывает генерацию и обновление сертификатов. -
Окружение: Прокси использует электронную почту
hkadm@hostkey.comдля уведомлений от Let's Encrypt.
Настройки прав доступа¶
Права доступа к файлам и директориям настроены следующим образом:
-
Директория Nginx:
/root/nginxпринадлежитroot:rootс правами0755. -
Файл compose:
/root/nginx/compose.ymlпринадлежитroot:rootс правами0644. -
Файл сервиса Ollama:
/etc/systemd/system/ollama.serviceпринадлежитroot:rootс правами0644. -
Пользователь Ollama: Пользователь
ollamaявляется системным пользователем, используемым для запуска сервиса Ollama.
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации и данные находятся по следующим путям:
-
Compose для Nginx:
/root/nginx/compose.yml -
Конфигурация пользователя Nginx:
/data/nginx/user_conf.d/ollama<Server ID>.hostkey.in.conf -
Переменные окружения Nginx:
/data/nginx/nginx-certbot.env -
Сервис Ollama:
/etc/systemd/system/ollama.service -
Данные Ollama: Управляются томом Docker
open-webui.
Доступные порты для подключения¶
Следующие порты доступны для внешних и внутренних подключений:
-
Порт 443: HTTPS-трафик для интерфейса Open WebUI через Nginx.
-
Порт 80: HTTP-трафик для перенаправления SSL и валидации Let's Encrypt.
-
Порт 3000: Внутренний порт, определенный в конфигурации (не открыт для внешнего доступа).
-
Порт 8080: Внутренний порт, используемый контейнером Open WebUI, проксируемый Nginx.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через systemd для Ollama и Docker Compose для веб-интерфейса.
-
Сервис Ollama:
-
Запуск:
systemctl start ollama -
Остановка:
systemctl stop ollama -
Перезапуск:
systemctl restart ollama -
Включение при загрузке:
systemctl enable ollama -
Контейнеры Docker (Open WebUI и Nginx):
-
Запуск/Обновление:
docker compose up -d(выполняется в/root/nginx) -
Остановка:
docker compose down(выполняется в/root/nginx) -
Просмотр логов:
docker compose logs -f(выполняется в/root/nginx)