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

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

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

    • Ollama устанавливается с помощью официального скрипта установки оболочки.

    • Создается системный пользователь ollama для управления сервисом.

    • Сервис ollama настраивается для прослушивания всех интерфейсов (0.0.0.0).

    • Модель phi4 автоматически загружается во время настройки.

  2. Развертывание Open WebUI:

    • Контейнер Open WebUI развертывается с использованием образа ghcr.io/open-webui/open-webui:cuda.

    • Контейнер настраивается для подключения к локальному экземпляру Ollama через шлюз host.docker.internal.

    • Ресурсы GPU передаются в контейнер с помощью флага --gpus all.

  3. Настройка 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

  • Запуск/Перезапуск:

    systemctl restart ollama
    

  • Включение при загрузке:

    systemctl enable ollama
    

Стек Nginx и Certbot

  • Запуск/Перезапуск контейнеров:

    cd /root/nginx
    docker compose up -d
    

  • Остановка контейнеров:

    cd /root/nginx
    docker compose down
    

Контейнер Open WebUI

  • Перезапуск контейнера:

    docker restart open-webui
    

  • Удаление и пересоздание контейнера:

    docker rm -f open-webui
    docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' -e OLLAMA_BASE_URLS='http://host.docker.internal:11434' --restart always ghcr.io/open-webui/open-webui:cuda
    

Доступные порты для подключения

В развертывании используются следующие порты:

Порт Протокол Сервис Описание
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.

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