Обзор развертывания Open WebUI с Ollama на сервере: Llama-3.3-70B¶
Предварительные требования и основные условия¶
Перед развертыванием на сервере должны быть выполнены следующие требования:
-
Операционная система: Ubuntu
-
Привилегии: Для конфигурации сервисов и управления контейнерами требуются права суперпользователя (root)
-
Домен: Приложение настроено для зоны
hostkey.in -
Порты:
-
Порт
11434для бэкенда Ollama -
Порт
8080для внутреннего сервиса Open WebUI -
Порт
443для внешнего доступа по HTTPS
FQDN финальной панели¶
Приложение доступно через Полное Уникальное Имя Домена (FQDN) в формате:
llama{Server ID}.hostkey.in:443
Замените {Server ID} на идентификатор конкретного сервера для доступа к панели.
Структура файлов и директорий¶
Для развертывания используется следующая структура каталогов для конфигурации, данных и сертификатов:
-
/root/nginx: Содержит конфигурацию Docker Compose для Nginx и Certbot. -
/root/nginx/compose.yml: Основной файл Docker Compose для обратного прокси-сервера. -
/data/nginx/user_conf.d/: Хранит пользовательские файлы конфигурации Nginx для конкретных доменов. -
/data/nginx/nginx-certbot.env: Переменные окружения для сервиса Nginx-Certbot. -
/data/nginx/user_conf.d/llama{Server ID}.hostkey.in.conf: Специфичная конфигурация Nginx для приложения. -
/etc/systemd/system/ollama.service: Файл сервиса Systemd для Ollama. -
/etc/systemd/system/ollama.service.bak: Резервная копия оригинального файла сервиса Ollama.
Процесс установки приложения¶
Стек приложения состоит из Ollama, работающего как нативный системный сервис, и Open WebUI, работающего в виде Docker-контейнера.
-
Установка Ollama:
-
Установлена через официальный shell-скрипт:
curl -fsSL https://ollama.com/install.sh | sh -
Создан системный пользователь
ollamaдля управления сервисом. -
Модель
llama3.3загружена и готова к использованию. -
Развертывание Open WebUI:
-
Развернут как Docker-контейнер с использованием образа
ghcr.io/open-webui/open-webui:cuda. -
Контейнер имеет имя
open-webuiи настроен на автоматический перезапуск. -
Ускорение GPU включено через флаг
--gpus all.
Права доступа и безопасность¶
-
Межсетевой экран (Firewall): Система разрешает входящий трафик на порту
443(HTTPS) для внешних пользователей. Внутренние сервисы общаются через порты8080и11434. -
Пользователи: Для запуска сервиса Ollama создан отдельный системный пользователь с именем
ollama. -
Ограничения сервисов:
-
Ollama настроен на прослушивание всех сетевых интерфейсов (
0.0.0.0). -
Ограничения по источнику отключены (
OLLAMA_ORIGINS=*) для разрешения запросов от интерфейса Open WebUI. -
Включена Flash Attention (
LLAMA_FLASH_ATTENTION=1) для оптимизации производительности.
Docker-контейнеры и их развертывание¶
Для развертывания используются следующие Docker-контейнеры:
-
Open WebUI:
-
Образ:
ghcr.io/open-webui/open-webui:cuda -
Отображение портов: Порт хоста
8080отображается на порт контейнера8080. -
Томы (Volumes): Именованный том
open-webuiподключен к/app/backend/dataдля сохранения данных. -
Переменные окружения:
-
ENV: Установлено вdev -
OLLAMA_BASE_URLS: Установлено вhttp://host.docker.internal:11434
-
-
Дополнительные флаги: Используется
--add-host=host.docker.internal:host-gatewayдля разрешения имени хоста изнутри контейнера. -
Прокси Nginx Certbot:
-
Образ:
jonasal/nginx-certbot:latest -
Режим сети:
host -
Томы:
-
nginx_secrets(внешний) подключен к/etc/letsencrypt -
/data/nginx/user_conf.dподключен к/etc/nginx/user_conf.d
-
-
Окружение: Использует
hkadm@hostkey.comдля уведомлений о сертификатах.
Прокси-серверы¶
Реализован обратный прокси-сервер на базе Nginx с автоматическим управлением SSL-сертификатами через Certbot.
-
ПО: Docker-контейнер Nginx-Certbot.
-
SSL/TLS: Включено через сертификаты Let's Encrypt, хранящиеся в томе
nginx_secrets. -
Конфигурация:
-
Конфигурация прокси находится в
/data/nginx/user_conf.d/llama{Server ID}.hostkey.in.conf. -
Директива
proxy_passнастроена на пересылку трафика наhttp://127.0.0.1:8080. -
Внешние запросы на порту
443перенаправляются на внутренний сервис Open WebUI.
Настройки прав доступа¶
-
Директория конфигурации Nginx:
-
Путь:
/root/nginx -
Владелец:
root -
Группа:
root -
Режим:
0755 -
Файл Docker Compose:
-
Путь:
/root/nginx/compose.yml -
Владелец:
root -
Группа:
root -
Режим:
0644
Расположение файлов конфигурации и данных¶
| Компонент | Конфигурация/Путь | Описание |
|---|---|---|
| Nginx Proxy | /root/nginx/compose.yml | Основное определение Docker Compose |
| Nginx Conf | /data/nginx/user_conf.d/llama{Server ID}.hostkey.in.conf | Правила прокси для конкретного домена |
| SSL Secrets | nginx_secrets (Docker том) | Сертификаты Let's Encrypt |
| Сервис Ollama | /etc/systemd/system/ollama.service | Файл единицы Systemd |
| Данные Open WebUI | open-webui (Docker том) | Данные бэкенд-приложения |
| Certbot Env | /data/nginx/nginx-certbot.env | Переменные окружения для прокси |
Доступные порты для подключения¶
-
Порт 443: Доступ по HTTPS к интерфейсу Open WebUI через пользовательский домен.
-
Порт 8080: Внутренний доступ к контейнеру Open WebUI (привязан к
127.0.0.1через прокси). -
Порт 11434: Внутренний доступ к API-сервису Ollama.
Запуск, остановка и обновление¶
-
Управление сервисом Ollama:
-
Перезапуск сервиса:
systemctl restart ollama -
Перезагрузка демона:
systemctl daemon-reload -
Сервис включен для запуска при загрузке системы.
-
Docker-контейнеры:
-
Open WebUI настроен с флагом
--restart always, чтобы гарантировать автоматический перезапуск при сбое или перезагрузке системы. -
Прокси Nginx-Certbot управляется через
docker composeв директории/root/nginx. -
Для перезапуска стека прокси выполните:
docker compose up -dиз директории/root/nginx.