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

Обзор развертывания 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.

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