Files
gpu-rent/docs/extensions.md
T
Leonid Pershin 343f741baa Refactor environment and configuration management
- Updated the project structure to store configuration files (.env, models.yaml, extensions.yaml) in the project root instead of the user's home directory.
- Enhanced the setup process to automatically copy example files to the project root on first run.
- Implemented a migration function to transfer legacy configuration files from the user's home directory to the new project structure.
- Revised documentation to reflect changes in file locations and setup instructions.
- Improved code readability and maintainability by refactoring path management functions.
2026-08-21 03:20:18 +03:00

4.4 KiB
Raw Blame History

Расширения: git-репы на первый bootstrap

Срабатывает вместе с первым диском и первым инстансом, до первого старта SwarmUI (C# extensions компилируются при запуске). Повторный up на уже засеянный диск только догоняет новые строки манифеста (идемпотентный git fetch).

Два разных мира — не путать:

Вид Куда клонировать Что это
swarmui /mnt/swarm_data/Extensions/<dir>/opt/swarmui/src/Extensions/<dir> C# extension SwarmUI (класс : Extension). После рестарта подхватывается сам
comfy /mnt/swarm_data/DLNodes/<dir>…/ComfyUIBackend/DLNodes/<dir> Custom nodes ComfyUI (Python). requirements.txt ставит SwarmUI/Comfy при первом старте backend

Пустой манифест или его нет — ничего не клонируем, SwarmUI как из коробки. Это не связано с Civitai-токеном.

Манифест

Пример: extensions.example.yaml. Рабочая копия: extensions.yaml в корне репо (или EXTENSIONS_MANIFEST).

swarmui:
  - url: https://github.com/example/SwarmUI-SomeExt.git
    ref: main          # ветка, тег или commit SHA; по умолчанию HEAD default branch
    dir: SomeExt       # имя папки; по умолчанию последний сегмент URL без .git
comfy:
  - url: https://github.com/example/ComfyUI-Something.git
    ref: v1.2.0

В git репозитория gpu-rent не коммитить рабочий список с приватными URL. В примере — вымышленные репы.

Когда в жизненном цикле

Idle-killer ещё не вооружён. Git нужен на VM (apt в bootstrap, если нет в образе).

  1. Маркер FS data volume.
  2. Clone extensions (этот документ). Маркер /mnt/swarm_data/.gpu-rent-extensions-seeded после успешного прохода всех строк.
  3. Civitai-seed моделей (models.md), если есть токен.
  4. Первый systemctl start swarmui: видит src/Extensions, собирает их; ComfyUI ставит pip из DLNodes.
  5. Backend Idle → idle-killer.

Порядок 2→3 важен: расширения до старта UI, модели тоже до старта (чтобы не качать дефолт SwarmUI).

Позже: gpu-rent seed-extensions — те же clone/fetch на живом диске, затем рестарт SwarmUI (иначе новый C# extension не подхватится). CLI предупреждает и делает systemctl restart swarmui, если VM жива.

Clone на VM

  • git clone --recurse-submodules.
  • Если ref — ветка/тег: --depth 1 + checkout.
  • Если ref похож на SHA: fetch этого commit (shallow может не хватить).
  • Каталог уже есть и remote origin совпадает с urlfetch + checkout ref, не rm -rf.
  • Каталог есть, origin другой → fail этой строки, не молча перезаписывать.

Публичный HTTPS без секретов. Приватный репозиторий:

  • GIT_TOKEN в .env (GitHub: x-access-token; GitLab: oauth2 / PAT). CLI подставляет в URL только на VM, не пишет токен в yaml и не в cloud-init.
  • Либо отдельный deploy key <repo>/.gpu-rent/git_deploy — v1.1, не обязательно сейчас.

Не использовать git://. Только https:// и git@ + ключ.

Сбой

Одна строка упала (404, auth, сеть) — остальные можно продолжить; up в конце ненулевой, маркер seeded не ставить, повтор доклонирует. Не оставлять полупустой .git.

Конфиг

EXTENSIONS_MANIFEST=   # пусто = <repo>/extensions.yaml
GIT_TOKEN=             # опционально, для приватных https