Обзор развертывания Qwen3-32B на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется сервер с операционной системой Ubuntu, имеющий права root или доступ sudo. На системе должны быть установлены Docker и Docker Compose для управления контейнерами приложения. Кроме того, сервер должен иметь подключение к Интернету для загрузки скрипта установки Ollama, модели Qwen3:32B и образа Docker Open WebUI.
Следующие порты должны быть доступны и открыты в межсетевом экране (firewall) сервера:
-
Порт
443для HTTPS-трафика. -
Порт
80для проверки SSL-сертификатов (Let's Encrypt). -
Порт
8080для внутреннего взаимодействия между обратным прокси-сервером и контейнером Open WebUI.
FQDN конечной панели¶
Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN), где <ServerID> обозначает уникальный идентификатор сервера:
qwen3-32b<ServerID>.hostkey.in
Сервис работает исключительно по протоколу HTTPS (порт 443).
Структура файлов и каталогов¶
Развертывание организовывает файлы и каталоги следующим образом:
-
Конфигурация службы Ollama: Расположена по пути
/etc/systemd/system/ollama.service. Резервная копия исходной конфигурации хранится по пути/etc/systemd/system/ollama.service.bak. -
Конфигурация Nginx и Certbot:
-
Файл Docker Compose:
/root/nginx/compose.yml -
Переменные окружения:
/data/nginx/nginx-certbot.env -
Специфичная для сервера конфигурация:
/data/nginx/user_conf.d/qwen3-32b<ServerID>.hostkey.in.conf -
Том (volume) с секретами Let's Encrypt: Монтируется по пути
/etc/letsencryptвнутри Docker-контейнера. -
Модели Ollama: Хранятся в системном каталоге
/usr/share/ollama/.ollama/models/. -
Данные Open WebUI: Сохраняются в Docker-томе с именем
open-webui.
Процесс установки приложения¶
Установка приложения включает два основных компонента: бэкенд Ollama и фронтенд Open WebUI.
-
Установка Ollama:
-
Пакет Ollama устанавливается с помощью официального скрипта установки (
curl -fsSL https://ollama.com/install.sh | sh). -
Пользователь системы
ollamaсоздается, если он еще не существует. -
Юнит
ollama.serviceмодифицируется для включения следующих переменных окружения:-
OLLAMA_HOST=0.0.0.0 -
OLLAMA_ORIGINS=* -
LLAMA_FLASH_ATTENTION=1
-
-
Демон systemd перезагружается, служба
ollamaперезапускается и настраивается на запуск при старте системы. -
Загружается и сохраняется локально модель
qwen3:32b.
-
-
Развертывание Open WebUI:
-
Контейнер Open WebUI запускается с использованием образа
ghcr.io/open-webui/open-webui:cuda. -
Контейнер конфигурируется с помощью переменной окружения
OLLAMA_BASE_URLS, указывающей наhttp://host.docker.internal:11434для связи со службой Ollama. -
Ускорение на GPU включается путем передачи флага
--gpus all.
-
Права доступа и безопасность¶
Доступ к службе Ollama ограничен локальными сетевыми интерфейсами через привязку 0.0.0.0 в конфигурации службы. Контейнер Open WebUI работает в среде Docker с сетевой изоляцией, открывая порт 8080 во внутренней сети. Весь внешний трафик направляется через Nginx с шифрованием SSL/TLS, управляемым утилитой Certbot.
Пользователь ollama является системным пользователем с ограниченными привилегиями. Контейнеры Nginx и Certbot работают в режиме сети хоста (network_mode: host) для обеспечения правильного разрешения DNS и привязки портов.
Базы данных¶
Компонент Open WebUI использует внутреннюю базу данных SQLite для сессий пользователей, истории чатов и конфигурации. Эта база данных хранится внутри Docker-тома open-webui по пути /app/backend/data. Для данного развертывания внешний сервер базы данных не требуется и не настраивается.
Docker-контейнеры и их развертывание¶
Для работы приложения развертываются два основных Docker-контейнера:
-
Контейнер Open WebUI:
-
Образ:
ghcr.io/open-webui/open-webui:cuda -
Имя контейнера:
open-webui -
Порты: Привязка хост-порта
8080к порту контейнера8080. -
Томы (Volumes): Монтирует именованный том
open-webuiв/app/backend/data. -
Переменные окружения:
-
ENV=dev -
OLLAMA_BASE_URLS=http://host.docker.internal:11434
-
-
Доступ к устройствам: Предоставляет доступ ко всем GPU через флаг
--gpus all. -
Политика перезапуска:
always.
-
-
Контейнер Nginx-Certbot:
-
Образ:
jonasal/nginx-certbot:latest -
Режим сети: Хост (
network_mode: host). -
Томы (Volumes):
-
Монтирует
nginx_secrets(внешний) в/etc/letsencrypt. -
Монтирует
/data/nginx/user_conf.dв/etc/nginx/user_conf.d.
-
-
Переменные окружения:
CERTBOT_EMAIL=hkadm@hostkey.com
-
Политика перезапуска:
unless-stopped.
-
Контейнер Nginx-Certbot управляется через файл Docker Compose, расположенный по пути /root/nginx/compose.yml.
Прокси-серверы¶
Для обработки терминации SSL и маршрутизации трафика к приложению Open WebUI реализован обратный прокси-сервер на базе Nginx.
-
Конфигурация Nginx: Прокси настроен на прослушивание FQDN
qwen3-32b<ServerID>.hostkey.in. -
SSL/TLS: SSL-сертификаты автоматически генерируются и обновляются с помощью Certbot.
-
Маршрутизация:
-
Файл конфигурации Nginx по пути
/data/nginx/user_conf.d/qwen3-32b<ServerID>.hostkey.in.confнаправляет трафик от корня пути/на внутренний бэкенд. -
Директива
proxy_passустановлена в значениеhttp://127.0.0.1:8080. -
Certbot: Конфигурация Docker Compose использует внешний том с именем
nginx_secretsдля хранения данных сертификатов.
Настройки прав доступа¶
Права доступа к файлам и каталогам настроены следующим образом:
-
/root/nginx: Владелец
root, группаroot, права0755. -
/root/nginx/compose.yml: Владелец
root, группаroot, права0644. -
/data/nginx: Требуется для файлов конфигурации Nginx и хранилища Let's Encrypt.
-
Служба Ollama: Служба
ollamaработает от имени системного пользователяollama.
Расположение файлов конфигурации и данных¶
Все критически важные файлы конфигурации и хранилища данных находятся по следующим путям:
-
Nginx Compose:
/root/nginx/compose.yml -
Конфигурация сервера Nginx:
/data/nginx/user_conf.d/qwen3-32b<ServerID>.hostkey.in.conf -
Окружение Nginx:
/data/nginx/nginx-certbot.env -
Служба Ollama:
/etc/systemd/system/ollama.service -
Данные моделей Ollama:
/usr/share/ollama/.ollama/models/ -
Данные Open WebUI: Docker-том
open-webui
Доступные порты для подключения¶
Развернутое приложение использует следующие порты:
| Порт | Протокол | Назначение | Область видимости |
|---|---|---|---|
443 | TCP | HTTPS (Общедоступный доступ) | Внешняя |
80 | TCP | HTTP (Проверка SSL) | Внешняя |
8080 | TCP | Open WebUI Внутренний | Внутренняя |
11434 | TCP | API Ollama | Внутренняя/Локалхост |
Запуск, остановка и обновление¶
Компоненты приложения управляются с помощью systemctl для службы Ollama и docker compose для прокси-сервера Nginx.
-
Служба Ollama:
-
Запуск:
systemctl start ollama -
Остановка:
systemctl stop ollama -
Перезапуск:
systemctl restart ollama -
Включение при загрузке:
systemctl enable ollama -
Служба Nginx-Certbot:
-
Запуск:
docker compose up -d(выполняется из директории/root/nginx) -
Остановка:
docker compose down(выполняется из директории/root/nginx) -
Обновление конфигурации: Измените
/root/nginx/compose.ymlили файлы конфигурации в/data/nginx/user_conf.d, затем выполнитеdocker compose up -d. -
Контейнер Open WebUI:
-
Запуск:
docker start open-webui -
Остановка:
docker stop open-webui -
Перезапуск:
docker restart open-webui -
Обновление образа:
docker pull ghcr.io/open-webui/open-webui:cuda, за которым следуетdocker stop open-webui && docker run -d ...(повторное выполнение команды запуска с обновленным образом).