Обзор развертывания Phi-4-14b на сервере¶
Предварительные требования¶
-
Операционная система: Ubuntu (с совместимостью с пакетным менеджером
apt). -
Привилегии: Для установки системных пакетов, управления контейнерами Docker и настройки сервисов systemd требуются права root или права
sudo. -
Доменная зона:
hostkey.in. -
Порты:
-
Внутренний порт приложения:
3000(для внутреннего использования). -
Внешний защищенный порт:
443(HTTPS через Nginx). -
Внутренний порт Ollama:
11434. -
Внутренний порт Open WebUI:
8080.
FQDN конечной панели¶
Приложение доступно по следующему формату полного доменного имени (Fully Qualified Domain Name): phi<Server ID>.hostkey.in:443
Замените <Server ID> на фактический числовой идентификатор, присвоенный вашему экземпляру сервера. Приложение работает через HTTPS на порту 443.
Структура файлов и каталогов¶
Для развертывания используется следующая структура каталогов для конфигураций, сертификатов и данных:
-
/root/nginx: Содержит файл Docker Compose для прокси Nginx и Certbot. -
/root/nginx/compose.yml: Конфигурация Docker Compose для сервисов Nginx и Certbot. -
/data/nginx/user_conf.d: Каталог, содержащий пользовательские файлы конфигурации Nginx для хоста. -
/data/nginx/user_conf.d/phi<Server ID>.hostkey.in.conf: Специфичная конфигурация Nginx для прокси приложения. -
/data/nginx/nginx-certbot.env: Файл окружения для сервиса Nginx/Certbot. -
/etc/systemd/system/ollama.service: Файл сервиса systemd для сервиса Ollama. -
/etc/systemd/system/ollama.service.bak: Резервная копия исходного файла сервиса Ollama. -
open-webui(Объем Docker): Постоянное хранилище для данных бэкенда Open WebUI (/app/backend/data).
Процесс установки приложения¶
Стек приложения состоит из трех основных компонентов: Ollama, Open WebUI и обратного прокси-сервера Nginx с поддержкой SSL.
-
Установка Ollama:
-
Ollama устанавливается с помощью официального скрипта установки оболочки.
-
Создается системный пользователь
ollamaдля управления сервисом. -
Сервис
ollamaнастраивается для прослушивания всех интерфейсов (0.0.0.0). -
Модель
phi4автоматически загружается во время настройки.
-
-
Развертывание Open WebUI:
-
Контейнер Open WebUI развертывается с использованием образа
ghcr.io/open-webui/open-webui:cuda. -
Контейнер настраивается для подключения к локальному экземпляру Ollama через шлюз
host.docker.internal. -
Ресурсы GPU передаются в контейнер с помощью флага
--gpus all.
-
-
Настройка Nginx и SSL:
-
Для запуска Nginx и Certbot для автоматического управления SSL-сертификатами используется настройка Docker Compose.
-
Конфигурация Nginx динамически обновляется для пересылки запросов на контейнер Open WebUI.
-
Контейнеры Docker и их развертывание¶
Система использует Docker для запуска веб-интерфейса и обратного прокси-сервера.
Контейнер Open WebUI¶
-
Образ:
ghcr.io/open-webui/open-webui:cuda -
Имя контейнера:
open-webui -
Масштабирование портов: Порт хоста
8080сопоставлен с портом контейнера8080. -
Доступ к GPU: Включен с помощью
--gpus all. -
Режим сети: Использует разрешение через шлюз хоста посредством
--add-host=host.docker.internal:host-gateway. -
Переменные окружения:
-
ENV:dev -
OLLAMA_BASE_URLS:http://host.docker.internal:11434 -
Политика перезапуска:
always
Контейнер Nginx и Certbot¶
-
Образ:
jonasal/nginx-certbot:latest -
Режим сети:
host -
Объемы:
-
nginx_secrets(внешний) сопоставлен с/etc/letsencrypt. -
Каталог хоста
/data/nginx/user_conf.dсопоставлен с/etc/nginx/user_conf.d. -
Окружение:
-
CERTBOT_EMAIL:hkadm@hostkey.com -
Загрузка файла окружения из
/data/nginx/nginx-certbot.env.
Прокси-серверы¶
В развертывании используется Nginx в качестве обратного прокси-сервера для обработки терминации SSL и маршрутизации трафика на внутреннее приложение.
-
Образ Nginx:
jonasal/nginx-certbot:latest -
Управление SSL: Осуществляется автоматически с помощью Certbot внутри контейнера Docker.
-
Конфигурация домена:
-
Файл конфигурации Nginx находится по адресу
/data/nginx/user_conf.d/phi<Server ID>.hostkey.in.conf. -
Директива
proxy_passв блокеlocation /настроена на пересылку трафика наhttp://127.0.0.1:8080. -
Путь к конфигурации:
-
Файл Compose:
/root/nginx/compose.yml. -
Пользовательская конфигурация:
/data/nginx/user_conf.d.
Запуск, остановка и обновление¶
Система использует комбинацию systemd для сервиса Ollama и Docker Compose для сервисов прокси.
Сервис Ollama¶
-
Запуск/Перезапуск:
-
Включение при загрузке:
Стек Nginx и Certbot¶
-
Запуск/Перезапуск контейнеров:
-
Остановка контейнеров:
Контейнер Open WebUI¶
-
Перезапуск контейнера:
-
Удаление и пересоздание контейнера:
Доступные порты для подключения¶
В развертывании используются следующие порты:
| Порт | Протокол | Сервис | Описание |
|---|---|---|---|
| 443 | HTTPS | Nginx | Внешний защищенный доступ через phi<Server ID>.hostkey.in |
| 8080 | HTTP | Open WebUI | Внутренняя точка доступа для веб-интерфейса |
| 11434 | HTTP | Ollama | Внутренний API-эндпоинт для движка инференса LLM |
| 3000 | HTTP | (Внутренний) | Упоминается в конфигурации, но не открыт наружу |
Права доступа и безопасность¶
-
Системный пользователь: Для сервиса Ollama создан отдельный системный пользователь
ollama. -
Межсетевой экран/Сеть: Приложение доступно извне только через HTTPS на порту
443. Внутренние сервисы (Ollama и Open WebUI) привязаны к определенным портам, но работают через прокси Nginx. -
Переменные окружения:
-
OLLAMA_HOST: Установлено значение0.0.0.0для разрешения подключений от контейнеров Docker. -
OLLAMA_ORIGINS: Установлено значение*для разрешения запросов с других источников (CORS). -
LLAMA_FLASH_ATTENTION: Установлено значение1для включения оптимизации flash attention.
Настройки разрешений¶
-
Каталог Nginx: Каталог
/root/nginxпринадлежит пользователюrootс правами0755. -
Файл Compose: Файл
/root/nginx/compose.ymlпринадлежит пользователюrootс правами0644. -
Каталог конфигурации Nginx: Каталог
/data/nginx/user_conf.dсодержит файлы конфигурации, доступные контейнеру Docker Nginx через монтирование тома. -
Сертификаты: SSL-сертификаты хранятся в Docker-объеме
nginx_secrets, смонтированном в/etc/letsencrypt.