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

Обзор развертывания DeepSeek-R1:70B на сервере

Предварительные требования и базовые условия

Для развертывания требуется сервер Linux с операционной системой Ubuntu и правами root. Должны быть доступны следующие компоненты системы:

  • Операционная система: Ubuntu (версия, совместимая с менеджером пакетов apt)

  • Права доступа: Доступ root (sudo или прямой shell root)

  • Требуемые пакеты: curl, ca-certificates

  • Сеть: Доступ в интернет для загрузки образов и моделей

  • Аппаратное обеспечение: Поддержка GPU требуется для контейнера open-webui для использования возможностей CUDA

FQDN финальной панели

Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):

  • deepseek<Server ID>.hostkey.in:443

Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера. Сервис слушает порт 443 для трафика HTTPS.

Структура файлов и каталогов

Развертывание использует следующую структуру каталогов для конфигурации, данных и сертификатов:

  • /root/nginx/: Содержит конфигурацию Docker Compose для прокси и Certbot.

  • /root/nginx/compose.yml: Файл Docker Compose, определяющий сервисы Nginx и Certbot.

  • /data/nginx/user_conf.d/: Каталог, содержащий пользовательские конфигурации виртуальных хостов Nginx.

  • deepseek<Server ID>.hostkey.in.conf: Конфигурация виртуального хоста HTTPS.

  • deepseek<Server ID>.hostkey.in.http.conf: Конфигурация виртуального хоста HTTP для вызовов ACME.

  • /data/nginx/nginx-certbot.env: Файл окружения для контейнера Nginx-Certbot.

  • /var/www/certbot/: Каталог webroot внутри контейнера Nginx для вызовов ACME от Let's Encrypt.

  • /etc/systemd/system/ollama.service: Файл сервиса Systemd для Ollama.

  • /etc/systemd/system/ollama.service.d/override.conf: Конфигурация drop-in для Systemd переменных окружения Ollama.

Процесс установки приложения

Стек приложения состоит из Ollama для инференса моделей и Open WebUI для пользовательского интерфейса.

  1. Установка Ollama:

  2. Сервис Ollama устанавливается с помощью официального скрипта установки.

  3. Модель deepseek-r1:70b загружается и сохраняется локально.

  4. Сервис настроен на прослушивание 0.0.0.0 и разрешает все источники (origins).

  5. Развертывание Open WebUI:

  6. Контейнер open-webui развертывается с использованием образа ghcr.io/open-webui/open-webui:cuda.

  7. Контейнер работает в режиме сети хоста (host network mode).

  8. Он настроен на подключение к локальному экземпляру Ollama по адресу http://127.0.0.1:11434.

  9. Запрос ресурсов GPU осуществляется через возможности устройств (device capabilities).

Права доступа и безопасность

  • Учетные записи пользователей: Создается системный пользователь с именем ollama для управления сервисом Ollama.

  • Межсетевой экран (Firewall): Прокси Nginx обрабатывает внешний трафик на порту 443 (HTTPS) и порту 80 (HTTP для перенаправления).

  • Внутренняя коммуникация:

  • Open WebUI общается с Ollama через 127.0.0.1:11434.

  • Nginx проксирует трафик к Open WebUI через 127.0.0.1:8080.

  • SSL/TLS: Сертификаты SSL управляются автоматически с помощью Certbot внутри контейнера Nginx.

Базы данных

  • Хранилище: Open WebUI хранит свои данные в томе Docker с именем open-webui, смонтированном в /app/backend/data внутри контейнера.

  • Подключение: Внешнее подключение к базе данных не настроено; приложение использует локальное хранилище внутри тома контейнера.

Контейнеры Docker и их развертывание

Развертываются два основных компонента Docker:

  1. Nginx-Certbot:

  2. Образ: jonasal/nginx-certbot:latest

  3. Режим сети: host

  4. Томы:

    • nginx_secrets (внешний), смонтированный в /etc/letsencrypt

    • /data/nginx/user_conf.d, смонтированный в /etc/nginx/user_conf.d

  5. Окружение: Настроено через /data/nginx/nginx-certbot.env и CERTBOT_EMAIL=hkadm@hostkey.com.

  6. Open WebUI:

  7. Образ: ghcr.io/open-webui/open-webui:cuda

  8. Имя: open-webui

  9. Режим сети: host

  10. Политика перезапуска: always

  11. Томы: open-webui, смонтированный в /app/backend/data

  12. Переменные окружения:

    • ENV: dev

    • OLLAMA_BASE_URLS: http://127.0.0.1:11434

  13. Запросы устройств: Включены возможности GPU.

Прокси-серверы

Nginx выступает в роли обратного прокси и терминала SSL для приложения.

  • Расположение конфигурации: /data/nginx/user_conf.d/deepseek<Server ID>.hostkey.in.conf

  • Конфигурация HTTPS:

  • Слушает порт 443.

  • Проксирует запросы на http://127.0.0.1:8080.

  • Устанавливает заголовок Host в значение $host.

  • Конфигурация HTTP:

  • Слушает порт 80.

  • Обрабатывает вызовы ACME в /.well-known/acme-challenge/.

  • Перенаправляет весь остальной трафик на HTTPS (перенаправление 301).

  • Управление сертификатами: Certbot работает внутри контейнера Nginx для автоматической выдачи и продления сертификатов.

Настройки прав доступа

  • Каталог Nginx: /root/nginx принадлежит root:root с правами 0755.

  • Файл Compose: /root/nginx/compose.yml принадлежит root:root с правами 0644.

  • Файлы конфигурации Nginx: Файлы в /data/nginx/user_conf.d/ принадлежат root:root с правами 0644.

  • Переопределение Systemd: /etc/systemd/system/ollama.service.d/override.conf принадлежит root:root.

Расположение файлов конфигурации и данных

Компонент Файл конфигурации Расположение данных
Прокси Nginx /root/nginx/compose.yml /data/nginx/user_conf.d/
Сертификаты SSL Н/Д (Управляется Certbot) /etc/letsencrypt (через том)
Сервис Ollama /etc/systemd/system/ollama.service.d/override.conf Локальная библиотека Ollama (путь по умолчанию)
Open WebUI Н/Д (Переменные окружения в Docker) Том Docker open-webui

Доступные порты для подключения

  • Порт 80: HTTP (Перенаправляет на HTTPS, обрабатывает вызовы ACME).

  • Порт 443: HTTPS (Основная точка входа для приложения).

  • Порт 11434: API Ollama (Только внутренний, привязан к 127.0.0.1).

  • Порт 8080: Open WebUI (Только внутренний, привязан к 127.0.0.1).

Запуск, остановка и обновление

  • Сервис Ollama:

  • Запуск: systemctl start ollama

  • Остановка: systemctl stop ollama

  • Перезапуск: systemctl restart ollama

  • Перезагрузка демона: systemctl daemon-reload (требуется после изменения переопределений systemd)

  • Контейнер Nginx-Certbot:

  • Запуск/Перезапуск: docker compose up -d (выполняется из /root/nginx)

  • Перезагрузка Nginx: docker exec nginx-nginx-1 nginx -s reload

  • Проверка конфигурации: docker exec nginx-nginx-1 nginx -t

  • Контейнер Open WebUI:

  • Запуск/Перезапуск: docker restart open-webui

  • Остановка: docker stop open-webui

  • Обновление образа: docker pull ghcr.io/open-webui/open-webui:cuda, за которым следует docker restart open-webui

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