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

Обзор развертывания 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 устанавливается вручную на хост-систему с помощью следующих шагов:

  1. Подготовка системы:

  2. Обновите пакеты системы и установите стек Linux Hardware Enablement (HWE) для Ubuntu 22.04.

  3. Установите компилятор GCC, необходимый для установки CUDA.

  4. Установка CUDA и драйверов NVIDIA:

  5. Загрузите и установите пакет ключей репозитория CUDA.

  6. Установите пакеты cuda-toolkit и nvidia-cuda-toolkit.

  7. Настройте переменные окружения (PATH и LD_LIBRARY_PATH) в файле ~/.bashrc, включив в них бинарные файлы и библиотеки CUDA.

  8. Загрузите модули ядра NVIDIA и проверьте драйвер с помощью команды nvidia-smi.

  9. Настройка Miniconda:

  10. Загрузите скрипт установщика Miniconda.

  11. Установите Miniconda в каталог /opt/miniconda3 в пакетном режиме (batch mode).

  12. Инициализируйте Conda для среды оболочки.

  13. Репозиторий Hallo3 и среда выполнения:

  14. Клонируйте репозиторий Hallo3 с адреса https://github.com/fudan-generative-vision/hallo3 в каталог /opt/hallo3.

  15. Создайте новую среду Conda с именем hallo и версией Python 3.10.

  16. Активируйте среду hallo и установите зависимости Python, перечисленные в файле requirements.txt, а также пакет gradio.

  17. Загрузка моделей:

  18. Установите пакет huggingface-hub.

  19. Загрузите предобученные модели из репозитория fudan-generative-ai/hallo3 в каталог /opt/hallo3/pretrained_models.

  20. Запуск приложения:

  21. Запустите приложение, выполнив команду python hallo3/app.py внутри среды Conda hallo.

  22. Приложение слушает порт 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:

docker compose up -d

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

Приложение доступно в интернете через контейнер 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:

    proxy_pass http://127.0.0.1:7860;
    

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

В развертывании Hallo3 используются следующие порты:

Порт Протокол Описание
7860 TCP Внутренний порт приложения (интерфейс Gradio)
443 TCP Внешний порт HTTPS (прокси Nginx)

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

Приложение Hallo3 и служба прокси управляются следующими методами:

  • Запуск приложения: Приложение запускается путем активации среды Conda и выполнения скрипта Python:

    source /opt/miniconda3/etc/profile.d/conda.sh
    conda activate hallo
    cd /opt/hallo3
    python hallo3/app.py
    

  • Запуск прокси: Прокси Nginx запускается с помощью Docker Compose:

    cd /root/nginx
    docker compose up -d
    

  • Остановка прокси: Для остановки службы прокси:

    cd /root/nginx
    docker compose down
    

  • Обновление приложения: Для обновления кодовой базы Hallo3 выполните получение последних изменений из репозитория и переустановите зависимости:

    cd /opt/hallo3
    git pull
    source /opt/miniconda3/etc/profile.d/conda.sh
    conda activate hallo
    pip install -r requirements.txt
    

  • Обновление прокси: Для обновления образа контейнера Nginx:

    cd /root/nginx
    docker compose pull
    docker compose up -d
    

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