- 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.
4.4 KiB
Расширения: 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, если нет в образе).
- Маркер FS data volume.
- Clone extensions (этот документ). Маркер
/mnt/swarm_data/.gpu-rent-extensions-seededпосле успешного прохода всех строк. - Civitai-seed моделей (models.md), если есть токен.
- Первый
systemctl start swarmui: видитsrc/Extensions, собирает их; ComfyUI ставит pip из DLNodes. - 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совпадает сurl→fetch+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