The main goal of this repository is to provide a quick and easy method for individuals interested in stable diffusion to set up their own comfyUI server application with GPU support. This application can be accessed from any device capable of running a browser, including ARM-based Macs, iPads, and even smartphones, without concerns about performance, speed, or privacy issues.
NOTE: As we use the spot VM feature to minimize costs, there may be times when GCP refuses to start the VM instance. To prevent this, it's possible to switch from a spot VM to a standard VM, but be aware that this will result in an approximate 60% increase in total costs.
Normally, a full month's usage of a T4 GPU with 6 VCPU cores, 16 GB RAM, and 100GB SSD amounts to approximately 150 dollars on Google Cloud Platform (GCP). However, by automating the VM's shutdown and startup processes and assuming an average usage of 3 hours per day, the cost is reduced to around 35 dollars per month.
Avg Usage | SSD | RAM | Number of VCPU Cores | Monthly Cost (Estimation) |
---|---|---|---|---|
3h per day | 100GB | 16GB | 6 | 35$ |
6h per day | 100GB | 16GB | 6 | 52$ |
Log in to your VM and execute the following commands:
git clone https://github.com/karaposu/comfyui-on-cloud
chmod +x ./comfyui-on-cloud/src/install.sh
chmod +x ./comfyui-on-cloud/src/virgin_vm.sh
./comfyui-on-cloud/src/virgin_vm.sh # run this only for new VM. This will install miniconda, cuda 11.8, torch.
source ~/.bashrc
./comfyui-on-cloud/src/install.sh
This will set up comfyUI, install popular extensions and model checkpoints, and include an automation script that automatically starts the comfyvm server whenever the VM is booted.
To start comfyUI server, open your terminal in your local machine and run the command below.
gcloud compute instances start comfyvm
(Or if you are on your ipad, go to https://console.cloud.google.com/compute/instances and click start)
Now you can access comfyUI through any browser by browsing: http://[external-ip-of-your-vm]:8188
To shut down the server and avoid unnecessary CPU and GPU usage costs during idle times, run:
gcloud compute instances stop comfyvm
You can right click on generated image and click "save image". This will download it to your local. if you wanna download past generated images you can click view history and load past image and then do "save image"
Find out the full path of your ComfyUI output folder. Mine is /home/ns/ComfyUI/output
.
Create a new folder in your local machine and cd into that directory through terminal
run this command (change "ns" with your username inside comfyvm and also change the output directory path accordingly )
gcloud compute scp --recurse ns@comfyvm:/home/ns/ComfyUI/output ./
This will download the images into your local.
install models
Option 2: Find a model you like in CivitAI. When you are in the model page, check your link and find the model id number. Civitai links looks like this:
https://civitai.com/models/139562/realvisxl-v40
here 139562
is the model id we need. modify the code line below with modelid number you want
wget https://civitai.com/api/download/models/134084 --content-disposition -P ./models/checkpoints/
Now, all you need to do is login to your server and then enter your ComfyUI folder with cd ComfyUI
and paste the line above.
Once installation finished you can use reboot your server and you can use the model.
And some models requires login. And to download them, follow instructions in this link :
https://education.civitai.com/civitais-guide-to-downloading-via-api/
Feel free to inspect all files or ask for clarification to ensure safety and suggest any improvements.
install.sh
script manages the installation and setup process.install_comfyui.sh
install_checkpoints.sh
install_extension.sh
run_the_server.sh
file and adding it to the systemd services to ensure comfyUI starts on boot: /etc/systemd/system/comfyui.service
Create a Google Cloud Platform account and activate the compute engine.
Upgrading to a paid account (Search "billing accounts")
Increase GPU quota from 0 to 1 via Quotas & System Limits (search GPUs (all regions) inside the Quotas & System Limits )
Create an Ubuntu 20.04 VM with T4 GPU and add a TCP firewall rule for port 8188. (name your instance comfyvm, choose zone as europe-central2-b and make sure add your firewall port8188 tag in the network section )
Open terminal in your local machine and Install the gcloud CLI:
wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-461.0.0-darwin-arm.tar.gz
tar -xzvf google-cloud-cli-461.0.0-darwin-arm.tar.gz
./google-cloud-sdk/install.sh
# for windows simply download the gcloud from the link below and run it
# https://cloud.google.com/sdk/docs/install#windows
If there are issues with the gcloud
command, add the following to your ~/.bash_profile
, adjusting the paths as necessary:
if [ -f '/Users/your_username/projects/google-cloud-sdk/path.bash.inc' ]; then . '/Users/your_username/projects/google-cloud-sdk/path.bash.inc'; fi
if [ -f '/Users/your_username/projects/google-cloud-sdk/completion.bash.inc' ]; then . '/Users/your_username/projects/google-cloud-sdk/completion.bash.inc'; fi
Authenticate using gcloud on your local machine:
gcloud auth login
gcloud init
Generate new SSH key pairs on your local machine:
ssh-keygen -t rsa -b 2048 -C "comfy_vm_key" -f ~/.ssh/comfy_vm_key
# for windows, run the below commands instead:
# mkdir "$HOME\.ssh"
# ssh-keygen -t rsa -b 2048 -C "comfy_vm_key" -f "$HOME\.ssh\comfy_vm_key"
This creates .ssh/comfy_vm_key.pub
and .ssh/comfy_vm_key
files.
Authenticate the VM with your SSH key pairs and log in from your local machine to the VM:
cd ~/.ssh
gcloud compute os-login ssh-keys add --key-file=comfy_vm_key.pub
gcloud compute ssh comfyvm --zone europe-central2-b
# if you got error and try running this line "gcloud compute config-ssh " and then run "gcloud compute ssh comfyvm"
# if this doesnt work too, run "gcloud compute config-ssh --remove" and "rm ~/.ssh/authorized_keys" and run "gcloud init" and try to connect again
Log in to the VM:
gcloud compute ssh comfyvm --zone europe-central2-b
conda activate base
Clone the repo for ComfyUI installation scripts and execute them:
git clone https://github.com/karaposu/comfyui-on-cloud
chmod +x ./comfyui-on-cloud/src/install.sh
chmod +x ./comfyui-on-cloud/src/virgin_vm.sh
./comfyui-on-cloud/src/virgin_vm.sh # run this only for new VM. This will install miniconda, cuda 11.8, torch.
source ~/.bashrc
./comfyui-on-cloud/src/install.sh
This process will automatically install a startup runner for the server and start the server. You can verify the installation by accessing [external-ip-of-your-vm]:8188
in your browser to check if everything is working correctly.
Try to login to the VM using gcloud compute ssh comfyvm
. If you cant login, run
gcloud compute instances stop comfyvm
and wait couple of minutes. And then run
gcloud compute instances start comfyvm
and again wait couple of minutes. ANd then try to login again.
If there is no problem with logining your VM, then run systemctl stop comfyui.service
to stop comfyui.service. After this cd
to ComfyUI directory and run
python main.py --listen
. Check the terminal output and make sure comfyui starts without problem.
If there are no problems when running the comfyui manually then lets check why automatic startup fails. Inside your server type this
journalctl -u comfyui.service
and check if it shows any errors.
if there are no errors encountered for above steps, then the problem is about firewall permissions. Go and check firewall rule for port8188 and make sure in this firewall rule setting page you see comfyvm. If not then you must edit comfyvm and add port8188 tag in network settings section.
echo -e "import torch\nprint(torch.cuda.is_available())\nprint(torch.cuda.get_device_name(0))" > test_cuda.py
python test_cuda.py
sudo systemctl disable comfyui.service
sudo systemctl stop comfyui.service