Обзор развертывания 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).
-
Установка Ollama: Сервис Ollama устанавливается с помощью shell-скрипта с официального источника.
-
Настройка Ollama: Файл
ollama.serviceизменяется для включения определенных переменных окружения:-
OLLAMA_HOST=0.0.0.0 -
OLLAMA_ORIGINS=* -
LLAMA_FLASH_ATTENTION=1После этого сервис перезагружается и перезапускается для применения этих изменений.
-
-
Развертывание модели: Модель
gpt-oss:20bзагружается и сохраняется локально. -
Развертывание фронтенда: Фронтенд 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 и их развертывание¶
В развертывании используются два основных контейнеризированных компонента:
-
Open WebUI: Развертывается с использованием отдельной команды
docker run. -
Nginx и Certbot: Развертываются с использованием Docker Compose, расположенного в
Данная команда выполняется из директории/root/nginx/compose.yml. Эта настройка обрабатывает SSL-сертификаты и обратное проксирование./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, указывающую на внутреннее приложение: -
Сопоставление доменов: Трафик, предназначенный для
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