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

Обзор развертывания 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, развернутых следующим образом:

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

    • Сервис Ollama устанавливается с использованием официального скрипта установки.

    • Модель phi4 загружается (pull) и подгружается в среду выполнения Ollama.

    • Сервис настроен на прослушивание всех сетевых интерфейсов (0.0.0.0) и включает оптимизацию flash attention.

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

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