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

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

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

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

  • Сервер должен иметь права root или доступ через sudo.

  • На системе должна быть доступна утилита curl.

  • Docker Engine должен быть установлен и запущен.

  • Служба ollama должна быть установлена и настроена на прослушивание всех сетевых интерфейсов.

  • Домен hostkey.in должен быть доступен для разрешения DNS и генерации сертификатов.

  • Порты 8080 (внутренний) и 443 (внешний) должны быть доступны для маршрутизации трафика.

FQDN конечной панели

Приложение доступно через Полное доменное имя (Fully Qualified Domain Name, FQDN), используя домен hostkey.in. Формат следует паттерну: префикс, за которым следует ID сервера и порт.

  • Базовый домен: hostkey.in

  • Формат URL: gpt-oss<Server ID>.hostkey.in:443

  • Протокол доступа: HTTPS

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

Приложение использует определенные директории для конфигурации, хранения данных и SSL-сертификатов. Ключевые расположения приведены ниже:

  • Директория конфигурации Nginx: /root/nginx

  • Файл Nginx Compose: /root/nginx/compose.yml

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

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

  • Том SSL-сертификатов: Подключен в точке /etc/letsencrypt внутри контейнера Nginx.

  • Директория моделей Ollama: /usr/share/ollama/.ollama/models

  • Том данных Open WebUI: Сопоставлен с том Docker open-webui (физический путь обычно /var/lib/docker/volumes/open-webui/_data).

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

Установка включает настройку бэкенда Ollama и фронтенда Open WebUI через Docker.

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

    curl -fsSL https://ollama.com/install.sh | sh
    

  2. Настройка системной службы Ollama: Служба ollama модифицируется для прослушивания всех интерфейсов (0.0.0.0) и включения определенных переменных окружения для Origins и Flash Attention. Файл службы находится в /etc/systemd/system/ollama.service.

  3. Установленные переменные окружения:

    • OLLAMA_HOST=0.0.0.0

    • OLLAMA_ORIGINS=*

    • LLAMA_FLASH_ATTENTION=1

  4. Загрузка модели: Конкретная модель gpt-oss:20b загружается в репозиторий Ollama.

    ollama pull gpt-oss:20b
    

  5. Развертывание Open WebUI: Контейнер Open WebUI развертывается с поддержкой GPU и конкретными переменными окружения для подключения к локальному экземпляру Ollama.

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

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

  8. Сопоставление портов: Открывает порт хоста 8080 для порта контейнера 8080.

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

В этом развертывании управляются два основных контейнера Docker: Open WebUI и Nginx Certbot.

Контейнер 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
    

  • Ключевые параметры:

  • --gpus all: Включает ускорение через GPU.

  • -v open-webui:/app/backend/data: Обеспечивает сохранение данных приложения.

  • -e OLLAMA_BASE_URLS: Указывает на экземпляр Ollama через шлюз хоста.

Контейнер Nginx и Certbot:

  • Метод развертывания: Управляется через docker compose в директории /root/nginx.

  • Файл конфигурации: /root/nginx/compose.yml.

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

  • Режим сети: host.

  • Тома:

  • nginx_secrets (внешний) сопоставлен с /etc/letsencrypt.

  • Директория хоста /data/nginx/user_conf.d сопоставлена с /etc/nginx/user_conf.d.

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

  • CERTBOT_EMAIL=hkadm@hostkey.com

Проксильные серверы

Доступ к приложению управляется через контейнер прокси Nginx, который обрабатывает завершение SSL и маршрутизацию.

  • Программное обеспечение прокси: Nginx с Certbot для SSL-сертификатов Let's Encrypt.

  • Расположение конфигурации: Пользовательская конфигурация добавляется в /data/nginx/user_conf.d/gpt-oss<Server ID>.hostkey.in.conf.

  • Правило маршрутизации: Блок location / проксирует запросы к внутреннему экземпляру Open WebUI.

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
    

  • Внешний порт: 443 (HTTPS).

  • Внутренний порт: 8080 (HTTP).

Права доступа и безопасность

  • Системный пользователь: Выделенный системный пользователь ollama создается и используется службой Ollama.

  • Межсетевой экран (Firewall): Конфигурация предполагает, что внешний трафик разрешен на порту 443. Внутренний трафик на порту 8080 обрабатывается локально.

  • SSL/TLS: Безопасные соединения обеспечиваются через контейнер Nginx с использованием сертификатов Let's Encrypt, управляемых Certbot.

  • Ограничения: Конфигурация прокси Nginx ограничивает доступ к конкретному поддомену, определенному в директории user_conf.d.

Расположение файлов конфигурации и данных

Следующая таблица резюмирует критические расположения файлов для развертывания:

Компонент Путь к файлу/директории Описание
Директория конфигурации Nginx /root/nginx Директория, содержащая настройку Docker Compose для прокси.
Файл Nginx Compose /root/nginx/compose.yml Определение контейнеров Nginx и Certbot.
Пользовательская конфигурация Nginx /data/nginx/user_conf.d/gpt-oss<Server ID>.hostkey.in.conf Конкретные правила прокси для домена приложения.
SSL-секреты /etc/letsencrypt (Docker том) Хранилище для SSL-сертификатов (подключенный том).
Служба Ollama /etc/systemd/system/ollama.service Файл сервиса systemd для бэкенда Ollama.
Резервная копия Ollama /etc/systemd/system/ollama.service.bak Резервная копия исходного файла сервиса.
Данные Open WebUI /var/lib/docker/volumes/open-webui/_data Физическое расположение Docker-тома для данных приложения.
Модели Ollama /usr/share/ollama/.ollama/models Хранилище для загруженных AI-моделей.

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

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

  • Порт 443:

  • Тип: Внешний (HTTPS)

  • Использование: Безопасный веб-доступ через домен hostkey.in.

  • Служба: Прокси Nginx.

  • Порт 8080:

  • Тип: Внутренний (HTTP)

  • Использование: Локальное подключение от прокси Nginx к контейнеру Open WebUI.

  • Служба: Open WebUI.

  • Порт 11434:

  • Тип: Внутренний (HTTP)

  • Использование: Локальное подключение от контейнера Open WebUI к бэкенду Ollama.

  • Служба: Ollama.

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

Управление службами осуществляется с помощью команд Docker для контейнеров и systemctl для службы Ollama.

  • Перезапуск прокси: Стек контейнеров Nginx и Certbot управляется через Docker Compose в директории /root/nginx.

    cd /root/nginx
    docker compose up -d
    

  • Перезапуск Open WebUI: Контейнер Open WebUI настроен с параметром --restart always, что означает автоматический перезапуск при сбое или перезагрузке. Для ручного перезапуска:

    docker restart open-webui
    

  • Управление службой Ollama: Служба Ollama управляется через systemd.

  • Перезагрузка демона systemd после изменений конфигурации:

    systemctl daemon-reload
    

  • Перезапуск службы:

    systemctl restart ollama
    

  • Проверка статуса:

    systemctl status ollama
    

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