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

Обзор развертывания gpt-oss-120b на сервере

Предварительные требования и базовые условия

Для развертывания требуется сервер Linux с операционной системой Ubuntu и правами root. В системе должен быть установлен и настроен Docker для поддержки ускорения GPU для работы ИИ-модели. Необходимы следующие компоненты:

  • Операционная система: Ubuntu

  • Права доступа: Доступ root (sudo)

  • Сеть: Доступ в интернет для загрузки моделей и сертификатов

  • Аппаратное обеспечение: Поддержка GPU для ускорения CUDA

FQDN целевой панели

Приложение доступно по следующему формату полного доменного имени (FQDN):

  • gpt-oss<Server ID>.hostkey.in:443

Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера.

Структура файлов и каталогов

Развертывание использует следующую структуру каталогов для конфигурации, данных и сертификатов:

  • /root/nginx/: Содержит конфигурацию Docker Compose для прокси и управления SSL.

  • /data/nginx/user_conf.d/: Хранит пользовательские файлы конфигурации Nginx для конкретного домена.

  • /data/nginx/nginx-certbot.env: Файл окружения для сервиса Nginx-Certbot.

  • /etc/systemd/system/ollama.service: Файл сервиса Systemd для бэкенда Ollama.

  • /usr/share/ollama/.ollama/models/: Место хранения загруженных моделей ИИ.

  • /var/lib/docker/volumes/open-webui/: Постоянный том хранения для данных приложения Open WebUI.

Процесс установки приложения

Приложение состоит из бэкенд-движка ИИ (Ollama) и фронтенд-интерфейса (Open WebUI). Установка включает следующие шаги:

  1. Установка Ollama: Пакет Ollama устанавливается с помощью официального скрипта установки.

  2. Настройка сервиса Ollama: Файл ollama.service модифицируется для установки следующих переменных окружения:

    • OLLAMA_HOST=0.0.0.0

    • OLLAMA_ORIGINS=*

    • LLAMA_FLASH_ATTENTION=1

  3. Загрузка модели: Модель gpt-oss:20b загружается и сохраняется локально.

  4. Развертывание Open WebUI: Фронтенд развертывается как контейнер Docker с использованием образа ghcr.io/open-webui/open-webui:cuda.

Контейнеры Docker и их развертывание

Для запуска стека приложения развертываются два основных контейнера Docker:

  1. Контейнер Open WebUI:

    • Образ: ghcr.io/open-webui/open-webui:cuda

    • Имя: open-webui

    • Порты: Маппинг порта хоста 8080 на порт контейнера 8080.

    • Переменные окружения:

      • ENV=dev

      • OLLAMA_BASE_URLS=http://host.docker.internal:11434

    • Томы: Монтирование тома open-webui в /app/backend/data.

    • GPU: Настроен с параметром --gpus all для поддержки CUDA.

    • Политика перезапуска: Установлена в always.

  2. Контейнер 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, управляемым Certbot.

  • Конфигурация прокси: Файл конфигурации Nginx, расположенный по пути /data/nginx/user_conf.d/gpt-oss<Server ID>.hostkey.in.conf, направляет трафик во внутреннее приложение.

  • Proxy Pass: Трафик перенаправляется с внешнего порта на внутренний сервис с использованием правила: proxy_pass http://127.0.0.1:8080;.

  • SSL: Автоматически управляется контейнером nginx-certbot для обеспечения подключения по HTTPS на порту 443.

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

Для приложения настроены следующие порты:

  • Порт 443: Внешний доступ по HTTPS через прокси Nginx.

  • Порт 8080: Внутренний доступ по HTTP для контейнера Open WebUI.

  • Порт 11434: Внутренний доступ для сервиса Ollama (доступен через host.docker.internal изнутри контейнера).

Запуск, остановка и обновление

Управление сервисами осуществляется с помощью команд Docker и Systemd:

  • Контейнер Open WebUI:

    • Запуск: docker start open-webui

    • Остановка: docker stop open-webui

    • Перезапуск: docker restart open-webui

    • Обновление: Загрузить последний образ и пересоздать контейнер.

  • Сервис 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.

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