You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
e-maks 7c3fb424cf Add workflow 4 days ago
.gitignore Add workflow 4 days ago
README.md Create comfy ui loader 4 days ago
client.py Create comfy ui loader 4 days ago
dasiwa-api.service Create comfy ui loader 4 days ago
generate_keys.py Create comfy ui loader 4 days ago
hmac_auth.py Create comfy ui loader 4 days ago
nginx.conf Create comfy ui loader 4 days ago
requirements.txt Create comfy ui loader 4 days ago
server.py Create comfy ui loader 4 days ago
setup.sh Create comfy ui loader 4 days ago
workflow_api.json Add workflow 4 days ago

README.md

🎬 DaSiWa API Server для ComfyUI

Автономный API сервер для генерации видео через ComfyUI на выделенном GPU сервере (Intelion Cloud и т.д.).

Безопасность: HMAC подпись каждого запроса (timestamp + nonce + body). Перехват бесполезен — подпись уникальна.


📁 Структура

custom_comfyui/
├── server.py           # API сервер (ставится на GPU машину)
├── client.py           # Клиент (запускается на твоём ПК)
├── hmac_auth.py        # HMAC авторизация (нужен и там, и там)
├── generate_keys.py    # Генерация ключей (один раз)
├── setup.sh            # Автоустановка: Python, зависимости, UFW, systemd
├── dasiwa-api.service  # Systemd сервис (автозапуск)
├── requirements.txt    # Python зависимости
├── keys.json           # 🔒 Ключи (НЕ коммитить!)
└── workflow_api.json   # 🎨 ComfyUI workflow (сделай сам)

🚀 Быстрый старт

1. Подготовка workflow

В ComfyUI на сервере:

  1. Загрузи DaSiWa WAN 2.2 i2v FastFidelity C-AiO-59.json через UI
  2. Настрой, проверь что работает
  3. Экспортируй API версию: Menu → Save (API Format) → назови workflow_api.json
  4. Положи файл в эту папку (custom_comfyui/)

2. Генерация ключей (на любом ПК с Python)

cd custom_comfyui
python generate_keys.py

Появится файл keys.json. Нужен и на сервере, и на клиенте.

3. Загрузка на сервер

# С Windows на Ubuntu сервер
$SERVER = "root@<ip_сервера>"

# Загрузить всю папку
scp -r custom_comfyui/ ${SERVER}:/root/

# ИЛИ по файлам
scp server.py hmac_auth.py generate_keys.py setup.sh nginx.conf requirements.txt keys.json workflow_api.json ${SERVER}:/root/custom_comfyui/

4. Установка на сервере (одна команда)

ssh root@<ip_сервера>
cd /root/custom_comfyui
chmod +x setup.sh
sudo ./setup.sh

Скрипт автоматически:

  • Установит Python, pip, nginx, wget
  • Установит Python зависимости
  • Настроит Nginx (порт 5000 → API)
  • Настроит Firewall (открыт 22 + 5000, закрыт 8188)
  • Создаст systemd сервис с автозапуском
  • Сгенерирует ключи (если нет)

5. Скопируй keys.json на свой ПК

scp root@<ip_сервера>:/root/custom_comfyui/keys.json .

Положи в папку custom_comfyui/ на своём ПК.

6. Проверка

# На сервере:
curl http://localhost:8080/health

# Ответ:
# {"comfyui": "ok", "status": "ok", "timestamp": 1234567890}

7. Генерация видео (с клиента)

cd custom_comfyui

# I2V — из одного изображения
python client.py \
  --server http://<ip_сервера>:8080 \
  --image photo.png \
  --prompt "woman dancing gracefully" \
  --output video.mp4

# FLF2V — из двух кадров
python client.py \
  --server http://<ip_сервера>:8080 \
  --image start.png \
  --last-image end.png \
  --prompt "smooth transition between poses" \
  --output transition.mp4

Параметры генерации

Параметр По умолчанию Описание
--width 528 Ширина (кратно 16)
--height 768 Высота (кратно 16)
--length 81 Кол-во кадров (~5 сек при 16fps)
--steps 4 Шаги (DaSiWa оптимизирован под 4)
--cfg 1.0 CFG scale (DaSiWa работает с 1.0)
--seed -1 Сид (-1 = рандом)
--fps 16 Кадров в секунду

🔐 Как работает безопасность

Клиент:
1. Берёт тело запроса (JSON)
2. Создаёт timestamp + nonce (случайная строка)
3. Подписывает: HMAC-SHA256(secret_key, timestamp.nonce.body)
4. Отправляет: body + заголовки (client_id, timestamp, nonce, signature)

Сервер:
1. Проверяет client_id
2. Проверяет timestamp (не старше 5 минут)
3. Проверяет nonce (не использован ранее — защита от replay)
4. Вычисляет подпись и сравнивает
5. Если всё ОК — выполняет запрос

Почему это безопасно:

  • Без secret_key нельзя создать валидную подпись
  • Каждый запрос уникален (nonce) — replay-атака невозможна
  • Timestamp — протухшие запросы отклоняются
  • secret_key никогда не передаётся по сети

🔧 Управление

# Статус API
systemctl status dasiwa-api

# Перезапуск
systemctl restart dasiwa-api

# Логи (live)
journalctl -u dasiwa-api -f

# Стоп
systemctl stop dasiwa-api

🔥 Firewall

Открытые порты:

  • 22 — SSH
  • 8080 — API (Python напрямую)

Закрытые:

  • 8188 — ComfyUI UI (только localhost)

Troubleshooting

ComfyUI недоступен:

# Проверь что ComfyUI запущен
curl http://localhost:8188
# Посмотри процесс
ps aux | grep comfy

API не отвечает:

journalctl -u dasiwa-api -n 50
systemctl restart dasiwa-api

Ошибка авторизации (401):

  • Проверь что keys.json одинаковый на клиенте и сервере
  • Проверь время на обоих машинах (date на сервере, часы на ПК)

Nginx ошибка:

nginx -t
systemctl restart nginx