How to Install Stable Diffusion WebUI on Ubuntu 24.04
A step-by-step installation guide.
Stable Diffusion WebUI
Ubuntu 24.04 • Docker • NVIDIA • Run This AI
AUTOMATIC1111's SD WebUI is the most popular Stable Diffusion interface — a Gradio UI for txt2img, img2img, ControlNet, LoRA, and hundreds of extensions. This guide covers Docker deployment on Ubuntu 24.04 with NVIDIA acceleration.
1 — Prerequisites
| Resource | Min | Rec |
|---|---|---|
| CPU | 4 cores | 8+ |
| RAM | 8 GB | 16+ GB |
| GPU | NVIDIA 4 GB VRAM | 8+ GB VRAM |
| Disk | 20 GB | 50+ GB |
NVIDIA GPU required. GTX 1060 6 GB entry; RTX 3060 12 GB+ ideal.
2 — Docker & NVIDIA Toolkit
sudo apt-get update && sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -sL 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
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker
# Verify: docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
3 — Docker Compose
mkdir -p ~/sd-webui/{outputs,models,config} && cd ~/sd-webui
cat > docker-compose.yml << 'EOF'
services:
sd-webui:
image: ghcr.io/automatic1111/stable-diffusion-webui:latest
container_name: sd-webui
restart: unless-stopped
ports: ["7860:7860"]
volumes:
- ./outputs:/output
- ./models:/models
- ./config:/config
environment:
- COMMANDLINE_ARGS=--medvram --xformers --api
- GRADIO_SERVER_NAME=0.0.0.0
- GRADIO_SERVER_PORT=7860
- XFORMERS=true
- CUDA_VISIBLE_DEVICES=0
- SAFETENSORS_FAST_GPU=true
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
EOF
docker compose up -d
Image from ghcr.io. Port 7860:7860 maps the UI. Volumes persist outputs, models, config. Deploy block with driver:nvidia exposes GPU. Visit http://YOUR_IP:7860 ~60s later.
4 — Nginx Reverse Proxy
sudo apt-get install -y nginx certbot python3-certbot-nginx
cat > /etc/nginx/sites-available/sd-webui << 'EOF'
server {
listen 80;
server_name sd.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:7860;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 300s;
}
location /queue/ {
proxy_pass http://127.0.0.1:7860/queue/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400s;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/sd-webui /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d sd.yourdomain.com
5 — Environment Variables
| Variable | Default | Description |
|---|---|---|
| COMMANDLINE_ARGS | empty | CLI flags for launch.py |
| GRADIO_SERVER_NAME | 127.0.0.1 | Bind. 0.0.0.0 for external |
| GRADIO_SERVER_PORT | 7860 | Web UI port |
| MEDIA_DIR | /output | Generated images dir |
| NO_HALF | false | Disable FP16. Doubles VRAM |
| XFORMERS | false | Enable xformers. VRAM -20-40% |
| CUDA_VISIBLE_DEVICES | all | GPU selection. "0"=first |
| SAFETENSORS_FAST_GPU | false | Direct GPU load |
6 — Extra CLI Arguments
| Flag | Description |
|---|---|
| --medvram | Medium VRAM. 6-8 GB GPUs |
| --lowvram | Max savings. 4 GB GPUs |
| --xformers | Mem-efficient attention |
| --enable-insecure-extension-access | Third-party URLs |
| --no-half | FP32 only |
| --api | REST API at /sdapi/v1/ |
Combine: COMMANDLINE_ARGS=--medvram --xformers --api --enable-insecure-extension-access
7 — Download Models
cd ~/sd-webui/models/Stable-diffusion/
wget -c https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors
wget -c https://huggingface.co/Lykon/dreamshaper-8/resolve/main/dreamshaper_8.safetensors
docker compose restart
Use .safetensors. -c resumes. Sources: HF, CivitAI.
8 — Backup & Update
Backup: tar czf ~/sd-backup-$(date +%F).tar.gz -C ~/sd-webui outputs models config
Update: cd ~/sd-webui && docker compose pull && docker compose up -d
9 — Troubleshooting
CUDA OOM: Add --medvram/--lowvram + --xformers. Lower resolution/batch. Restart.
Model not found: File in ./models/Stable-diffusion/ on host (.ckpt/.safetensors/.pt). docker compose down && up -d.
xformers: Pull latest. Verify XFORMERS=true. Fallback: --opt-split-attention.
Extensions: Add --enable-insecure-extension-access. Mount ./extensions:/stable-diffusion-webui/extensions. Check docker compose logs -f. Disable: --disable-extension <dir>.
AUTOMATIC1111's SD WebUI • Ubuntu 24.04 • Run This AI