Chore: project init

This commit is contained in:
qornwh1
2026-02-25 15:11:33 +09:00
commit ba69c6357c
4 changed files with 613 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.safetensors

93
README.md Normal file
View File

@@ -0,0 +1,93 @@
# ComfyUI - Skybox 이미지 생성 환경
게임용 360° Skybox 이미지를 생성하기 위한 ComfyUI Docker 환경입니다.
---
## 워크플로우
| 파일 | 설명 |
|------|------|
| `workflows/skybox360_v1.0.0.json` | 게임용 Skybox 이미지 생성 워크플로우 |
---
## 설치 및 실행
### 사전 조건
- Docker 및 Docker Compose 설치
- NVIDIA GPU 및 NVIDIA Container Toolkit 설치
- sdxl_360_diffusion.safetensors 체크포인트 파일 다운로드 필요 (https://huggingface.co/ProGamerGov/sdxl-360-diffusion)
- SkyboxV1.safetensors 로라 파일 다운로드 필요 (https://civitai.com/models/81168/skybox)
- 다운로드 후 디렉토리 구조를 참고하여 위치에 파일을 배치
- 필요시 모델 교체
### 설치
```bash
docker compose pull
```
### 실행 (백그라운드)
```bash
docker compose up -d
```
### 종료
```bash
docker compose down
```
---
## 접속 방법
### 1단계 — 서비스 포털 로그인 (포트 1111)
브라우저에서 아래 주소로 접속 후 로그인합니다.
```
http://localhost:1111
```
| 항목 | 값 |
|------|----|
| ID | `myname` |
| PW | `mypassword123` |
### 2단계 — ComfyUI 이동 (포트 8188)
로그인 후 아래 주소로 이동하면 ComfyUI 화면이 열립니다.
```
http://localhost:8188
```
---
## 워크플로우 사용 방법
1. ComfyUI 화면 우측 상단 메뉴 → **Browse templates** 또는 직접 `workflows/skybox360_v1.0.0.json` 파일을 불러옵니다.
2. 원하는 프롬프트 및 설정을 조정합니다. (긍정, 부정 프롬프트 입력)
3. 화면 우측의 **Queue** 버튼을 클릭하면 이미지 생성이 시작됩니다.
> **참고:** 메뉴 위치는 None으로 설정되어 있습니다.(Top으로 바꾸는게 보기가 좋습니다) 설정 변경이 필요할 경우 우측 상단 톱니바퀴(⚙) 아이콘 → Menu Position에서 조정할 수 있습니다.
---
## 디렉토리 구조
```
comfyui/
├── docker-compose.yml # Docker 실행 설정
├── workflows/
│ └── skybox360_v1.0.0.json # Skybox 생성 워크플로우
├── workspace/
│ └── ComfyUI/
│ └── models/
│ ├── checkpoints/ # 체크포인트 모델
│ └── loras/ # LoRA 모델
└── README.md
```

27
docker-compose.yml Normal file
View File

@@ -0,0 +1,27 @@
version: '3.8'
services:
comfyui:
image: ghcr.io/ai-dock/comfyui:latest-cuda
container_name: comfyui_server
ports:
- "8188:8188" # 기본 접속
- "1111:1111" # 서비스 포털 (관리 화면)
- "18188:18188" # 실제 프로세스 포트
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
- ./workspace/ComfyUI/models/checkpoints:/opt/ComfyUI/models/checkpoints
- ./workspace/ComfyUI/models/loras:/opt/ComfyUI/models/loras
- ./workspace/storage:/opt/storage
environment:
- CLI_ARGS=--listen 0.0.0.0 --port 8188
- DIRECT_ADDRESS=127.0.0.1
- WEB_USER=myname
- WEB_PASSWORD=mypassword123
restart: unless-stopped

View File

@@ -0,0 +1,492 @@
{
"id": "8c2f481c-625a-4772-b414-fef116772eed",
"revision": 0,
"last_node_id": 9,
"last_link_id": 17,
"nodes": [
{
"id": 3,
"type": "CLIPTextEncode",
"pos": [
-266.5776077305407,
174.6998710597806
],
"size": [
400,
200
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 16
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
5
]
}
],
"title": "Positive Prompt",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"360 panorama, equirectangular, (futuristic megalopolis:1.3), towering skyscrapers reaching the clouds, advanced urban architecture, flying vehicles, vibrant neon lights, busy city life, nighttime, (cyberpunk aesthetic:1.2), seamless, photorealistic, 8k resolution, cinematic lighting, ultra detailed"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 2,
"type": "KSampler",
"pos": [
265.26466459515734,
90.975202467434
],
"size": [
270,
262
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 14
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 5
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 6
},
{
"name": "latent_image",
"type": "LATENT",
"link": 9
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
10
]
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
90652639393558,
"randomize",
25,
8,
"euler",
"simple",
1
]
},
{
"id": 8,
"type": "VAEDecodeTiled",
"pos": [
587.0831482170611,
105.73660366521936
],
"size": [
270,
150
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 10
},
{
"name": "vae",
"type": "VAE",
"link": 11
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
12
]
}
],
"properties": {
"Node name for S&R": "VAEDecodeTiled"
},
"widgets_values": [
512,
64,
64,
8
]
},
{
"id": 9,
"type": "LoraLoader",
"pos": [
-573.3163306123124,
-62.99459364441078
],
"size": [
270,
126
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 13
},
{
"name": "clip",
"type": "CLIP",
"link": 15
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
14
]
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
16,
17
]
}
],
"properties": {
"Node name for S&R": "LoraLoader"
},
"widgets_values": [
"SkyboxV1.safetensors",
1,
1
]
},
{
"id": 4,
"type": "VAEDecode",
"pos": [
960.4787096468392,
-124.73440762022136
],
"size": [
140,
46
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": null
},
{
"name": "vae",
"type": "VAE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": []
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 7,
"type": "EmptyLatentImage",
"pos": [
-870.1116369256109,
222.80535972156463
],
"size": [
270,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
9
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
2048,
1024,
1
]
},
{
"id": 6,
"type": "SaveImage",
"pos": [
586.5284890751892,
317.7512366359076
],
"size": [
270,
270
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 12
}
],
"outputs": [],
"properties": {},
"widgets_values": [
"Image360"
]
},
{
"id": 5,
"type": "CLIPTextEncode",
"pos": [
-266.38617988178174,
426.43051789958037
],
"size": [
400,
200
],
"flags": {
"collapsed": false
},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 17
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
6
]
}
],
"title": "Negative Prompt",
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"seam, visible line, blur, distortion, low resolution, ugly, ancient, rural, nature, water, trees, text, watermark, out of focus"
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 1,
"type": "CheckpointLoaderSimple",
"pos": [
-871.4772569789588,
69.00680820295105
],
"size": [
270,
98
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
13
]
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
15
]
},
{
"name": "VAE",
"type": "VAE",
"links": [
11
]
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"sdxl_360_diffusion.safetensors"
]
}
],
"links": [
[
5,
3,
0,
2,
1,
"CONDITIONING"
],
[
6,
5,
0,
2,
2,
"CONDITIONING"
],
[
9,
7,
0,
2,
3,
"LATENT"
],
[
10,
2,
0,
8,
0,
"LATENT"
],
[
11,
1,
2,
8,
1,
"VAE"
],
[
12,
8,
0,
6,
0,
"IMAGE"
],
[
13,
1,
0,
9,
0,
"MODEL"
],
[
14,
9,
0,
2,
0,
"MODEL"
],
[
15,
1,
1,
9,
1,
"CLIP"
],
[
16,
9,
1,
3,
0,
"CLIP"
],
[
17,
9,
1,
5,
0,
"CLIP"
]
],
"groups": [],
"config": {},
"extra": {
"workflowRendererVersion": "LG",
"ds": {
"scale": 0.9621899440109732,
"offset": [
971.5551054739246,
262.79673218780925
]
},
"frontendVersion": "1.38.14"
},
"version": 0.4
}