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