{"id":24191206,"url":"https://github.com/nexmoe/serverless-comfyui","last_synced_at":"2025-09-21T14:32:46.119Z","repository":{"id":270677342,"uuid":"911125750","full_name":"nexmoe/serverless-comfyui","owner":"nexmoe","description":"一个基于 Docker 的 ComfyUI 弹性 Serverless 应用，提供完整的前后端分离架构和用户友好的界面。","archived":false,"fork":false,"pushed_at":"2025-01-10T06:27:22.000Z","size":153,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T07:38:06.887Z","etag":null,"topics":["ai","comfyui","docker","llm","stable-diffusion"],"latest_commit_sha":null,"homepage":"https://hadoop.nexmoe.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nexmoe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-02T09:55:08.000Z","updated_at":"2025-01-10T06:27:26.000Z","dependencies_parsed_at":"2025-01-10T07:31:57.577Z","dependency_job_id":null,"html_url":"https://github.com/nexmoe/serverless-comfyui","commit_stats":null,"previous_names":["nexmoe/serverless-comfyui"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nexmoe%2Fserverless-comfyui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nexmoe%2Fserverless-comfyui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nexmoe%2Fserverless-comfyui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nexmoe%2Fserverless-comfyui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nexmoe","download_url":"https://codeload.github.com/nexmoe/serverless-comfyui/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233761319,"owners_count":18726117,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","comfyui","docker","llm","stable-diffusion"],"created_at":"2025-01-13T15:17:38.111Z","updated_at":"2025-09-21T14:32:46.106Z","avatar_url":"https://github.com/nexmoe.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Comfy Docker\n\n一个基于 Docker 的 ComfyUI 弹性 Serverless 应用，提供完整的前后端分离架构和用户友好的界面。\n\nDemo:\u003chttps://hadoop.nexmoe.com/\u003e\n\n## 项目特点\n\n- 🐳 完整的 Docker 化部署方案\n- 🎨 现代化的前端界面\n- 🔌 模块化的后端架构\n- 🛠 简单的配置和使用方式\n\n## 架构图\n\n```mermaid\ngraph LR\n    subgraph 前端\n        A[用户界面（客户层）] --\u003e B[Next.js（Node 层）]\n    end\n    \n    subgraph 后端\n        C[API 服务] --\u003e D[ComfyUI 引擎]\n        D --\u003e E[(模型文件)]\n    end\n    \n    B --\u003e|HTTP 请求| C\n    D --\u003e|生成图片| C\n    C --\u003e|返回结果| B\n```\n\n## 项目结构\n\n```\ncomfy-docker/\n├── frontend/           # Next.js 前端项目\n│   ├── src/           # 源代码\n│   └── .env          # 环境配置\n├── backend/           # ComfyUI 后端\n│   ├── checkpoints/   # 模型检查点\n│   ├── controlnet/    # ControlNet 模型\n│   ├── custom_nodes/  # 自定义节点\n│   └── loras/        # LoRA 模型\n└── bruno/            # API 测试文件\n```\n\nbackend/ 目录结构如下，模型 和 自定义节点 需要自行下载安装\n\n```\n.\n├── Dockerfile\n├── checkpoints\n│   └── dreamshaperXL_sfwV2TurboDPMSDE.safetensors\n├── controlnet\n│   ├── sai_xl_canny_256lora.safetensors\n│   └── sai_xl_depth_256lora.safetensors\n├── custom_nodes\n│   ├── ComfyUI-Custom-Scripts\n│   ├── ComfyUI-WD14-Tagger\n│   ├── ComfyUI_Comfyroll_CustomNodes\n│   ├── comfyui-art-venture\n│   └── comfyui_controlnet_aux\n├── docker-compose.yml\n├── loras\n│   └── StudioGhibli.Redmond-StdGBRRedmAF-StudioGhibli.safetensors\n├── provisioning.sh  // 自定义脚本\n└── sanhua.json  // 工作流\n```\n\n## 环境要求\n\n- Docker \u0026 Docker Compose\n- NVIDIA GPU（当前演示工作流需要 12G 显存以上）\n- 足够的磁盘空间（100G~200G）用于存储模型\n\n## 快速开始\n\n### 后端本地测试\n\n1. 进入后端 Dockerfile 目录\n\n```bash\ncd backend\n```\n\n2. 下载模型文件\n\n请参考：\u003chttps://www.gongjiyun.com/docs/docker/tutorials/comfyui.html\u003e\n\n3. 构建 Docker 镜像\n\n```bash\ndocker build -t gongji/comfyui:0.1 .\n```\n\n1. 运行 Docker 容器\n\n```bash\ndocker run -it --rm --gpus all -p 3000:3000 -p 8188:8188 --name comfyui gongji/comfyui:0.1\n```\n\n容器启动后可以访问：\n\n- ComfyUI 界面：\u003chttp://localhost:8188\u003e\n- API 接口：\u003chttp://localhost:3000/docs\u003e\n\n### 前端本地测试\n\n1. 进入前端目录\n\n```bash\ncd frontend\n```\n\n2. 配置环境变量\n\n```bash\ncp .env.example .env\n# 编辑 .env 文件配置必要的环境变量\n```\n\n3. 安装依赖并启动\n\n```bash\npnpm install\npnpm dev\n```\n\n## ComfyUI Docker 部署到 Serverless 弹性平台\n\n请参考 [共绩科技的 ComfyUI 部署文档](https://www.gongjiyun.com/docs/docker/tutorials/comfyui.html)\n\n## API 文档\n\n项目使用 Bruno 进行 API 测试和文档管理，相关文件位于 `bruno/` 目录。\n\n### ComfyUI API 调用示例\n\n以下是调用 ComfyUI API 的示例代码（参考 `frontend/src/app/api/route.ts`）：\n\n```typescript\nasync function generateImage(imageUrl: string) {\n    // 1. 准备 prompt 数据\n    const promptData = { ...promptob };  // 从 JSON 文件导入基础 prompt\n    promptData.prompt[\"30\"].inputs.image = imageUrl;  // 修改输入图片\n\n    // 2. 设置请求选项\n    const url = `${process.env.GONGJI_ENDPOINT}/prompt`;\n    const options = {\n        method: 'POST',\n        headers: { 'content-type': 'application/json' },\n        body: JSON.stringify(promptData)\n    };\n\n    // 3. 发送请求\n    const response = await fetch(url, options);\n    const data = await response.json();\n\n    // 4. 错误处理\n    if (response.status !== 200) {\n        throw new Error(response.statusText);\n    }\n\n    // 5. 处理返回的图片数据\n    if (data.images \u0026\u0026 data.images.length \u003e 0) {\n        return data.images[0];  // 返回 base64 格式的图片数据\n    } else {\n        throw new Error('没有返回有效的图片数据');\n    }\n}\n```\n\n主要步骤说明：\n\n1. **准备 Prompt**：\n   - 从 JSON 文件导入基础 prompt 配置\n   - 根据需要修改 prompt 中的参数（如输入图片）\n\n2. **发送请求**：\n   - 使用 POST 方法\n   - Content-Type 设置为 application/json\n   - 请求体为序列化后的 prompt 数据\n\n3. **处理响应**：\n   - 检查响应状态码\n   - 解析返回的 JSON 数据\n   - 提取生成的图片（base64 格式）\n\n4. **错误处理**：\n   - 记录错误日志\n   - 抛出适当的错误信息\n\n### 环境变量配置\n\n在使用 API 之前，确保配置以下环境变量：\n\n```bash\nGONGJI_ENDPOINT=your-comfyui-api-endpoint  # ComfyUI API 端点\n```\n\n## S3 配置说明\n\n项目的图片上传功能需要配置 S3 存储服务。你可以使用 AWS S3 或其他兼容 S3 协议的对象存储服务（如 MinIO）。\n\n在 `frontend/.env` 文件中配置以下环境变量：\n\n```bash\nS3_ENDPOINT=your-s3-endpoint\nS3_ACCESS_KEY=your-access-key\nS3_SECRET_KEY=your-secret-key\nS3_BUCKET=your-bucket-name\nS3_REGION=your-region\n```\n\n注意：\n\n- 确保创建的 bucket 具有适当的访问权限\n- 如果使用 MinIO，endpoint 应该是完整的 URL（例如：\u003chttp://localhost:9000）\u003e\n- 使用 AWS S3 时，可以省略 endpoint 配置\n\n## 贡献指南\n\n欢迎提交 Issue 和 Pull Request！\n\n## 许可证\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnexmoe%2Fserverless-comfyui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnexmoe%2Fserverless-comfyui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnexmoe%2Fserverless-comfyui/lists"}