143 lines
3.9 KiB
Markdown
143 lines
3.9 KiB
Markdown
# ComfyUI Deploy
|
|
|
|
Open source comfyui deployment platform, a `vercel` for generative workflow infra. (serverless hosted gpu with vertical intergation with comfyui)
|
|
|
|
Join [Discord](https://discord.gg/EEYcQmdYZw) to chat more or visit [Comfy Deploy](https://comfydeploy.com/) to get started!
|
|
|
|
Check out our latest [nextjs starter kit](https://github.com/BennyKok/comfyui-deploy-next-example) with Comfy Deploy
|
|
|
|
\# How it works
|
|
|
|
1. Comfy Deploy Dashboard (https://comfydeploy.com) or self-hosted version
|
|
2. Machines (Long running, on-premise ComfyUI machines and serverless)
|
|
3. Supports runpods, modal, and hosted ComfyDeploy machines (powered by modal)
|
|
|
|
https://github.com/BennyKok/comfyui-deploy/assets/18395202/85f85325-a4bb-446d-aa67-ed225ee03479
|
|
|
|
# Setting up a basic sd txt2img API
|
|
|
|
https://github.com/BennyKok/comfyui-deploy/assets/18395202/0fb1829b-401a-41f2-b21a-5b77483c6ee2
|
|
|
|
# Comfy Deploy Plugin Installation
|
|
|
|
> Plugin lets you set up the machine as a target machine, and also upload workflow directly from there
|
|
|
|
1. `cd custom_nodes`
|
|
2. `git clone https://github.com/BennyKok/comfyui-deploy.git`
|
|
3. Go to (https://comfydeploy.com) or a self-hosted version
|
|
- Machines -> Add Machines
|
|
- Enter a name and the URL of your machines (set up Ngrok for a public URL for your machines)
|
|
- Create a new ComfyDeploy machines (pick any custom nodes).
|
|
|
|
# Usecase
|
|
|
|
1. Deploy a complicated comfy workflow with a versioning system
|
|
2. Manage versioning and easily preview different generated versions' output
|
|
3. Persistent API generated for Production and Staging environment
|
|
4. Run the same comfyui workflow across different remote machines
|
|
|
|
\# Status & Timeline
|
|
|
|
WIP, welcomes contributors!! Please join Discord -> https://discord.gg/EEYcQmdYZw
|
|
|
|
Primary goal -> release v0.1.0 of stable Comfy Deploy
|
|
|
|
Major areas
|
|
|
|
- Security enforcement
|
|
- Error handling
|
|
- QOL workflow improvement
|
|
- API usage examples
|
|
- Load balancing
|
|
- Workflow dependencies checking (custom nodes)
|
|
- Remote machines
|
|
- Serverless machines? Possible to set up a clean environment via Salad, Modal, etc
|
|
- LCM realtime web socket image gen
|
|
|
|
# Tech Stack
|
|
|
|
- Shadcn UI
|
|
|
|
- NextJS
|
|
|
|
- Clerk (Auth)
|
|
|
|
- Neon / Vercel Postgres (Database)
|
|
|
|
- Drizzle (ORM)
|
|
|
|
- R2 / S3 (Object Storage)
|
|
|
|
# Development
|
|
|
|
1. `git clone https://github.com/BennyKok/comfyui-deploy`
|
|
2. `cd web`
|
|
3. `bun i`
|
|
4. Start docker
|
|
5. `cp .env.example .env.local`
|
|
6. Replace `JWT_SECRET` with `openssl rand -hex 32`
|
|
7. Get a local clerk dev key for `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` and `CLERK_SECRET_KEY`
|
|
8. Keep a terminal live for `bun run db-dev`
|
|
9. Execute the local migration to create the initial data `bun run migrate-local`
|
|
10. Finally start the next server with `bun dev`
|
|
|
|
**Schema Changes**
|
|
|
|
1. `bun run generate`
|
|
2. `bun run migrate-local`
|
|
|
|
# Special Thanks
|
|
|
|
- comfyui
|
|
- oss/acc
|
|
|
|
# Self Hosting with Vercel
|
|
|
|
[](https://www.youtube.com/watch?v=hWvsEY1cS2M)
|
|
Tutorial Created by [Ross](https://github.com/rossman22590) and [Syn](https://github.com/mortlsyn)
|
|
|
|
|
|
Build command
|
|
|
|
```
|
|
next build && bun run migrate-production
|
|
```
|
|
|
|
Install command
|
|
|
|
```
|
|
npx bun@1.0.16 install
|
|
```
|
|
|
|
Env key setup
|
|
|
|
```
|
|
POSTGRES_URL=
|
|
|
|
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
|
|
CLERK_SECRET_KEY=
|
|
|
|
SPACES_ENDPOINT="http://localhost:4566"
|
|
SPACES_ENDPOINT_CDN="http://localhost:4566"
|
|
SPACES_BUCKET="comfyui-deploy"
|
|
SPACES_KEY="xyz"
|
|
SPACES_SECRET="aaa"
|
|
|
|
# generate using -> openssl rand -hex 32
|
|
JWT_SECRET=
|
|
|
|
# r2 settings
|
|
SPACES_REGION="auto"
|
|
SPACES_CDN_FORCE_PATH_STYLE="true"
|
|
SPACES_CDN_DONT_INCLUDE_BUCKET="true"
|
|
|
|
# digital ocean settings
|
|
SPACES_REGION="nyc3"
|
|
SPACES_CDN_FORCE_PATH_STYLE="false"
|
|
|
|
# s3 settings
|
|
SPACES_REGION="nyc3"
|
|
SPACES_CDN_DONT_INCLUDE_BUCKET="false"
|
|
SPACES_CDN_FORCE_PATH_STYLE="true"
|
|
```
|