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

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

  1. Подготовка системы: Применяются обновления системы, и устанавливается ядро Linux Hardware Enablement (HWE) для Ubuntu 22.04.

  2. CUDA и драйверы NVIDIA:

    • Загружается и устанавливается ключевое кольцо репозитория CUDA (cuda-keyring_1.1-1_all.deb).

    • Пакеты cuda-toolkit и nvidia-cuda-toolkit устанавливаются через apt.

    • Переменные окружения PATH и LD_LIBRARY_PATH настраиваются для включения бинарных файлов и библиотек CUDA.

    • Драйвер nouveau удаляется, и загружаются модули ядра NVIDIA.

  3. Установка Miniconda:

    • Установщик Miniconda загружается и устанавливается в /opt/miniconda3.

    • Системный PATH обновляется для включения бинарных файлов Miniconda.

  4. Настройка приложения:

    • Репозиторий Hallo3 клонируется с GitHub (https://github.com/fudan-generative-vision/hallo3) в /opt/hallo3.

    • Создается новое окружение Conda с именем hallo и версией Python 3.10.

    • Внутри окружения устанавливаются зависимости, перечисленные в requirements.txt, а также gradio, ffmpeg и huggingface-hub.

  5. Загрузка моделей: Предобученные модели скачиваются с 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 внутри контейнера.

Контейнер запускается с помощью команды:

docker compose up -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 и выполнением начального скрипта:

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

  • Управление службами Docker: Для запуска, остановки или обновления контейнера прокси Nginx:

    cd /root/nginx
    docker compose up -d
    

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