ComfyUI: Instalasi via docker compose
- Menambahkan ComfyUI ke Docker Compose yang sudah ada
Cara yang relatif aman adalah **membangun image ComfyUI sendiri dari repositori resmi**, bukan memakai image komunitas yang isinya tidak selalu jelas. Instalasi resmi ComfyUI menggunakan repositori `Comfy-Org/ComfyUI`, memasang PyTorch dan `requirements.txt`, lalu menjalankan `main.py`. ComfyUI-Manager sekarang diaktifkan melalui `manager_requirements.txt` dan parameter `--enable-manager`. ([GitHub][1])
Struktur akhirnya:
```text local-ai/ ├── compose.yaml └── comfyui/
├── Dockerfile
├── .dockerignore
└── data/
├── models/
├── input/
├── output/
├── custom_nodes/
├── user/
└── cache/
```
- 1. Pastikan GPU NVIDIA dapat digunakan Docker
Periksa driver:
```bash nvidia-smi ```
Periksa NVIDIA Container Toolkit:
```bash dpkg -l | grep nvidia-container-toolkit ```
Jika belum terpasang:
```bash curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor \ -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
```
```bash curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \ | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
```
```bash sudo apt update sudo apt install -y nvidia-container-toolkit ```
Konfigurasikan runtime NVIDIA:
```bash sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker ```
Itu adalah prosedur resmi NVIDIA untuk Debian dan Ubuntu. ([NVIDIA Docs][2])
Tes akses GPU dari container:
```bash docker run --rm --gpus all \
nvidia/cuda:12.9.0-base-ubuntu22.04 \ nvidia-smi
```
Walaupun host memakai Ubuntu 24.04, container boleh menggunakan basis Ubuntu 22.04.
---
- 2. Buat direktori ComfyUI
Masuk ke direktori tempat `compose.yaml` berada:
```bash cd ~/Apps/LocalAI ```
Sesuaikan apabila lokasi compose berbeda.
Buat struktur folder:
```bash mkdir -p comfyui/data/{input,output,custom_nodes,user,cache} ```
```bash mkdir -p comfyui/data/models/{checkpoints,vae,loras,controlnet,clip,clip_vision,diffusion_models,text_encoders,unet,upscale_models,embeddings} ```
Periksa:
```bash find comfyui -maxdepth 3 -type d ```
---
- 3. Buat Dockerfile ComfyUI
Buat file:
```bash nano comfyui/Dockerfile ```
Isi:
```dockerfile FROM python:3.12-slim-bookworm
ENV DEBIAN_FRONTEND=noninteractive \
PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1
- Paket sistem yang diperlukan ComfyUI dan berbagai custom node.
RUN apt-get update && apt-get install -y --no-install-recommends \
git \ ca-certificates \ curl \ ffmpeg \ build-essential \ libgl1 \ libglib2.0-0 \ libgomp1 \ && rm -rf /var/lib/apt/lists/*
WORKDIR /opt
- Mengambil ComfyUI dari repositori resmi.
RUN git clone --depth 1 https://github.com/Comfy-Org/ComfyUI.git
WORKDIR /opt/ComfyUI
- Memasang PyTorch dengan dukungan NVIDIA CUDA 12.8.
RUN python -m pip install --upgrade pip setuptools wheel \
&& python -m pip install \
torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/cu128 \
&& python -m pip install -r requirements.txt \
&& python -m pip install -r manager_requirements.txt
EXPOSE 8188
CMD ["python", "main.py", \
"--listen", "0.0.0.0", \
"--port", "8188", \
"--enable-manager", \
"--preview-method", "auto"]
```
CUDA 12.8 dipilih karena cocok untuk keluarga GPU NVIDIA modern seperti Turing, Ampere, dan Blackwell, termasuk RTX 20, RTX 30, RTX 40, dan RTX 50. PyTorch masih menyediakan wheel CUDA 12.8 secara terpisah. ([GitHub][3])
---
- 4. Buat `.dockerignore`
Ini penting agar file model yang ukurannya puluhan gigabyte tidak ikut dikirim sebagai Docker build context.
```bash nano comfyui/.dockerignore ```
Isi:
```text data/ __pycache__/
- .pyc
- .pyo
.git/ ```
---
- 5. Tambahkan service ComfyUI ke `compose.yaml`
Tambahkan bagian berikut **setelah service `waha` tetapi sebelum bagian paling bawah `volumes:`**:
```yaml
################################
# 5. COMFYUI (Image Generation)
################################
comfyui:
build:
context: ./comfyui
dockerfile: Dockerfile
image: local/comfyui:cu128
container_name: comfyui
restart: unless-stopped
ports:
- "192.168.0.230:8188:8188"
environment:
- TZ=Asia/Jakarta
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,utility
volumes:
- ./comfyui/data/models:/opt/ComfyUI/models
- ./comfyui/data/input:/opt/ComfyUI/input
- ./comfyui/data/output:/opt/ComfyUI/output
- ./comfyui/data/custom_nodes:/opt/ComfyUI/custom_nodes
- ./comfyui/data/user:/opt/ComfyUI/user
- ./comfyui/data/cache:/root/.cache
shm_size: "8gb"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: ["gpu"]
```
Bagian akhir compose tetap seperti sebelumnya:
```yaml volumes:
ollama_data: openwebui_data: n8n_data:
```
Tidak perlu menambahkan `comfyui_data` karena ComfyUI menggunakan bind mount ke direktori `./comfyui/data`.
Docker Compose memang mendukung reservasi GPU melalui `deploy.resources.reservations.devices`, dan `capabilities: ["gpu"]` wajib dicantumkan. ([Docker Documentation][4])
- Tentang pengaturan port
Baris ini:
```yaml ports:
- "192.168.0.230:8188:8188"
```
berarti ComfyUI hanya mendengarkan melalui alamat LAN server `192.168.0.230`.
Apabila alamat server berbeda, ubah IP tersebut. Untuk membuka melalui seluruh interface, gunakan:
```yaml ports:
- "8188:8188"
```
Namun ComfyUI sebaiknya tidak langsung dibuka ke internet, terutama ketika Manager aktif karena Manager dapat memasang dan menjalankan kode dari custom node.
---
- 6. Validasi YAML
Jalankan:
```bash docker compose config ```
Jika tidak ada pesan kesalahan, build hanya service ComfyUI:
```bash docker compose build comfyui ```
Kemudian jalankan:
```bash docker compose up -d comfyui ```
Keterangan:
- `up` membuat dan menjalankan container.
- `-d` menjalankan container di belakang layar.
- `comfyui` berarti hanya service ComfyUI yang dijalankan.
Periksa status:
```bash docker compose ps ```
Seharusnya terdapat:
```text comfyui running 192.168.0.230:8188->8188/tcp ```
---
- 7. Periksa log ComfyUI
```bash docker compose logs -f --tail=100 comfyui ```
Cari informasi seperti:
```text Device: cuda:0 Using pytorch attention Starting server To see the GUI go to: http://0.0.0.0:8188 ```
Tekan `Ctrl+C` untuk keluar dari tampilan log. Container tetap berjalan.
---
- 8. Verifikasi PyTorch dan GPU
Jalankan:
```bash docker exec comfyui python -c \ 'import torch; print("CUDA tersedia:", torch.cuda.is_available()); print("PyTorch:", torch.__version__); print("CUDA:", torch.version.cuda); print("GPU:", torch.cuda.get_device_name(0) if torch.cuda.is_available() else "Tidak ada")' ```
Hasil yang diharapkan:
```text CUDA tersedia: True PyTorch: 2.x.x CUDA: 12.8 GPU: NVIDIA GeForce RTX ... ```
---
- 9. Buka ComfyUI
Dari komputer dalam jaringan yang sama:
```text http://192.168.0.230:8188 ```
ComfyUI tidak menyertakan checkpoint model secara otomatis. Tempatkan file model `*.safetensors` di:
```text comfyui/data/models/checkpoints/ ```
VAE ditempatkan di:
```text comfyui/data/models/vae/ ```
LoRA ditempatkan di:
```text comfyui/data/models/loras/ ```
Lokasi checkpoint dan VAE tersebut sesuai struktur model resmi ComfyUI. ([GitHub][1])
Setelah memasukkan model, restart:
```bash docker compose restart comfyui ```
---
- 10. Perintah operasional
Menghentikan ComfyUI saja:
```bash docker compose stop comfyui ```
Menjalankannya kembali:
```bash docker compose start comfyui ```
Restart:
```bash docker compose restart comfyui ```
Menghapus container tanpa menghapus model dan hasil gambar:
```bash docker compose rm -sf comfyui ```
Membangun ulang ComfyUI versi terbaru:
```bash docker compose build --no-cache comfyui docker compose up -d comfyui ```
`--no-cache` memaksa Docker mengambil ulang kode dan memasang ulang dependency, bukan menggunakan layer build lama.
---
- Jika VRAM tidak cukup
Ollama dan ComfyUI memakai GPU NVIDIA yang sama. Ketika model Ollama masih berada di VRAM, ComfyUI dapat mengalami:
```text CUDA out of memory ```
Untuk pengujian, hentikan Ollama sementara:
```bash docker compose stop ollama ```
Jalankan ComfyUI:
```bash docker compose restart comfyui ```
Setelah selesai membuat gambar:
```bash docker compose start ollama ```
Terakhir, sebaiknya pindahkan `WHATSAPP_API_KEY`, password dashboard WAHA, dan password Swagger dari YAML ke file `.env`, serta ganti nilai password yang saat ini masih sederhana sebelum server dapat diakses pengguna lain.
[1]: https://github.com/comfy-org/ComfyUI "GitHub - Comfy-Org/ComfyUI: The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. · GitHub" [2]: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/1.17.7/install-guide.html "Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit" [3]: https://github.com/pytorch/pytorch/releases?utm_source=chatgpt.com "Releases · pytorch/pytorch" [4]: https://docs.docker.com/compose/how-tos/gpu-support/ "Run Docker Compose services with GPU access | Docker Docs"