Обзор развертывания 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 для пользовательского интерфейса.
-
Установка Ollama:
-
Сервис Ollama устанавливается с помощью официального скрипта установки.
-
Модель
deepseek-r1:70bзагружается и сохраняется локально. -
Сервис настроен на прослушивание
0.0.0.0и разрешает все источники (origins). -
Развертывание Open WebUI:
-
Контейнер
open-webuiразвертывается с использованием образаghcr.io/open-webui/open-webui:cuda. -
Контейнер работает в режиме сети хоста (host network mode).
-
Он настроен на подключение к локальному экземпляру Ollama по адресу
http://127.0.0.1:11434. -
Запрос ресурсов 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:
-
Nginx-Certbot:
-
Образ:
jonasal/nginx-certbot:latest -
Режим сети:
host -
Томы:
-
nginx_secrets(внешний), смонтированный в/etc/letsencrypt -
/data/nginx/user_conf.d, смонтированный в/etc/nginx/user_conf.d
-
-
Окружение: Настроено через
/data/nginx/nginx-certbot.envиCERTBOT_EMAIL=hkadm@hostkey.com. -
Open WebUI:
-
Образ:
ghcr.io/open-webui/open-webui:cuda -
Имя:
open-webui -
Режим сети:
host -
Политика перезапуска:
always -
Томы:
open-webui, смонтированный в/app/backend/data -
Переменные окружения:
-
ENV:dev -
OLLAMA_BASE_URLS:http://127.0.0.1:11434
-
-
Запросы устройств: Включены возможности 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