Обзор развертывания Hallo3 на сервере¶
Предварительные требования и базовые условия¶
Для развертывания Hallo3 требуется среда Linux с определенными аппаратными и программными зависимостями для обеспечения корректной работы приложения с ускорением GPU и веб-интерфейса.
-
Операционная система: Требуется Ubuntu 22.04 LTS.
-
Привилегии: Для системных установок и управления службами необходим доступ root или права
sudo. -
Аппаратное обеспечение: Наличие GPU NVIDIA с совместимыми драйверами является обязательным условием для запуска приложения.
-
Программные зависимости:
-
CUDA Toolkit
-
Драйверы NVIDIA (версия 550-server или совместимая)
-
Docker Engine
-
Miniconda
-
FFmpeg
-
Сеть: Сервер должен иметь исходящий доступ в интернет для загрузки репозиториев, моделей и сертификатов.
FQDN финальной панели¶
Приложение доступно через домен hostkey.in с использованием следующего формата Полного Квалифицированного Доменного Имени (FQDN):
-
Формат:
hallo<Server ID>.hostkey.in -
Порт:
443(HTTPS)
Финальный адрес будет выглядеть как hallo<Server ID>.hostkey.in:443.
Структура файлов и каталогов¶
Приложение и его вспомогательные компоненты организованы в следующих каталогах на хост-системе:
-
Исходный код приложения:
/opt/hallo3 -
Содержит репозиторий Hallo3, клонированный с GitHub.
-
Предобученные модели:
/opt/hallo3/pretrained_models -
Хранит загруженные модели с Hugging Face.
-
Установка Miniconda:
/opt/miniconda3 -
Содержит среду Python и среду Conda
hallo. -
Конфигурация Nginx:
/root/nginx -
Содержит файл Docker Compose для службы прокси.
-
Пользовательская конфигурация Nginx:
/data/nginx/user_conf.d -
Хранит специфичный файл конфигурации для домена Hallo3.
-
Секреты Nginx:
/data/nginx -
Хранит SSL-сертификаты и переменные окружения для прокси.
Процесс установки приложения¶
Приложение Hallo3 устанавливается вручную на хост-систему с помощью следующих шагов:
-
Подготовка системы:
-
Обновите пакеты системы и установите стек Linux Hardware Enablement (HWE) для Ubuntu 22.04.
-
Установите компилятор GCC, необходимый для установки CUDA.
-
Установка CUDA и драйверов NVIDIA:
-
Загрузите и установите пакет ключей репозитория CUDA.
-
Установите пакеты
cuda-toolkitиnvidia-cuda-toolkit. -
Настройте переменные окружения (
PATHиLD_LIBRARY_PATH) в файле~/.bashrc, включив в них бинарные файлы и библиотеки CUDA. -
Загрузите модули ядра NVIDIA и проверьте драйвер с помощью команды
nvidia-smi. -
Настройка Miniconda:
-
Загрузите скрипт установщика Miniconda.
-
Установите Miniconda в каталог
/opt/miniconda3в пакетном режиме (batch mode). -
Инициализируйте Conda для среды оболочки.
-
Репозиторий Hallo3 и среда выполнения:
-
Клонируйте репозиторий Hallo3 с адреса
https://github.com/fudan-generative-vision/hallo3в каталог/opt/hallo3. -
Создайте новую среду Conda с именем
halloи версией Python 3.10. -
Активируйте среду
halloи установите зависимости Python, перечисленные в файлеrequirements.txt, а также пакетgradio. -
Загрузка моделей:
-
Установите пакет
huggingface-hub. -
Загрузите предобученные модели из репозитория
fudan-generative-ai/hallo3в каталог/opt/hallo3/pretrained_models. -
Запуск приложения:
-
Запустите приложение, выполнив команду
python hallo3/app.pyвнутри среды Condahallo. -
Приложение слушает порт
7860.
Контейнеры Docker и их развертывание¶
Обратный прокси и завершение SSL-соединений управляются через контейнеры Docker с использованием Docker Compose.
-
Расположение файла Compose:
/root/nginx/compose.yml -
Имя службы:
nginx -
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Режим сети:
host -
Томы (Volumes):
-
nginx_secrets(внешний том), смонтированный в/etc/letsencryptвнутри контейнера. -
/data/nginx/user_conf.d, смонтированный в/etc/nginx/user_conf.dвнутри контейнера. -
Окружение:
-
CERTBOT_EMAIL: Установлено значениеhkadm@hostkey.com. -
Переменные окружения загружаются из файла
/data/nginx/nginx-certbot.env.
Для запуска службы прокси выполните следующую команду в каталоге /root/nginx:
Прокси-серверы¶
Приложение доступно в интернете через контейнер Nginx, работающий с Certbot для автоматического управления SSL-сертификатами.
-
Конфигурация прокси: Контейнер Nginx пересылает запросы с внешнего домена на внутреннее приложение.
-
Внутренняя цель:
http://127.0.0.1:7860 -
Внешний путь:
/ -
Внутренний путь:
/ -
SSL/TLS: Управляется автоматически через Certbot внутри контейнера Nginx.
-
Файл конфигурации: Специфичное правило прокси находится в файле
/data/nginx/user_conf.d/hallo<Server ID>.hostkey.in.conf. -
Директива Proxy Pass:
Доступные порты для подключения¶
В развертывании Hallo3 используются следующие порты:
| Порт | Протокол | Описание |
|---|---|---|
| 7860 | TCP | Внутренний порт приложения (интерфейс Gradio) |
| 443 | TCP | Внешний порт HTTPS (прокси Nginx) |
Запуск, остановка и обновление¶
Приложение Hallo3 и служба прокси управляются следующими методами:
-
Запуск приложения: Приложение запускается путем активации среды Conda и выполнения скрипта Python:
-
Запуск прокси: Прокси Nginx запускается с помощью Docker Compose:
-
Остановка прокси: Для остановки службы прокси:
-
Обновление приложения: Для обновления кодовой базы Hallo3 выполните получение последних изменений из репозитория и переустановите зависимости:
-
Обновление прокси: Для обновления образа контейнера Nginx: