SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor

GPU VPS üzerinde ComfyUI kurulumu ve güvenliği

ComfyUI'yi kiralık GPU sunucunuza sanal ortam içinde kurun, sürümü sabitleyin, modeller için disk ayırın ve arayüzü SSH tüneli ya da kimlik doğrulayan bir ters proxy arkasına alın.

GPU VPS üzerinde ComfyUI çalıştırmanın kısa yolu

GPU VPS üzerinde ComfyUI çalıştırmanın doğru sırası şudur: depoyu etiketli bir sürüme sabitleyin, sanal ortam (virtual environment) içine kurun, sunucuyu varsayılan 127.0.0.1 adresinde bırakın ve tarayıcınızı SSH tüneliyle ya da kimlik doğrulayan bir ters proxy üzerinden bağlayın. ComfyUI'nin kendi kullanıcı adı ve parola kontrolü yoktur. Portu dış dünyaya açarsanız arayüzü herkese açmış olursunuz.

Bu yazı bir karşılaştırma yazısı değil. Hangi aracın size uyduğuna hâlâ karar vermediyseniz önce kendi sunucunuzda görsel üretme seçeneklerinin karşılaştırması işinizi görür. Burada tek bir soruya cevap veriyoruz: kiralık bir GPU kutusuna ComfyUI nasıl kurulur ve nasıl kapalı tutulur.

Burada geçen komutların hepsi sizin çalıştırmanız için yazıldı. Test ortamımızda GPU yok, bu yüzden GPU'ya dokunan hiçbir adımı sizin adınıza doğrulamış gibi anlatmıyoruz. Sürüm numaraları ve dosya boyutları 30 Eylül 2026 itibarıyla resmî kaynaklarda görünen değerlerdir.

Kiralamadan önce: disk ve VRAM bütçesi

En sık yapılan hata, sunucuyu kiralayıp sonra diskin dolduğunu görmek. ComfyUI'nin kendisi küçüktür. Ağırlığı modeller taşır. Tek bir modern görsel modeli, difüzyon ağırlıkları artı metin kodlayıcı (text encoder) artı VAE olarak diske iner ve bunların her biri gigabaytlarcadır.

ChartTek bir Qwen-Image kurulumunun disk maliyeti (GB)
The data behind this chart
[
  {
    "label": "qwen_image_fp8_e4m3fn.safetensors",
    "boyut_gb": 20.4
  },
  {
    "label": "qwen_2.5_vl_7b_fp8_scaled.safetensors",
    "boyut_gb": 9.4
  },
  {
    "label": "qwen_image_vae.safetensors",
    "boyut_gb": 0.24
  },
  {
    "label": "\u00dc\u00e7 dosyan\u0131n toplam\u0131",
    "boyut_gb": 30.04
  }
]

Bunlar Hugging Face'te Comfy-Org hesabının yayımladığı dosyaların ilan edilen boyutları. Difüzyon modeli 20.4 GB, metin kodlayıcı 9.4 GB, VAE 0.24 GB. Üçü birlikte 30.04 GB yer kaplar ve bu, tek bir model ailesinin tek bir varyantıdır. Buna PyTorch ve CUDA kütüphanelerinin yaklaşık 10 GB'ını, sistemin kendi yerini ve ürettiğiniz görsellerin birikeceği output/ klasörünü ekleyin.

Pratik kural: bir model ailesiyle oynayacaksanız 100 GB diskle rahat edersiniz, birkaç aileyi yan yana tutacaksanız 200 GB'ın altına inmeyin. Diski kiralarken bunu baştan seçin, çünkü çoğu sağlayıcıda disk büyütmek plan değiştirmek demektir. VRAM tarafında ise ölçü, difüzyon modelinin sıkıştırılmış hâlinin kartın belleğine sığıp sığmadığıdır. 20 GB'lık bir fp8 dosyası 24 GB VRAM'e sığar, 16 GB'a sığmaz ve ComfyUI bu durumda ağırlıkları sistem belleğine taşımaya çalışır, bu da her adımı yavaşlatır. Kart seçiminin geri kalanı için GPU'lu bir VPS kiralarken bakılacak teknik ayrıntılar iyi bir kontrol listesi sunar. Hesabın parayla olan tarafını da merak ediyorsanız, kiralık GPU ile API jetonlarının başabaş noktası ayda kaç görselden sonra kendi kutunuzun ucuzladığını gösteriyor.

Sürümü sabitleyin, çünkü ana dal her gün değişiyor

