Обзор развертывания Hallo3 на сервере¶
Предварительные требования¶
-
Операционная система: Ubuntu 22.04 (LTS).
-
Привилегии: Доступ Root или пользователь с правами
sudo. -
Домен: Приложение развертывается в домене
hostkey.in. -
Аппаратное обеспечение: Видеокарта NVIDIA с драйверами и поддержкой CUDA.
-
Порты:
-
Внутренний:
7860(Приложение). -
Внешний:
443(HTTPS).
-
Финальный URL доступа¶
Приложение доступно по следующему полностью квалифицированному доменному имени (FQDN): hallo<Server ID>.hostkey.in:443 (Замените <Server ID> на фактический идентификатор сервера).
Структура файлов и директорий¶
Развертывание использует следующие пути к директориям для конфигураций, данных и сертификатов:
-
/root/nginx: Директория для конфигурации Docker Compose Nginx. -
/root/nginx/compose.yml: Файл Docker Compose для обратного прокси-сервера Nginx и Certbot. -
/data/nginx/user_conf.d/: Директория, содержащая пользовательские файлы конфигурации Nginx. -
/data/nginx/nginx-certbot.env: Файл окружения для контейнера Nginx. -
/data/nginx/user_conf.d/hallo<Server ID>.hostkey.in.conf: Специфичная конфигурация прокси для Hallo3. -
/opt/miniconda3: Путь установки Miniconda. -
/opt/miniconda3/envs/hallo: Окружение Conda для приложения Hallo3. -
/opt/hallo3: Директория с исходным кодом приложения Hallo3. -
/opt/hallo3/pretrained_models: Директория для хранения загруженных моделей Hugging Face.
Процесс установки приложения¶
Приложение Hallo3 устанавливается следующим образом:
-
Подготовка системы: Применяются обновления системы, и устанавливается ядро Linux Hardware Enablement (HWE) для Ubuntu 22.04.
-
CUDA и драйверы NVIDIA:
-
Загружается и устанавливается ключевое кольцо репозитория CUDA (
cuda-keyring_1.1-1_all.deb). -
Пакеты
cuda-toolkitиnvidia-cuda-toolkitустанавливаются черезapt. -
Переменные окружения
PATHиLD_LIBRARY_PATHнастраиваются для включения бинарных файлов и библиотек CUDA. -
Драйвер
nouveauудаляется, и загружаются модули ядра NVIDIA.
-
-
Установка Miniconda:
-
Установщик Miniconda загружается и устанавливается в
/opt/miniconda3. -
Системный
PATHобновляется для включения бинарных файлов Miniconda.
-
-
Настройка приложения:
-
Репозиторий Hallo3 клонируется с GitHub (
https://github.com/fudan-generative-vision/hallo3) в/opt/hallo3. -
Создается новое окружение Conda с именем
halloи версией Python 3.10. -
Внутри окружения устанавливаются зависимости, перечисленные в
requirements.txt, а такжеgradio,ffmpegиhuggingface-hub.
-
-
Загрузка моделей: Предобученные модели скачиваются с Hugging Face в директорию
/opt/hallo3/pretrained_modelsс помощьюhuggingface-cli.
Контейнеры Docker и их развертывание¶
Обратное проксирование и управление SSL-сертификатами осуществляются контейнерами Docker, определенными в файле Compose.
-
Путь к файлу Compose:
/root/nginx/compose.yml -
Образ:
jonasal/nginx-certbot:latest -
Конфигурация сервиса:
-
Сервис Nginx работает в режиме
network_mode: host. -
Он автоматически перезапускается, если не был остановлен вручную (
restart: unless-stopped). -
SSL-сертификаты хранятся во внешнем именованном томе
nginx_secrets, смонтированном в/etc/letsencrypt. -
Пользовательские конфигурации монтируются из
/data/nginx/user_conf.dв/etc/nginx/user_conf.dвнутри контейнера.
-
Контейнер запускается с помощью команды:
выполненной из директории/root/nginx. Прокси-серверы¶
Nginx действует как обратный прокси-сервер для завершения SSL-соединений и пересылки трафика на приложение Hallo3.
-
SSL/TLS: Управляется автоматически контейнером
nginx-certbot. -
Конфигурация прокси:
-
Файл источника:
/data/nginx/user_conf.d/hallo<Server ID>.hostkey.in.conf -
Адрес назначения:
http://127.0.0.1:7860 -
Конфигурация перенаправляет трафик с внешнего домена на внутренний порт приложения.
-
Права доступа и безопасность¶
-
Права на директории:
-
/root/nginx: В собственностиrootс правами0755. -
/root/nginx/compose.yml: В собственностиrootс правами0644.
-
-
Межсетевой экран (Firewall): Приложение доступно безопасно через порт
443(HTTPS). Прямой доступ к внутреннему порту7860в внешний сетевой сегмент не открыт. -
Конфигурация пользователя: Приложение выполняется в контексте пользователя, запускающего скрипты развертывания, используя директорию
rootдля управления Docker.
Доступные порты для подключения¶
| Порт | Протокол | Назначение | Статус |
|---|---|---|---|
| 443 | HTTPS | Публичный доступ через домен | Открыт |
| 7860 | TCP | Внутренний сервис приложения | Только Localhost |
Запуск, остановка и обновление¶
Приложение Hallo3 выполняется как фоновый процесс с использованием Python.
-
Запуск приложения: Приложение запускается активацией окружения Conda и выполнением начального скрипта:
-
Управление службами Docker: Для запуска, остановки или обновления контейнера прокси Nginx: