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

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

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

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

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

  • Права доступа: Для установки и настройки требуются права суперпользователя (root) или права sudo.

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

  • Порты:

  • Внутренний порт приложения: 8080

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

  • Порт сервиса Ollama: 11434

FQDN финальной панели управления

Приложение доступно по полностью квалифицированному доменному имени в домене hostkey.in в следующем формате: gpt-oss<Server ID>.hostkey.in:443

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

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

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

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

  • /root/nginx/compose.yml: Конфигурация Docker Compose для Nginx и Certbot.

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

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

  • /data/nginx/user_conf.d/: Директория, содержащая специфичные файлы конфигурации сервера.

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

  • /usr/share/ollama/.ollama/models/: Расположение хранения модели gpt-oss.

  • /var/lib/docker/volumes/open-webui/_data: Объем Docker для постоянного хранения данных Open WebUI.

  • /etc/systemd/system/ollama.service: Файл юнита systemd для сервиса Ollama.

  • /etc/systemd/system/ollama.service.bak: Резервная копия исходного файла сервиса Ollama.

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

Приложение состоит из двух основных компонентов: бэкенд-движок ИИ (Ollama) и интерфейс фронтенда (Open WebUI).

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

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

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

    • OLLAMA_HOST=0.0.0.0

    • OLLAMA_ORIGINS=*

    • LLAMA_FLASH_ATTENTION=1 После этого сервис перезагружается и перезапускается для применения этих изменений.

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

    ollama pull gpt-oss:20b
    

  4. Развертывание фронтенда: Фронтенд Open WebUI развертывается как контейнер Docker с именем open-webui и тегом cuda, проецируемый на порт 8080.

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

Безопасность и доступ управляются с помощью следующих механизмов:

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

  • Межсетевой экран (Firewall): Внешний трафик маршрутизируется через Nginx, который обрабатывает терминацию SSL. Прямой доступ к внутренним портам не открыт публично.

  • Ограничения контейнера: Контейнер Open WebUI запускается с флагом --gpus all для включения аппаратного ускорения и использует шлюз хоста для внутреннего взаимодействия.

Базы данных

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

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

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

  • Метод подключения: Внутреннее файловое хранилище, управляемое приложением.

Контейнеры 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. Эта настройка обрабатывает SSL-сертификаты и обратное проксирование.

    docker compose up -d
    
    Данная команда выполняется из директории /root/nginx.

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

Для управления SSL-сертификатами и пересылки трафика на внутреннее приложение используется обратный прокси Nginx с интегрированным Certbot.

  • Сервис: Nginx (через образ jonasal/nginx-certbot:latest).

  • SSL: Управляется автоматически через Certbot с использованием домена gpt-oss<Server ID>.hostkey.in.

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

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

  • Конфигурация включает директиву proxy_pass, указывающую на внутреннее приложение:

    proxy_pass http://127.0.0.1:8080;
    

  • Сопоставление доменов: Трафик, предназначенный для gpt-oss<Server ID>.hostkey.in, пересылается на внутренний порт 8080.

Настройки разрешений

Применяются следующие права доступа к файлам и директориям:

  • /root/nginx/: 0755 (Владелец: root, Группа: root).

  • /root/nginx/compose.yml: 0644 (Владелец: root, Группа: root).

  • /etc/systemd/system/ollama.service: Управляется systemd с правами владельца root.

  • Объемы Docker и данные сервисов управляются пользователем root и специфичными пользователями сервисов (например, ollama).

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

Файлы конфигурации и данные расположены по следующим путям:

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

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

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

Порт Протокол Описание
443 HTTPS Внешний доступ через gpt-oss<Server ID>.hostkey.in
8080 HTTP Внутренний доступ для Open WebUI (проксируется через Nginx)
11434 HTTP Внутренний доступ для API Ollama (доступно через host.docker.internal)

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

Управление сервисами выполняется с использованием стандартных системных команд и команд Docker.

Сервис Ollama:

  • Запуск: systemctl start ollama

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

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

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

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

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

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

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

  • Логи: docker logs open-webui

Nginx и Certbot (Docker Compose):

  • Запуск: docker compose up -d (выполняется в /root/nginx)

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

  • Перезапуск: docker compose restart

  • Логи: docker compose logs -f

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