Обзор развертывания Open WebUI с DeepSeek-R1:14B на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется Linux-сервер с Ubuntu, соответствующий следующим спецификациям:
-
Операционная система: Ubuntu (рекомендуется последняя LTS-версия).
-
Привилегии: Для всех шагов установки и конфигурации требуются права root или привилегии
sudo. -
Домен: Сервер должен быть настроен для разрешения домена
hostkey.in. -
Порты:
-
Порт 80: Требуется для перенаправления HTTP и валидации вызовов ACME.
-
Порт 443: Требуется для трафика HTTPS.
-
Порт 11434: Используется внутренне службой Ollama.
-
Порт 3000: Внутренний порт для приложения Open WebUI.
FQDN финальной панели¶
Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):
deepseek<Server ID>.hostkey.in:443
Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера. Сервис работает по протоколу HTTPS на порту 443.
Структура файлов и каталогов¶
Развертывание использует следующую структуру каталогов для конфигурации, данных и сертификатов:
-
/root/nginx/: Содержит конфигурацию Docker Compose для прокси-сервера. -
/root/nginx/compose.yml: Файл Docker Compose для Nginx и Certbot. -
/data/nginx/: Хранит пользовательские конфигурации Nginx и переменные окружения. -
/data/nginx/user_conf.d/: Каталог, содержащий файлы конфигурации виртуальных хостов.-
deepseek<Server ID>.hostkey.in.conf: Конфигурация виртуального хоста HTTPS. -
deepseek<Server ID>.hostkey.in.http.conf: Конфигурация виртуального хоста HTTP для вызовов ACME.
-
-
/data/nginx/nginx-certbot.env: Переменные окружения для службы Certbot. -
/etc/systemd/system/ollama.service.d/: Каталог, содержащий переопределения systemd для службы Ollama. -
override.conf: Файл конфигурации, изменяющий переменные окружения Ollama. -
/var/www/certbot/: Каталог webroot внутри контейнера Nginx для вызовов ACME от Let's Encrypt.
Процесс установки приложения¶
Стек приложения состоит из трех основных компонентов: Ollama, Open WebUI и обратного прокси-сервера Nginx с Certbot.
-
Установка Ollama:
-
Служба Ollama устанавливается с помощью официального скрипта установки.
-
Модель
deepseek-r1:14bзагружается и подгружается в службу Ollama. -
Служба настраивается на прослушивание всех сетевых интерфейсов (
0.0.0.0) и разрешает межсайтовые запросы (CORS). -
Развертывание Open WebUI:
-
Приложение Open WebUI развертывается как Docker-контейнер, использующий образ
ghcr.io/open-webui/open-webui:cuda. -
Контейнер настраивается на использование сетевого режима хоста (host networking) и запрашивает возможности GPU.
-
Он подключается к локальному экземпляру Ollama по адресу
http://127.0.0.1:11434. -
Настройка прокси и SSL:
-
Развертывается контейнер Nginx с образом
jonasal/nginx-certbot:latestдля обработки терминации SSL и работы в качестве обратного прокси. -
Прокси пересылает трафик с внешнего FQDN на внутренний сервис Open WebUI.
Права доступа и безопасность¶
-
Системные пользователи: Создается и используется системный пользователь
ollamaслужбой Ollama. -
Межсетевой экран (Firewall): Сервер должен разрешать входящий трафик на портах 80 и 443. Внутренняя коммуникация происходит на портах 11434 и 3000.
-
SSL/TLS: Сертификаты SSL управляются автоматически службой Certbot внутри контейнера Nginx.
-
Ограничения окружения: Служба Ollama настроена с параметром
OLLAMA_ORIGINS=*для разрешения подключений из веб-интерфейса, а также включен параметрLLAMA_FLASH_ATTENTION=1для оптимизации производительности.
Базы данных¶
-
Метод хранения: Приложение Open WebUI хранит свои данные в Docker-томе с именем
open-webui. -
Расположение: Данные сохраняются в
/app/backend/dataвнутри контейнера, что маппится на хранилище Docker-томов хоста. -
Конфигурация: Внешний сервер базы данных не требуется; приложение использует свой внутренний механизм хранения.
Docker-контейнеры и их развертывание¶
Развертывание использует два основных Docker-контейнера:
-
Контейнер Open WebUI:
-
Имя:
open-webui -
Образ:
ghcr.io/open-webui/open-webui:cuda -
Режим сети:
host -
Политика перезапуска:
always -
Переменные окружения:
-
ENV:dev -
OLLAMA_BASE_URLS:http://127.0.0.1:11434
-
-
Томы:
open-webui:/app/backend/data
-
Запросы устройств: Запрашиваются возможности GPU для ускорения инференса.
-
Контейнер прокси Nginx:
-
Образ:
jonasal/nginx-certbot:latest -
Режим сети:
host -
Политика перезапуска:
unless-stopped -
Переменные окружения:
CERTBOT_EMAIL:hkadm@hostkey.com
-
Томы:
-
nginx_secrets:/etc/letsencrypt(Внешний том) -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d(Прямое монтирование)
-
Прокси-серверы¶
Обратный прокси-сервер Nginx настроен для обработки терминации SSL и маршрутизации трафика на приложение Open WebUI.
-
Провайдер SSL: Let's Encrypt через Certbot.
-
Файлы конфигурации:
-
HTTPS: Расположен по пути
/data/nginx/user_conf.d/deepseek<Server ID>.hostkey.in.conf.-
Слушает порт 443.
-
Пересылает запросы на
http://127.0.0.1:8080(Примечание: Скрипт конфигурации устанавливает прокси-пересылку на порт 8080, хотя внутреннее приложение работает на порту 3000; система полагается на специфическую маршрутизацию, определенную в сгенерированной конфигурации). -
Передает заголовок
Hostна вышестоящий сервер.
-
-
HTTP: Расположен по пути
/data/nginx/user_conf.d/deepseek<Server ID>.hostkey.in.http.conf.-
Слушает порт 80.
-
Обслуживает вызовы ACME из
/var/www/certbot/.well-known/acme-challenge/. -
Перенаправляет весь остальной трафик на HTTPS.
-
-
Пользовательские домены: Прокси настроен специально для поддомена
deepseek<Server ID>.hostkey.in.
Настройки прав доступа¶
-
Каталог конфигурации Nginx:
/root/nginxпринадлежитroot:rootс правами0755. -
Файл Compose:
/root/nginx/compose.ymlпринадлежитroot:rootс правами0644. -
Каталог пользовательской конфигурации:
/data/nginx/user_conf.dмонтируется в контейнер и должен быть доступен для чтения процессом Nginx. -
Переопределения Systemd:
/etc/systemd/system/ollama.service.d/override.confпринадлежитrootсо стандартными системными правами конфигурации.
Расположение файлов конфигурации и данных¶
-
Переопределение службы Ollama:
/etc/systemd/system/ollama.service.d/override.conf -
Файл Compose Nginx:
/root/nginx/compose.yml -
Конфигурация HTTPS Nginx:
/data/nginx/user_conf.d/deepseek<Server ID>.hostkey.in.conf -
Конфигурация HTTP Nginx:
/data/nginx/user_conf.d/deepseek<Server ID>.hostkey.in.http.conf -
Окружение Certbot:
/data/nginx/nginx-certbot.env -
Данные приложения: Хранятся в Docker-томе
open-webui.
Доступные порты для подключения¶
-
Порт 80: HTTP (Перенаправляет на HTTPS).
-
Порт 443: HTTPS (Основная точка доступа к интерфейсу Open WebUI).
-
Порт 11434: API Ollama (Только для внутреннего использования).
-
Порт 3000: Внутренний порт Open WebUI (Не открыт напрямую для публичного интернета).
Запуск, остановка и обновление¶
Службы управляются через 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, за которым следуетdocker restart open-webui -
Контейнер прокси Nginx:
-
Запуск:
docker compose up -d(выполняется из/root/nginx) -
Остановка:
docker compose down(выполняется из/root/nginx) -
Перезагрузка конфигурации:
docker exec nginx-nginx-1 nginx -s reload -
Проверка конфигурации:
docker exec nginx-nginx-1 nginx -t