ComfyUI iki haftada bir civarında yeni bir kararlı sürüm yayımlıyor. 30 Eylül 2026 itibarıyla en güncel etiket v0.38.0 ve bu yazıdaki her şey o sürüme göre yazıldı. master dalını klonlayıp bırakırsanız, bir hafta sonra git pull yaptığınızda düğüm isimleri değişmiş olabilir ve çalışan iş akışınız açılmaz.

sudo apt update
sudo apt install -y git python3-venv python3-dev build-essential
git clone https://github.com/Comfy-Org/ComfyUI.git
cd ComfyUI
git checkout v0.38.0
git describe --tags

Son komut v0.38.0 yazmalı. Başka bir şey yazıyorsa checkout başarısız olmuştur ve ana daldasınızdır. Sürümü yükseltmek istediğinizde git fetch --tags ardından yeni etikete checkout yapın, sonra bağımlılıkları tekrar kurun. Yükseltmeyi asla üretim işi yaparken denemeyin.

Sanal ortam içine kurulum

Sistem Python'una pip install yapmayın. Ubuntu'nun kendi paketleri de aynı Python'u kullanır ve PyTorch'un çektiği sürümler sistem araçlarını bozabilir. Sanal ortam bu riski tamamen ortadan kaldırır, çünkü her şey tek bir klasörün içinde kalır ve silmek istediğinizde o klasörü silmek yeter.

ComfyUI belgeleri Python 3.13'ü öneriyor, 3.12 de sorunsuz çalışıyor.

cd ~/ComfyUI
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
pip install -r requirements.txt

PyTorch indirmesi birkaç gigabayttır ve yavaş bağlantıda uzun sürer. Bittiğinde kartın gerçekten görüldüğünü doğrulayın:

python -c "import torch; print(torch.__version__, torch.cuda.is_available())"

Çıktı True ile bitmeli. False görüyorsanız ilerlemeyin, çünkü ComfyUI yine açılır ama her görsel işlemciyle üretilir ve tek bir kare dakikalar sürer. False dönmesinin en yaygın sebebi sürücünün desteklediği CUDA sürümünün kurduğunuz tekerlekten eski olmasıdır. nvidia-smi çıktısının sağ üst köşesindeki CUDA sürümüne bakın ve gerekiyorsa cu130 yerine sürücünüze uyan indeksi kullanın.

İlk çalıştırma ve sağlık kontrolü

cd ~/ComfyUI
source venv/bin/activate
python main.py

Başlangıç günlüğünde kartın belleği ve toplam sistem belleği yazar, ardından şu satır gelir:

To see the GUI go to: http://127.0.0.1:8188

Bu satır iki şey söylüyor. Varsayılan port 8188 ve varsayılan dinleme adresi 127.0.0.1. Yani sunucu yalnızca kendi üzerinden erişilebilir durumda ve bu bilinçli bir tercih. Tarayıcınızdan sunucunun genel IP adresine 8188 portuyla gitmeyi denerseniz bağlantı kurulmaz. Bu bir arıza değil, kurulumun doğru çalıştığının işareti.

ComfyUI'de kimlik doğrulama yoktur

Bu bölüm bu yazının varlık sebebi. ComfyUI'nin başlangıç bayrakları arasında parola, jeton veya kullanıcı hesabı ile ilgili tek bir seçenek yok. Arayüze ulaşan herkes tam yetkilidir: iş akışı çalıştırabilir, modelleri listeleyebilir, dosya yükleyebilir ve sunucunun GPU'sunu istediği kadar kullanabilir.

--listen bayrağı tam da bu yüzden tehlikelidir. Belgelerde yazdığı gibi, bayrağı değer vermeden kullanırsanız dinleme adresi 0.0.0.0,:: olur, yani tüm IPv4 ve IPv6 arayüzleri. O anda sunucunuz açık bir GPU hizmetine dönüşür. Bu, açıkta bırakılmış bir Ollama API ucuyla birebir aynı hata ve aynı disiplinle çözülür: kimlik doğrulaması olmayan bir model sunucusunu asla doğrudan yayımlamayın. İnternete bakan tarayıcılar 8188 gibi portları düzenli olarak tarar ve kimlik doğrulaması olmayan bir arayüz bulduklarında onu kullanmaya başlarlar.

Güvenli iki yol var ve ikisi de basit.

En basit yol: SSH tüneli

Sunucuda hiçbir şeyi değiştirmezsiniz. Kendi bilgisayarınızdan tünel açarsınız:

ssh -N -L 8188:127.0.0.1:8188 kullanici@sunucu-ip

Komut sizi bir kabuğa düşürmez, olduğu yerde bekler. Bu normaldir. Şimdi kendi tarayıcınızda http://127.0.0.1:8188 adresini açın. Trafik SSH içinden geçtiği için şifrelidir ve sunucuda hiçbir ek port açık değildir. Kimlik doğrulaması zaten SSH anahtarınızdır.

Tek kişi çalışıyorsanız burada durun. Bu kurulum yeterlidir ve bakım gerektirmez.

Ekip için: kimlik doğrulayan ters proxy

Birden fazla kişi erişecekse tünel yorucu olur. O zaman ComfyUI'yi 127.0.0.1:8188 üzerinde bırakıp önüne Nginx koyun. Kimlik doğrulamayı ComfyUI değil, Nginx yapar.

sudo apt install -y nginx apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd ekip-kullanicisi
server {
    listen 443 ssl;
    server_name comfy.ornek.com;

    ssl_certificate     /etc/letsencrypt/live/comfy.ornek.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/comfy.ornek.com/privkey.pem;

    auth_basic           "ComfyUI";
    auth_basic_user_file /etc/nginx/.htpasswd;

    client_max_body_size 100m;

    location / {
        proxy_pass http://127.0.0.1:8188;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 3600s;
    }
}

İki satır kritik. Upgrade ve Connection başlıkları olmadan WebSocket bağlantısı kurulamaz, bu yüzden arayüz açılır ama ilerleme çubuğu hiç hareket etmez ve üretilen görsel hiç görünmez. proxy_read_timeout 3600s ise uzun süren işler içindir: varsayılan 60 saniyelik zaman aşımı, yüksek çözünürlüklü bir üretimin ortasında bağlantıyı keser ve tarayıcıda 504 Gateway Time-out görürsünüz. Bu yapılandırmanın her satırının ne yaptığını Nginx ters proxy yapılandırmasının satır satır açıklaması anlatıyor. Hiç port açmak istemiyorsanız tek bir port açmadan dışarıya hizmet vermenin yolu da aynı sonucu veriyor.

Güvenlik duvarında yalnızca 22 ve 443 açık olsun. 8188 asla dışarı açılmasın.

Modeller nereye iniyor

ComfyUI modelleri dosya adına değil, klasör adına göre tanır. models/ altındaki isimler bellidir ve v0.38.0 sürümünde checkpoints, diffusion_models, text_encoders, vae, loras, controlnet, model_patches, clip_vision ve upscale_models bunların en çok kullanılanları.

Comfy-Org'un paketlediği Qwen-Image dosyaları şöyle yerleşir:

cd ~/ComfyUI/models
wget -P diffusion_models https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_fp8_e4m3fn.safetensors
wget -P text_encoders https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors
wget -P vae https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors

İndirme bitince df -h / ile diske bakın. Aynı deponun yeni sürümü olan Comfy-Org/Qwen-Image-2.1 de aynı düzeni kullanır: qwen_image_2.1_bf16.safetensors ve qwen_image_2.1_int8_convrot.safetensors dosyaları diffusion_models içine, qwen3vl_8b_* dosyaları text_encoders içine, qwen_image_2.1_vae_bf16.safetensors ise vae içine gider. Boyutları indirmeden önce Hugging Face'teki dosya listesinden okuyun, çünkü bf16 varyantları int8 varyantlarının iki katından fazla yer kaplar.

Dosyayı doğru klasöre koyduğunuz hâlde düğümün açılır listesinde göremiyorsanız, ComfyUI klasörleri açılışta taradığı içindir. Arayüzdeki yenileme düğmesine basın ya da sunucuyu yeniden başlatın.

systemd ile kalıcı hâle getirmek

python main.py komutunu elle çalıştırdığınızda SSH oturumu kapanınca süreç de ölür. Kalıcı çalışması için bir servis yazın.

[Unit]
Description=ComfyUI
After=network-online.target

[Service]
User=comfy
WorkingDirectory=/home/comfy/ComfyUI
ExecStart=/home/comfy/ComfyUI/venv/bin/python main.py --listen 127.0.0.1 --port 8188
Restart=on-failure

[Install]
WantedBy=multi-user.target

Dosyayı /etc/systemd/system/comfyui.service olarak kaydedin ve çalıştırın:

sudo systemctl daemon-reload
sudo systemctl enable --now comfyui
sudo systemctl status comfyui
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8188/

