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

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

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

Для развертывания требуется сервер Linux с операционной системой Ubuntu. Перед началом установки должны быть выполнены следующие условия:

  • Операционная система: Ubuntu (конкретная версия в конфигурации не ограничена, но используются стандартные репозитории Ubuntu).

  • Привилегии: Для установки системных пакетов, управления службами systemd и запуска контейнеров Docker требуются права root или привилегии sudo.

  • Настройка домена: Сервер должен быть настроен для разрешения домена hostkey.in.

  • Порты:

    • Порт 8080: Внутренняя коммуникация между прокси и приложением.

    • Порт 443: Внешний доступ по HTTPS к веб-интерфейсу.

    • Порт 11434: Внутренний сервис API Ollama.

FQDN финальной панели

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

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

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

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

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

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

    • /root/nginx/compose.yml: Файл Docker Compose для настройки Nginx и Certbot.
  • /data/nginx/: Хранит постоянные данные для прокси.

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

    • /data/nginx/nginx-certbot.env: Переменные окружения для службы Certbot.

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

  • /etc/systemd/system/: Содержит файл единицы службы для Ollama.

    • ollama.service: Активная конфигурация службы.

    • ollama.service.bak: Резервная копия исходного файла службы.

  • /usr/share/ollama/.ollama/models/: Место хранения модели gpt-oss:20b.

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

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

Стек приложения состоит из трех основных компонентов: Ollama, Open WebUI и прокси Nginx с Certbot.

Установка Ollama

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

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

  3. Единица службы systemd ollama.service модифицируется для включения следующих переменных окружения:

    • OLLAMA_HOST=0.0.0.0

    • OLLAMA_ORIGINS=*

    • LLAMA_FLASH_ATTENTION=1

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

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

Интерфейс Open WebUI развертывается как контейнер Docker со следующими спецификациями:

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

  • Имя контейнера: open-webui

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

  • Поддержка GPU: Контейнер запускается с флагом --gpus all для использования доступных ресурсов GPU.

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

    • ENV=dev

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

  • Том: Именованный том open-webui монтируется в /app/backend/data для сохранения данных.

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

Развертывание прокси

Прокси Nginx развертывается с использованием Docker Compose для обработки терминации SSL и маршрутизации.

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

Управляются два основных компонента Docker:

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

    • Запускается через прямую команду docker run.

    • Структура команды:

      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
      

  2. Контейнеры Nginx и Certbot:

    • Управляются через Docker Compose, расположенный по пути /root/nginx/compose.yml.

    • Определенные службы:

      • nginx: Использует образ jonasal/nginx-certbot:latest.

      • Режим сети установлен в host.

      • Монтированные тома:

        • nginx_secrets (внешний) в /etc/letsencrypt.

        • /data/nginx/user_conf.d в /etc/nginx/user_conf.d.

    • Команда развертывания:

      docker compose up -d
      
      Выполняется из каталога /root/nginx.

Прокси-серверы

Прокси-сервер Nginx обрабатывает внешний трафик и управление SSL-сертификатами.

  • Образ: jonasal/nginx-certbot:latest

  • Конфигурация:

    • Пользовательские блоки сервера хранятся в /data/nginx/user_conf.d/.

    • Файл конфигурации для этого приложения называется gpt-oss<Server ID>.hostkey.in.conf.

    • Директива proxy_pass настроена для пересылки запросов на http://127.0.0.1:8080.

  • SSL/Certbot:

    • Certbot интегрирован для управления сертификатами Let's Encrypt.

    • Электронная почта для уведомлений: hkadm@hostkey.com.

    • Сертификаты хранятся в томе nginx_secrets, смонтированном в /etc/letsencrypt.

  • Маршрутизация:

    • Внешние запросы к gpt-oss<Server ID>.hostkey.in на порт 443 маршрутизируются на внутренний сервис Open WebUI на порт 8080.

Базы данных

Приложение Open WebUI использует локальный том хранения для сохранения данных.

  • Тип хранения: Docker Volume.

  • Имя тома: open-webui.

  • Точка монтирования: /app/backend/data внутри контейнера.

  • Расположение на хосте: /var/lib/docker/volumes/open-webui/_data.

  • Метод подключения: Приложение получает доступ к данным напрямую через смонтированный том; строка подключения к внешней базе данных не требуется.

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

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

Порт Протокол Описание
8080 TCP Внутренний сервис Open WebUI (доступен через прокси).
11434 TCP Внутренний сервис API Ollama.
443 TCP Внешний доступ по HTTPS к веб-интерфейсу.

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

Служба Ollama

Управляется через systemd:

  • Запуск: systemctl start ollama

  • Остановка: systemctl stop ollama

  • Перезапуск: systemctl restart ollama

  • Включение: systemctl enable ollama

  • Перезагрузка демона: systemctl daemon-reload (Требуется после изменения ollama.service).

Контейнер Open WebUI

Управляется через Docker:

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

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

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

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

    docker pull ghcr.io/open-webui/open-webui:cuda
    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
    

Прокси Nginx

Управляется через Docker Compose в каталоге /root/nginx:

  • Запуск/Перезапуск: docker compose up -d

  • Остановка: docker compose down

  • Обновление: Измените /root/nginx/compose.yml или файлы окружения, затем выполните docker compose up -d.

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