Обзор развертывания 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¶
-
Пакет Ollama устанавливается с использованием официального скрипта установки.
-
Создается системный пользователь с именем
ollama. -
Единица службы systemd
ollama.serviceмодифицируется для включения следующих переменных окружения:-
OLLAMA_HOST=0.0.0.0 -
OLLAMA_ORIGINS=* -
LLAMA_FLASH_ATTENTION=1
-
-
Модель
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:
-
Контейнер Open WebUI:
-
Запускается через прямую команду
docker run. -
Структура команды:
-
-
Контейнеры 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.
-
-
-
Команда развертывания:
Выполняется из каталога/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.