status çıktısı active (running) yazmalı, curl ise 200 döndürmeli. ExecStart satırında --listen 127.0.0.1 yazmasının sebebi, bayrağı açıkça yazarak ileride birinin onu değer vermeden --listen hâline getirmesini zorlaştırmak. Servis root olarak değil, kendi kullanıcısıyla çalışsın. ComfyUI özel düğümler (custom nodes) üzerinden üçüncü taraf Python kodu çalıştırabilir ve o kod servisin yetkileriyle çalışır. Aynı sebeple kurduğunuz her özel düğümü, kaynağına güvendiğiniz için kuruyor olmalısınız. Sunucunun genel durumunu düzenli aralıklarla bilinen güvenlik açıklarına karşı taramak da bu tür kutularda iyi bir alışkanlık.

Sık görülen hatalar ve sebepleri

torch.OutOfMemoryError: CUDA out of memory mesajı, difüzyon modelinin ağırlıkları artı ara tensörlerin kart belleğine sığmadığı anlamına gelir. Çözüm çözünürlüğü düşürmek, toplu iş boyutunu 1'e indirmek veya modelin daha düşük hassasiyetli varyantını indirmektir.

No space left on device mesajını genelde indirme sırasında görürsünüz ve dosya yarım kalır. Yarım kalan .safetensors dosyası sessizce durmaz, ComfyUI onu yüklemeye çalışır ve başlık okunamadığı için hata verir. Yarım dosyayı silip yeniden indirin.

Tarayıcı arayüzü açılıyor ama üretim başlamıyorsa ve konsolda hata yoksa, sorun neredeyse her zaman WebSocket'tir. Ters proxy kullanıyorsanız Upgrade başlığını eklemeyi unutmuşsunuzdur.

Sunucunun genel IP adresine 8188 portundan bağlanamıyorsanız, bu beklenen davranıştır. ComfyUI yalnızca 127.0.0.1 dinliyor. Çözüm portu açmak değil, tünel ya da ters proxy kullanmaktır.

FAQ

ComfyUI'yi doğrudan 0.0.0.0 adresine bağlasam ne olur?

Arayüz internetteki herkese açılır. ComfyUI'nin kullanıcı adı, parola veya jeton doğrulaması yoktur, bu yüzden adresi bulan herkes iş akışı çalıştırabilir, dosya yükleyebilir ve GPU'nuzu kullanabilir. Otomatik tarayıcılar bu portları sürekli arar. Erişimi SSH tüneliyle ya da kimlik doğrulayan bir ters proxy ile verin, 8188 portunu güvenlik duvarında kapalı tutun.

ComfyUI için kaç GB disk ve kaç GB VRAM ayırmalıyım?

Disk tarafında tek bir Qwen-Image kurulumu bile yaklaşık 30.04 GB tutar, buna PyTorch ve CUDA kütüphanelerinin yaklaşık 10 GB'ını ekleyin. Tek model ailesi için 100 GB, birkaç aile için 200 GB makul bir başlangıçtır. VRAM tarafında ölçü difüzyon dosyasının boyutudur: 20.4 GB'lık bir fp8 dosyası 24 GB belleğe sığar, 16 GB'a sığmaz.

Hangi ComfyUI sürümünü sabitlemeliyim?

Bu yazı v0.38.0 sürümüne göre yazıldı, o da 29 Eylül 2026'da yayımlandı. Ana dalı değil, etiketli bir sürümü git checkout ile seçin, çünkü proje iki haftada bir civarında yeni sürüm çıkarıyor ve düğüm davranışları sürümler arasında değişebiliyor. Yükseltirken git fetch --tags, yeni etikete geçiş ve pip install -r requirements.txt adımlarını birlikte yapın.

torch.cuda.is_available() neden False dönüyor?

En yaygın sebep, NVIDIA sürücüsünün desteklediği CUDA sürümünün kurduğunuz PyTorch tekerleğinden eski olmasıdır. nvidia-smi çalışmıyorsa sürücü hiç yüklü değildir. Çalışıyorsa çıktısındaki CUDA sürümüne bakın ve PyTorch'u o sürüme uyan indeksten kurun. Bu değer False iken ComfyUI yine açılır, ama üretim işlemciyle yapılır ve tek bir görsel dakikalarca sürer.

Modeli doğru klasöre koydum, düğümde neden görünmüyor?

ComfyUI model klasörlerini açılışta tarar. Sunucu çalışırken eklenen dosya listeye kendiliğinden düşmez, arayüzdeki yenileme düğmesine basın ya da servisi yeniden başlatın. Hâlâ görünmüyorsa dosya yanlış klasördedir: difüzyon ağırlıkları models/diffusion_models, metin kodlayıcılar models/text_encoders, VAE dosyaları models/vae altına gider. Bir diğer ihtimal indirmenin yarım kalmasıdır, dosya boyutunu kaynaktaki boyutla karşılaştırın.