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.
6.2 KiB
6.2 KiB
🎬 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 на сервере:
- Загрузи
DaSiWa WAN 2.2 i2v FastFidelity C-AiO-59.jsonчерез UI - Настрой, проверь что работает
- Экспортируй API версию: Menu →
Save (API Format)→ назовиworkflow_api.json - Положи файл в эту папку (
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