Перейти к содержанию

Обзор развертывания Qwen3-32B на сервере

Предварительные требования и базовые условия

Для развертывания требуется сервер Linux с установленной Ubuntu и правами root. На хост-системе должны быть доступны следующие компоненты:

  • Установленный и запущенный Docker Engine.

  • Диспетчер служб Systemd для управления фоновыми процессами.

  • Доступ к сети для загрузки установщика Ollama, модели qwen3:32b и образов Docker.

  • Поддержка GPU с установленными драйверами CUDA для контейнера Open WebUI.

  • Настройка домена, указывающая на хост-сервер, для выдачи SSL-сертификатов.

FQDN финальной панели

Приложение доступно по следующему формату Полного Квалифицированного Доменного Имени (FQDN):

  • qwen3-32b<Server ID>.hostkey.in:443

Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера. Сервис работает по протоколу HTTPS на порту 443.

Структура файлов и каталогов

Развертывание использует следующую структуру каталогов для конфигурации, данных и сертификатов:

  • /root/nginx/: Содержит файл Docker Compose для прокси и управления SSL.

  • /root/nginx/compose.yml: Конфигурация Docker Compose для служб Nginx и Certbot.

  • /data/nginx/user_conf.d/: Хранит пользовательские файлы конфигурации Nginx для конкретного домена.

  • /data/nginx/nginx-certbot.env: Файл окружения, содержащий настройки для контейнера Nginx-Certbot.

  • /etc/systemd/system/ollama.service: Файл юнита Systemd для службы Ollama.

  • /usr/share/ollama/.ollama/models/: Расположение хранилища для загруженной модели qwen3:32b.

  • /var/lib/docker/volumes/open-webui/: Том Docker, хранящий данные бэкенда для приложения Open WebUI.

Процесс установки приложения

Приложение состоит из трех основных компонентов: движка вывода Ollama, интерфейса Open WebUI и прокси Nginx с SSL.

  1. Установка Ollama:

  2. Пакет Ollama устанавливается через официальный скрипт оболочки.

  3. Создается системный пользователь ollama для управления службой.

  4. Служба ollama.service настраивается с использованием конкретных переменных окружения для разрешения внешних подключений и включения механизма flash attention.

  5. Модель qwen3:32b загружается и сохраняется локально.

  6. Развертывание Open WebUI:

  7. Контейнер Open WebUI развертывается с использованием образа ghcr.io/open-webui/open-webui:cuda.

  8. Контейнер настраивается для подключения к локальному экземпляру Ollama, работающему на хосте.

  9. Настройка прокси и SSL:

  10. Развертывается контейнер Nginx с Certbot для обработки терминации SSL и обратного проксирования.

  11. Генерируется конфигурация для маршрутизации трафика с внешнего домена на внутреннюю службу Open WebUI.

Права доступа и безопасность

  • Межсетевой экран (Firewall): Сервер должен разрешать входящий трафик на порт 443 (HTTPS) и порт 80 (HTTP для валидации SSL).

  • Пользователи: Системный пользователь ollama создается для запуска движка вывода. Контейнеры Docker работают с конкретными привилегиями, необходимыми для доступа к GPU.

  • Ограничения: Служба Ollama настроена на прослушивание 0.0.0.0, но доступна только во внутренней сети через прокси Nginx. Прямой доступ к порту Ollama (11434) или порту Open WebUI (8080) не предназначен для внешних пользователей.

Базы данных

Приложение Open WebUI использует локальный том Docker для сохранения данных.

  • Расположение хранилища: /var/lib/docker/volumes/open-webui/

  • Метод подключения: Приложение хранит данные непосредственно внутри смонтированного тома; внешний сервер базы данных не требуется.

  • Настройки: Переменная окружения ENV установлена в значение dev внутри конфигурации контейнера.

Контейнеры Docker и их развертывание

В рамках данного решения развертываются два основных контейнера Docker:

  1. Open WebUI:

  2. Образ: ghcr.io/open-webui/open-webui:cuda

  3. Команда:

    docker run -d -p 8080:8080 --gpus all \
      --add-host=host.docker.internal:host-gateway \
      -v open-webui:/app/backend/data \
      --name open-webui \
      -e ENV='dev' \
      -e OLLAMA_BASE_URLS='http://host.docker.internal:11434' \
      --restart always ghcr.io/open-webui/open-webui:cuda
    

  4. Порты: Открывает порт 8080 во внутренней сети.

  5. Томы: Монтирует том open-webui в /app/backend/data.

  6. Nginx-Certbot:

  7. Образ: jonasal/nginx-certbot:latest

  8. Метод развертывания: Управляется через Docker Compose, расположенный по пути /root/nginx/compose.yml.

  9. Режим сети: Host.

  10. Томы:

    • nginx_secrets (внешний) монтируется в /etc/letsencrypt.

    • /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d.

Прокси-серверы

Прокси Nginx обрабатывает терминацию SSL и маршрутизацию для приложения.

  • ПО: Nginx с Certbot (через контейнер Docker).

  • SSL: Управляется автоматически с помощью Certbot, использующего образ jonasal/nginx-certbot.

  • Пользовательский домен: Настроен для зоны hostkey.in с префиксом qwen3-32b.

  • Конфигурация:

  • Прокси передает запросы с внешнего домена на http://127.0.0.1:8080.

  • Файл конфигурации расположен по адресу /data/nginx/user_conf.d/qwen3-32b<Server ID>.hostkey.in.conf.

  • Директива proxy_pass динамически обновляется для указания на внутреннюю службу Open WebUI.

Настройки прав доступа

  • Каталог Nginx: /root/nginx принадлежит root:root с правами 0755.

  • Файл Compose: /root/nginx/compose.yml принадлежит root:root с правами 0644.

  • Служба Ollama: Служба ollama работает под системным пользователем ollama.

  • Томы Docker: Docker управляет правами доступа для томов open-webui и nginx_secrets во внутреннем режиме.

Расположение файлов конфигурации и данных

  • Конфигурация прокси Nginx: /root/nginx/compose.yml

  • Пользовательская конфигурация Nginx: /data/nginx/user_conf.d/qwen3-32b<Server ID>.hostkey.in.conf

  • Окружение Nginx: /data/nginx/nginx-certbot.env

  • Файл службы Ollama: /etc/systemd/system/ollama.service

  • Данные модели: /usr/share/ollama/.ollama/models/

  • Данные WebUI: /var/lib/docker/volumes/open-webui/

Доступные порты для подключения

  • Порт 443: Трафик HTTPS для интерфейса Open WebUI (Внешний).

  • Порт 80: Трафик HTTP для валидации SSL-сертификата (Внешний).

  • Порт 8080: Внутренний порт для Open WebUI (Не открыт напрямую в интернет).

  • Порт 11434: Внутренний порт для API Ollama (Не открыт напрямую в интернет).

Запуск, остановка и обновление

Службы управляются с помощью systemctl для Ollama и docker compose для прокси.

  • Служба Ollama:

  • Запуск: systemctl start ollama

  • Остановка: systemctl stop ollama

  • Перезапуск: systemctl restart ollama

  • Включение при загрузке: systemctl enable ollama

  • Прокси Nginx:

  • Запуск/Обновление: docker compose up -d (выполняется из /root/nginx)

  • Остановка: docker compose down (выполняется из /root/nginx)

  • Контейнер Open WebUI:

  • Запуск: docker start open-webui

  • Остановка: docker stop open-webui

  • Перезапуск: docker restart open-webui

  • Обновление: Загрузите последний образ и пересоздайте контейнер, используя команду docker run, предоставленную в разделе установки.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×