Обзор развертывания Open WebUI с Ollama на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется Linux-сервер с операционной системой Ubuntu и правами root. В системе должен быть установлен и настроен Docker для поддержки ускорения GPU для контейнера open-webui. Требуются следующие компоненты:
-
Операционная система: Ubuntu
-
Права доступа: Доступ root
-
Домен:
hostkey.in -
Порты:
-
443(внешний доступ по HTTPS) -
8080(внутренний сервис Open WebUI) -
11434(внутренний сервис Ollama)
FQDN финальной панели¶
Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):
llama<Server ID>.hostkey.in:443
Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера.
Структура файлов и каталогов¶
Развертывание использует следующую структуру каталогов для конфигурации, данных и сертификатов:
-
/root/nginx/: Содержит конфигурацию Docker Compose для прокси-сервера. -
/root/nginx/compose.yml: Файл Docker Compose для сервисов Nginx и Certbot. -
/data/nginx/user_conf.d/: Содержит пользовательские файлы конфигурации Nginx для конкретного домена. -
/data/nginx/nginx-certbot.env: Переменные окружения для сервиса Certbot. -
/etc/systemd/system/ollama.service: Файл сервиса Systemd для Ollama. -
/etc/systemd/system/ollama.service.bak: Резервная копия исходного файла сервиса Ollama.
Процесс установки приложения¶
Стек приложения состоит из Ollama для вывода моделей (inference) и Open WebUI для пользовательского интерфейса.
-
Установка Ollama:
-
Ollama устанавливается с помощью официального скрипта установки.
-
Создается системный пользователь
ollama. -
Сервис
ollamaнастраивается с использованием конкретных переменных окружения:-
OLLAMA_HOST=0.0.0.0 -
OLLAMA_ORIGINS=* -
LLAMA_FLASH_ATTENTION=1
-
-
Модель
llama3.3загружается (pull) и подгружается в систему.
-
-
Развертывание Open WebUI:
-
Приложение Open WebUI развертывается как Docker-контейнер с использованием образа
ghcr.io/open-webui/open-webui:cuda. -
Контейнер настроен на открытие порта
8080. -
Для сохранения данных бэкенда используется именованный том (named volume)
open-webui. -
Контейнер подключается к локальному экземпляру Ollama через
http://host.docker.internal:11434.
-
Права доступа и безопасность¶
-
Межсетевой экран (Firewall): Внешний доступ ограничен портом
443(HTTPS) через прокси Nginx. Внутренние сервисы на портах8080и11434не доступны напрямую из публичного интернета. -
Пользователи: Для управления сервисом Ollama создан системный пользователь
ollama. -
Ограничения: Прокси Nginx обрабатывает завершение SSL-сессий (SSL termination) и пересылает трафик во внутреннее приложение.
Базы данных¶
-
Хранилище: Open WebUI хранит свои данные в именованном Docker-томе с меткой
open-webui. -
Расположение: Данные сохраняются в
/app/backend/dataвнутри контейнера, что маппится на хранилище Docker-томов хоста. -
Подключение: Подключение к внешней базе данных не требуется; приложение использует внутреннюю базу данных SQLite, управляемую внутри тома контейнера.
Docker-контейнеры и их развертывание¶
Развертываются два основных компонента Docker:
-
Контейнер Open WebUI:
-
Образ:
ghcr.io/open-webui/open-webui:cuda -
Команда:
-
Политика перезапуска:
always
-
-
Контейнер Nginx и Certbot:
-
Образ:
jonasal/nginx-certbot:latest -
Метод развертывания: Docker Compose
-
Расположение:
/root/nginx/compose.yml -
Конфигурация:
-
Использует
network_mode: host. -
Монтирует том
nginx_secretsдля сертификатов Let's Encrypt. -
Монтирует
/data/nginx/user_conf.dдля пользовательских конфигураций сайтов.
-
Прокси-серверы¶
В развертывании используется Nginx с Certbot для завершения SSL-сессий и работы в качестве обратного прокси.
-
Конфигурация прокси:
-
Контейнер Nginx слушает сеть хоста.
-
Пользовательская конфигурация для домена находится в
/data/nginx/user_conf.d/llama<Server ID>.hostkey.in.conf. -
Прокси пересылает запросы с корневого пути
/во внутренний сервис Open WebUI по адресуhttp://127.0.0.1:8080. -
SSL/TLS:
-
Автоматически управляется Certbot внутри контейнера Nginx.
-
Сертификаты хранятся в томе
nginx_secretsв директории/etc/letsencrypt. -
Электронная почта: Уведомления о продлении сертификатов отправляются на
hkadm@hostkey.com.
Настройки прав доступа¶
-
Каталог Nginx:
/root/nginxпринадлежит пользователюrootс правами0755. -
Файл Compose:
/root/nginx/compose.ymlпринадлежит пользователюrootс правами0644. -
Сервис Ollama: Сервис
ollamaработает от имени системного пользователяollama.
Расположение файлов конфигурации и данных¶
-
Nginx Compose:
/root/nginx/compose.yml -
Пользовательская конфигурация Nginx:
/data/nginx/user_conf.d/llama<Server ID>.hostkey.in.conf -
Окружение Certbot:
/data/nginx/nginx-certbot.env -
Сервис Ollama:
/etc/systemd/system/ollama.service -
Данные Open WebUI: Docker-том
open-webui(маппится на/app/backend/dataвнутри контейнера).
Доступные порты для подключения¶
-
443: HTTPS (публичный доступ через прокси Nginx).
-
8080: HTTP (внутренний сервис Open WebUI, проксируется через Nginx).
-
11434: HTTP (внутренний API 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-контейнеры.
-
Прокси Nginx:
-
Запуск/Перезапуск:
docker compose up -d(выполняется из/root/nginx) -
Остановка:
docker compose down(выполняется из/root/nginx)