Gemma-3-27B¶
Предварительные требования¶
-
Операционная система: Ubuntu Linux
-
Привилегии: Для внесения изменений в систему, установки Docker и управления службами требуются права root или привилегии
sudo. -
Оборудование: Система должна быть оснащена графическими процессорами NVIDIA для поддержки
nvidia-container-runtime. -
Сеть: Требуется подключение к Интернету для получения образов Docker и загрузки модели Gemma3.
FQDN конечной панели¶
Приложение доступно по следующему полностью квалифицированному доменному имени (FQDN) в домене hostkey.in:
-
Адрес:
gemma<Server ID>.hostkey.in:443 -
Замените
<Server ID>на конкретный идентификатор, назначенный вашему экземпляру.
Структура файлов и директорий¶
Следующие директории и файлы содержат критически важные конфигурации и данные:
-
/root/nginx/: Директория с файлами конфигурации прокси Nginx и Certbot. -
/root/nginx/compose.yml: Файл Docker Compose для стека Nginx/Certbot. -
/etc/systemd/system/ollama.service: Файл юнита службы Systemd для бэкенда Ollama. -
/etc/systemd/system/ollama.service.bak: Резервная копия оригинального файла службы Ollama. -
/etc/docker/daemon.json: Файл конфигурации демона Docker, определяющий рантайм NVIDIA. -
/data/nginx/: Директория для данных Nginx, включая SSL-сертификаты и конфигурации пользователей. -
/data/nginx/nginx-certbot.env: Переменные окружения для службы Certbot. -
/data/nginx/user_conf.d/: Директория для пользовательских сниппетов конфигурации Nginx. -
/etc/letsencrypt/: Внешний том (volume) для монтирования SSL-секретов, управляемых Nginx-Certbot. -
/app/backend/data/: Внутренний том (volume) для монтирования постоянных данных Open-WebUI.
Процесс установки приложения¶
Установка состоит из трех основных компонентов: бэкенд Ollama, рантайм для GPU NVIDIA и фронтенд Open-WebUI.
Настройка бэкенда Ollama¶
-
Установите Ollama, используя официальный скрипт установки.
-
Создайте системного пользователя с именем
ollama. -
Измените файл
ollama.service, чтобы сделать службу доступной на всех сетевых интерфейсах, и включите определенные переменные окружения для производительности и безопасности: -
OLLAMA_HOST=0.0.0.0 -
OLLAMA_ORIGINS=* -
LLAMA_FLASH_ATTENTION=1 -
Перезагрузите демон systemd и перезапустите службу Ollama.
-
Загрузите конкретную модель
gemma3:27b, используя командуollama pull gemma3:27b.
Настройка NVIDIA Container Toolkit¶
-
Установите пакет
nvidia-container-toolkit. -
Настройте рантайм контейнера NVIDIA для Docker, выполнив
nvidia-ctk runtime configure --runtime=docker. -
Обновите файл
/etc/docker/daemon.json, установивnvidiaв качестве рантайма по умолчанию. -
Перезапустите службу Docker для применения изменений рантайма.
Настройка фронтенда Open-WebUI¶
-
Удалите любой существующий контейнер с именем
open-webui. -
Разверните контейнер Open-WebUI, используя образ
ghcr.io/open-webui/open-webui:cuda. -
Настройте контейнер для публикации порта
8080и использования всех доступных GPU. -
Установите переменную окружения
OLLAMA_BASE_URLSв значениеhttp://host.docker.internal:11434. -
Установите переменную окружения
ENVсо значениемdev.
Права доступа и безопасность¶
-
Пользователь Docker: Пользователь
ollamaсоздается как системный пользователь для управления службой бэкенда. -
Оригины Ollama: Переменная окружения
OLLAMA_ORIGINSустановлена в значение*, что позволяет запросы с любого источника. -
Nginx/Certbot: Контейнер Nginx работает в режиме сети
host, чтобы обрабатывать HTTPS-трафик напрямую на сетевом интерфейсе сервера. -
Персистентность служб: Служба Ollama и контейнер Open-WebUI настроены на автоматический перезапуск при сбое или перезагрузке системы.
Базы данных¶
-
Хранение: Приложение Open-WebUI сохраняет свои данные в томе Docker с именем
open-webui, который отображается в директорию/app/backend/dataвнутри контейнера. -
Подключение: Внешнее подключение к базе данных не настроено; приложение использует свой внутренний механизм хранения в смонтированном томе.
Контейнеры Docker и их развертывание¶
В данной архитектуре используются два отдельных развертывания Docker:
Контейнер Open-WebUI¶
-
Образ:
ghcr.io/open-webui/open-webui:cuda -
Имя:
open-webui -
Порты: Внутренний порт
8080отображается на порт хоста8080. -
GPU: Настроен с параметром
--gpus allдля использования аппаратного ускорения NVIDIA. -
Томы: Том
open-webuiсмонтирован в/app/backend/data. -
Хосты: Добавлена DNS-запись
host.docker.internal, указывающая на шлюз хоста. -
Переменные окружения:
-
ENV=dev -
OLLAMA_BASE_URLS=http://host.docker.internal:11434
Контейнер Nginx-Certbot¶
-
Образ:
jonasal/nginx-certbot:latest -
Метод развертывания: Docker Compose, расположенный в
/root/nginx/compose.yml. -
Томы:
-
nginx_secrets(внешний том), смонтированный в/etc/letsencrypt. -
Путь на хосте
/data/nginx/user_conf.d, смонтированный в/etc/nginx/user_conf.d. -
Окружение:
-
CERTBOT_EMAIL=hkadm@hostkey.com -
Загружает дополнительные переменные из
/data/nginx/nginx-certbot.env. -
Режим сети:
host
Прокси-серверы¶
-
ПО: Nginx с Certbot для управления SSL-сертификатами.
-
Образ:
jonasal/nginx-certbot:latest -
Конфигурация:
-
Управляет SSL-сертификатами для домена
gemma<Server ID>.hostkey.in. -
Перенаправляет трафик с внешнего порта
443(HTTPS) на внутренний порт8080. -
Использует режим сети
host, связываясь напрямую с сетевым стеком сервера. -
Электронная почта: Уведомления о продлении SSL настроены для адреса
hkadm@hostkey.com.
Настройки разрешений¶
-
Директория Nginx: Директория
/root/nginxпринадлежитroot:rootс правами0755. -
Файл Compose: Файл
/root/nginx/compose.ymlпринадлежитroot:rootс правами0644. -
Демон Docker: Файл
/etc/docker/daemon.jsonпринадлежит root с правами0644.
Расположение файлов конфигурации и данных¶
| Компонент | Файл/Путь конфигурации | Описание |
|---|---|---|
| Nginx Proxy | /root/nginx/compose.yml | Определение Docker Compose для Nginx и Certbot. |
| Служба Ollama | /etc/systemd/system/ollama.service | Файл юнита Systemd для бэкенда Ollama. |
| Демон Docker | /etc/docker/daemon.json | Конфигурация рантайма для поддержки NVIDIA. |
| Данные Nginx | /data/nginx/ | Корневая директория для логов, конфигов и сертификатов Nginx. |
| SSL Секреты | /data/nginx/user_conf.d/ | Директория для пользовательской конфигурации Nginx. |
| Данные Open-WebUI | Том Docker open-webui | Постоянное хранилище для веб-интерфейса. |
Доступные порты для подключения¶
-
443 (HTTPS): Внешний доступ к фронтенду Open-WebUI через прокси Nginx.
-
8080 (HTTP): Внутренний доступ к контейнеру Open-WebUI (используется прокси Nginx).
-
11434 (HTTP): Внутренний доступ к конечной точке API Ollama.
Запуск, остановка и обновление¶
Служба Ollama¶
-
Запуск:
systemctl start ollama -
Остановка:
systemctl stop ollama -
Перезапуск:
systemctl restart ollama -
Включение в автозагрузку:
systemctl enable ollama
Контейнер Open-WebUI¶
-
Запуск:
docker start open-webui -
Остановка:
docker stop open-webui -
Удаление:
docker rm -f open-webui -
Перезапуск:
docker restart open-webui
Контейнер Nginx-Certbot¶
-
Запуск/Обновление: Перейдите в
/root/nginxи выполнитеdocker compose up -d. -
Остановка: Перейдите в
/root/nginxи выполнитеdocker compose down.