Обзор развертывания Qwen3-Coder на сервере¶
Предварительные требования и базовые условия¶
Для развертывания приложения Qwen3-Coder требуется сервер Linux с операционной системой Ubuntu. Перед началом процесса установки должны быть выполнены следующие условия:
-
Операционная система: Ubuntu (конкретная версия не указана, но должна быть совместима с менеджером пакетов
apt). -
Привилегии: Для установки системных служб, управления контейнерами Docker и настройки правил межсетевого экрана (firewall) требуются права root или привилегии
sudo. -
Конфигурация домена: Сервер должен быть настроен для разрешения домена
hostkey.in. -
Порты:
-
Порт
8080: Внутренняя связь между прокси и приложением Open WebUI. -
Порт
443: Внешний доступ по HTTPS для финальной панели управления. -
Порт
11434: Внутренний порт службы Ollama (привязан к0.0.0.0для внутренней сети Docker).
FQDN финальной панели¶
Приложение доступно по следующему формату Полного Квалифицированного Доменного Имени (FQDN) в домене hostkey.in:
-
Формат:
qwen3-coder<Server ID>.hostkey.in:443 -
Префикс
qwen3-coderжестко задан в конфигурации. -
Заполнитель
<Server ID>должен быть заменен на фактический уникальный идентификатор экземпляра сервера. -
Внешний порт
443используется для защищенных соединений HTTPS.
Структура файлов и каталогов¶
Развертывание использует определенные директории для файлов конфигурации, хранения данных и сертификатов:
-
/root/nginx/: Содержит конфигурацию Docker Compose для прокси Nginx и Certbot. -
/root/nginx/compose.yml: Файл Docker Compose для службы прокси. -
/data/nginx/: Хранит пользовательские конфигурации Nginx и переменные окружения. -
/data/nginx/user_conf.d/: Директория, содержащая специфичные конфигурации блоков сервера.qwen3-coder<Server ID>.hostkey.in.conf: Файл конфигурации для конкретного экземпляра приложения.
-
/data/nginx/nginx-certbot.env: Файл переменных окружения для службы Nginx-Certbot. -
/etc/systemd/system/ollama.service: Файл единицы службы Systemd для бэкенда Ollama. -
/usr/share/ollama/.ollama/models/: Расположение по умолчанию для хранения моделиqwen3-coder. -
/var/lib/docker/volumes/open-webui/_data: Постоянный том (persistent volume) для данных бэкенда Open WebUI.
Процесс установки приложения¶
Стек приложения состоит из трех основных компонентов: Ollama (бэкенд), Open WebUI (фронтенд) и Nginx с Certbot (прокси).
-
Установка Ollama:
-
Служба Ollama устанавливается с использованием официального скрипта установки.
-
Создается системный пользователь
ollama. -
Файл
ollama.serviceмодифицируется для включения следующих переменных окружения:-
OLLAMA_HOST=0.0.0.0 -
OLLAMA_ORIGINS=* -
LLAMA_FLASH_ATTENTION=1
-
-
Модель
qwen3-coderзагружается и сохраняется локально. -
Развертывание Open WebUI:
-
Приложение Open WebUI развертывается как контейнер Docker с использованием образа
ghcr.io/open-webui/open-webui:cuda. -
Контейнеру присваивается имя
open-webui. -
Внутренний порт
8080маппится на порт хоста8080. -
Ускорение GPU включено через флаг
--gpus all. -
Контейнер подключается к службе Ollama по адресу
http://host.docker.internal:11434. -
Конфигурация прокси и SSL:
-
Прокси Nginx развертывается с использованием Docker Compose, расположенного в
/root/nginx/compose.yml. -
Используется образ
jonasal/nginx-certbot:latest. -
SSL-сертификаты управляются автоматически через Certbot с использованием электронной почты
hkadm@hostkey.com.
Права доступа и безопасность¶
-
Учетные записи пользователей: Для службы Ollama создается выделенный системный пользователь с именем
ollama. -
Межсетевой экран (Firewall): Конфигурация предполагает доступность портов
8080(внутренний) и443(внешний). Порт80неявно требуется для валидации Let's Encrypt. -
Сетевые ограничения: Служба Ollama привязана к
0.0.0.0для разрешения соединений из сети Docker, в то время как внешний доступ ограничен прокси Nginx на порту443. -
Переменные окружения: Переменная
OLLAMA_ORIGINSустановлена в значение*для разрешения кросс-доменных запросов из контейнера Open WebUI.
Базы данных¶
-
Приложение Open WebUI использует локальный постоянный том для своих данных бэкенда.
-
Расположение хранения:
/var/lib/docker/volumes/open-webui/_data. -
Метод подключения: Приложение получает доступ к этим данным через монтирование тома Docker
-v open-webui:/app/backend/data. -
В предоставленном контексте не определены внешние серверы баз данных или специфичные файлы конфигурации баз данных.
Контейнеры Docker и их развертывание¶
Развертываются два основных компонента Docker:
-
Контейнер Open WebUI:
-
Команда:
-
Политика перезапуска:
always. -
Том:
open-webui(именованный том). -
Контейнер Nginx-Certbot:
-
Метод развертывания: Docker Compose.
-
Расположение:
/root/nginx/compose.yml. -
Образ:
jonasal/nginx-certbot:latest. -
Режим сети:
host. -
Томы:
-
nginx_secrets(внешний) монтируется в/etc/letsencrypt. -
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.d.
-
Прокси-серверы¶
Прокси Nginx обрабатывает завершение SSL-соединений и маршрутизацию для приложения.
-
Образ:
jonasal/nginx-certbot:latest. -
Провайдер SSL: Let's Encrypt (Certbot).
-
Электронная почта для сертификатов:
hkadm@hostkey.com. -
Файл конфигурации:
/data/nginx/user_conf.d/qwen3-coder<Server ID>.hostkey.in.conf. -
Proxy Pass: Прокси пересылает запросы с корневого пути
/на внутреннее приложение по адресуhttp://127.0.0.1:8080. -
Файл окружения:
/data/nginx/nginx-certbot.env.
Настройки прав доступа¶
-
Директория Nginx:
/root/nginxпринадлежит пользователюroot:rootс правами доступа0755. -
Файл Compose:
/root/nginx/compose.ymlпринадлежит пользователюroot:rootс правами доступа0644. -
Служба Systemd: Файл
ollama.serviceрасположен в/etc/systemd/system/и управляется пользователем root. -
Томы Docker: Docker автоматически управляет правами доступа для тома
open-webuiна основе внутренней конфигурации пользователя контейнера.
Расположение файлов конфигурации и данных¶
| Компонент | Путь к файлу/директории | Описание |
|---|---|---|
| Конфигурация прокси Nginx | /root/nginx/compose.yml | Определение Docker Compose для прокси. |
| Пользовательская конфигурация Nginx | /data/nginx/user_conf.d/qwen3-coder<Server ID>.hostkey.in.conf | Специфичная конфигурация блока сервера. |
| Переменные окружения Nginx | /data/nginx/nginx-certbot.env | Переменные окружения для прокси. |
| Служба Ollama | /etc/systemd/system/ollama.service | Файл единицы Systemd для Ollama. |
| Резервная копия Ollama | /etc/systemd/system/ollama.service.bak | Резервная копия исходного файла службы. |
| Хранилище модели | /usr/share/ollama/.ollama/models/qwen3-coder | Расположение загруженной модели. |
| Данные WebUI | /var/lib/docker/volumes/open-webui/_data | Постоянные данные для Open WebUI. |
Доступные порты для подключения¶
-
Порт 443: Внешний доступ по HTTPS к панели Qwen3-Coder.
-
Порт 8080: Внутренний доступ по HTTP для приложения Open WebUI (через прокси Nginx).
-
Порт 11434: Внутренний порт API Ollama (доступен внутри сети Docker).
Запуск, остановка и обновление¶
Службы управляются через systemd для Ollama и через Docker для контейнеров приложения.
-
Служба Ollama:
-
Запуск:
systemctl start ollama -
Остановка:
systemctl stop ollama -
Перезапуск:
systemctl restart ollama -
Включение при загрузке:
systemctl enable ollama -
Перезагрузка демона:
systemctl daemon-reload -
Контейнер Open WebUI:
-
Запуск:
docker start open-webui -
Остановка:
docker stop open-webui -
Перезапуск:
docker restart open-webui -
Обновление: Загрузите новый образ и пересоздайте контейнер, используя команду
docker runс флагом--rmдля старого контейнера (при необходимости), либо используйтеdocker pull, за которым следуетdocker update. -
Прокси Nginx:
-
Запуск/Перезапуск:
docker compose up -d, выполненная из директории/root/nginx. -
Остановка:
docker compose down, выполненная из директории/root/nginx.