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

Обзор развертывания 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.

  1. Установка 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.

  2. Развертывание 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-контейнера:

  1. Контейнер 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.

  2. Контейнер 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 ... (повторное выполнение команды запуска с обновленным образом).

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