Обзор развертывания Open-WebUI с Gemma3:27B на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется операционная система на базе Linux, в частности Ubuntu, с правами root для управления системными службами и контейнерами Docker. Сервер должен иметь доступ к интернету для загрузки образов Docker и весов модели. Для оптимальной производительности требуется оборудование NVIDIA GPU, а также установленный NVIDIA Container Toolkit для обеспечения ускорения GPU внутри контейнеров Docker.
Следующие порты должны быть доступны и открыты в межсетевом экране (firewall) сервера:
-
Порт
443для внешнего доступа по HTTPS. -
Порт
8080для внутренней коммуникации между веб-интерфейсом и бэкендом. -
Порт
11434для внутреннего API службы Ollama.
FQDN финальной панели¶
Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN): gemma<Server ID>.hostkey.in:443
Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера. Доменная зона настроена как hostkey.in с префиксом gemma.
Структура файлов и каталогов¶
Развертывание использует следующую структуру каталогов для файлов конфигурации, хранения данных и сертификатов:
| Путь к каталогу | Назначение |
|---|---|
/root/nginx | Содержит конфигурацию Docker Compose для прокси Nginx и Certbot. |
/root/nginx/compose.yml | Файл Docker Compose, определяющий службу Nginx. |
/etc/systemd/system/ollama.service | Файл единицы systemd для службы Ollama. |
/etc/systemd/system/ollama.service.bak | Резервная копия исходного файла службы Ollama. |
/etc/docker/daemon.json | Конфигурация демона Docker для среды выполнения NVIDIA. |
/data/nginx/nginx-certbot.env | Файл окружения для конфигурации Nginx и Certbot. |
/data/nginx/user_conf.d | Каталог для пользовательских конфигураций Nginx. |
/etc/letsencrypt | Точка монтирования для SSL-сертификатов, управляемых Certbot. |
Процесс установки приложения¶
Стек приложения состоит из трех основных компонентов: Ollama для вывода модели (inference), Open-WebUI для пользовательского интерфейса и Nginx с Certbot для обратного прокси и завершения SSL-соединений.
-
Установка Ollama: Служба Ollama устанавливается с использованием официального скрипта установки. Служба настроена на прослушивание всех сетевых интерфейсов (
0.0.0.0) и разрешает все источники (origins). -
Загрузка модели: Модель
gemma3:27bзагружается непосредственно в службу Ollama. -
Настройка Docker и NVIDIA: Docker устанавливается и настраивается для использования среды выполнения контейнеров NVIDIA. Устанавливаются пакеты
nvidia-container-toolkitиnvidia-container-runtimeдля обеспечения передачи GPU (GPU passthrough). -
Развертывание Open-WebUI: Контейнер Open-WebUI запускается с поддержкой CUDA, с маппингом внутреннего порта
8080и подключением к службе Ollama, работающей на хосте. -
Развертывание прокси: Контейнер Nginx с Certbot развертывается через Docker Compose для обработки SSL-сертификатов и маршрутизации трафика к внутренним службам.
Права доступа и безопасность¶
Система полагается на пользователя root для первоначальной настройки и управления контейнерами Docker и службами systemd. Системный пользователь ollama создается для управления службой Ollama.
Меры безопасности включают:
-
Шифрование SSL/TLS принудительно применяется через Nginx и Certbot для всего внешнего трафика на порту
443. -
Служба Ollama настроена с параметром
OLLAMA_ORIGINS=*для разрешения подключений от веб-интерфейса. -
Контейнеры Docker изолированы, с использованием специфических монтируемых томов (volume mounts) для сохранения данных.
Базы данных¶
Приложение Open-WebUI хранит свои данные в томе Docker с именем open-webui. Этот том монтируется в /app/backend/data внутри контейнера. Внешний сервер базы данных не требуется; приложение использует внутреннюю базу данных SQLite, управляемую внутри тома контейнера.
Контейнеры Docker и их развертывание¶
Развертывание использует следующие контейнеры Docker:
-
Open-WebUI:
-
Образ:
ghcr.io/open-webui/open-webui:cuda -
Имя:
open-webui -
Порты: Маппинг порта хоста
8080на порт контейнера8080. -
GPU: Настроен с параметром
--gpus allдля ускорения CUDA. -
Переменные окружения:
-
ENV: Установлено вdev. -
OLLAMA_BASE_URLS: Установлено вhttp://host.docker.internal:11434.
-
-
Томы: Монтирует том
open-webuiв/app/backend/data. -
Политика перезапуска: Установлена в
always.
-
-
Nginx-Certbot:
-
Образ:
jonasal/nginx-certbot:latest -
Метод развертывания: Управляется через
docker composeв каталоге/root/nginx. -
Режим сети:
host. -
Томы:
-
nginx_secrets(внешний) монтируется в/etc/letsencrypt. -
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.d.
-
-
Окружение: Использует
CERTBOT_EMAIL=hkadm@hostkey.comи загружает конфигурацию из/data/nginx/nginx-certbot.env.
-
Прокси-серверы¶
Nginx действует как обратный прокси для приложения, обрабатывая завершение SSL-соединений через Certbot. Прокси настроен на прослушивание порта 443 для внешнего трафика и маршрутизацию запросов к внутренней службе Open-WebUI, работающей на порту 8080. Конфигурация Nginx управляется через файл Docker Compose, расположенный по пути /root/nginx/compose.yml. Пользовательские конфигурации доменов хранятся в /data/nginx/user_conf.d.
Настройки прав доступа¶
К следующим критическим каталогам и файлам применяются следующие настройки прав доступа:
-
/root/nginx: Права доступа к каталогу установлены в0755, владелецroot:root. -
/root/nginx/compose.yml: Права доступа к файлу установлены в0644, владелецroot:root. -
/etc/docker/daemon.json: Права доступа к файлу установлены в0644, владелецroot:root. -
/etc/systemd/system/ollama.service: Управляется systemd, обычно владелецroot.
Расположение файлов конфигурации и данных¶
Файлы конфигурации и постоянные данные находятся по следующим путям:
-
Nginx Compose:
/root/nginx/compose.yml -
Окружение Nginx:
/data/nginx/nginx-certbot.env -
Конфигурация демона Docker:
/etc/docker/daemon.json -
Служба Ollama:
/etc/systemd/system/ollama.service -
Данные Open-WebUI: Том Docker
open-webui(отображается в/app/backend/dataвнутри контейнера). -
SSL-сертификаты: Том Docker
nginx_secrets(отображается в/etc/letsencryptвнутри контейнера Nginx).
Доступные порты для подключения¶
Следующие порты настроены для приложения:
| Порт | Протокол | Описание |
|---|---|---|
443 | HTTPS | Внешний доступ к интерфейсу Open-WebUI через Nginx. |
8080 | HTTP | Внутренний доступ к контейнеру Open-WebUI. |
11434 | HTTP | Внутренний доступ к API Ollama. |
Запуск, остановка и обновление¶
Управление службами осуществляется через systemd для Ollama и через Docker для контейнеров.
Служба Ollama:
-
Запуск:
systemctl start ollama -
Остановка:
systemctl stop ollama -
Перезапуск:
systemctl restart ollama -
Включение при загрузке:
systemctl enable ollama
Контейнер Open-WebUI:
-
Запуск:
docker start open-webui -
Остановка:
docker stop open-webui -
Перезапуск:
docker restart open-webui -
Обновление: Загрузите последний образ командой
docker pull ghcr.io/open-webui/open-webui:cudaи пересоздайте контейнер.
Контейнер Nginx-Certbot:
-
Перейдите в каталог конфигурации:
cd /root/nginx -
Запуск/Перезапуск:
docker compose up -d -
Остановка:
docker compose down -
Обновление: Загрузите последний образ и выполните
docker compose up -d.