Instalación de Stable Diffusion WebUI en Linux

Stable Diffusion WebUI (AUTOMATIC1111) es la interfaz web más popular para generación de imágenes con IA en servidores Linux. Con una GPU NVIDIA y los drivers correctamente instalados, puedes ejecutar modelos de Stable Diffusion localmente en tu VPS y acceder a la interfaz desde el navegador para generar, editar y mejorar imágenes sin depender de servicios externos. Esta guía cubre la instalación completa, la configuración de la GPU, la descarga de modelos y el acceso remoto seguro.

Requisitos Previos

  • Ubuntu 20.04 o 22.04 (recomendado)
  • GPU NVIDIA con al menos 4 GB VRAM (6+ GB recomendado)
  • Drivers NVIDIA instalados y funcionando (nvidia-smi responde)
  • CUDA Toolkit instalado
  • Al menos 20 GB de espacio libre en disco
  • Python 3.10 o superior
# Verificar GPU y VRAM disponible
nvidia-smi

# Verificar la versión de Python
python3 --version

Instalación de Dependencias

# Actualizar el sistema
sudo apt-get update && sudo apt-get upgrade -y

# Instalar dependencias del sistema
sudo apt-get install -y \
  git wget curl \
  python3 python3-pip python3-venv \
  libgoogle-perftools-dev \
  libgl1 libglib2.0-0 \
  build-essential

# Instalar dependencias para el procesamiento de imágenes
sudo apt-get install -y \
  libjpeg-dev libpng-dev libtiff-dev \
  libavcodec-dev libavformat-dev libswscale-dev

Instalación de Stable Diffusion WebUI

# Crear el directorio de instalación
mkdir -p /opt/stable-diffusion
cd /opt/stable-diffusion

# Clonar el repositorio oficial de AUTOMATIC1111
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui

# Crear y activar el entorno virtual
python3 -m venv venv
source venv/bin/activate

# El script de inicio (webui.sh) instala automáticamente todas las dependencias
# Solo necesitamos preparar el entorno

# Verificar el contenido del repositorio
ls -la

Instalación automática de dependencias con webui.sh

# El primer inicio descarga e instala automáticamente:
# - PyTorch con soporte CUDA
# - Todas las dependencias de Python
# - Los repositorios necesarios

# Ejecutar el script de inicio (acepta el primer inicio largo)
./webui.sh --xformers --skip-torch-cuda-test

# El proceso puede tardar 10-30 minutos la primera vez
# Cuando aparezca "Running on local URL: http://127.0.0.1:7860" está listo

Descarga de Modelos

Los modelos son los archivos que definen el estilo y calidad de las imágenes generadas.

Estructura de directorios de modelos

# Los modelos se colocan en estos directorios
ls /opt/stable-diffusion/stable-diffusion-webui/models/
# Stable-diffusion/    <- Modelos principales (checkpoint .safetensors)
# VAE/                  <- VAE (mejora la calidad de colores)
# Lora/                 <- LoRA para estilos específicos
# ControlNet/           <- ControlNet para control de composición

Descargar modelos populares

cd /opt/stable-diffusion/stable-diffusion-webui/models/Stable-diffusion/

# Modelo base SDXL (mejor calidad, requiere 8+ GB VRAM)
wget -O "sdxl-base-1.0.safetensors" \
  "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors"

# Modelo SD 1.5 (más ligero, 4 GB VRAM suficiente)
wget -O "v1-5-pruned-emaonly.safetensors" \
  "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors"

# Modelo Realistic Vision (fotorrealista, basado en SD 1.5)
# Descargar desde CivitAI: https://civitai.com/models/4201
# wget -O "realisticVisionV60B1.safetensors" "URL_CIVITAI"

Descargar un VAE (recomendado)

cd /opt/stable-diffusion/stable-diffusion-webui/models/VAE/

# VAE de Stability AI para SD 1.5 (mejora los colores y detalles)
wget -O "vae-ft-mse-840000-ema-pruned.safetensors" \
  "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors"

Configuración de Inicio

Crea el script de inicio personalizado con los parámetros correctos:

cat > /opt/stable-diffusion/stable-diffusion-webui/webui-user.sh << 'EOF'
#!/bin/bash

# Directorio de instalación de Stable Diffusion
export STABLE_DIFFUSION_DIR="$(dirname "$0")"

# Argumentos para el lanzador
export COMMANDLINE_ARGS="--listen \
  --port 7860 \
  --xformers \
  --enable-insecure-extension-access \
  --api \
  --no-half-vae \
  --theme dark"

# Optimizaciones de memoria VRAM
# Para GPUs con 4 GB VRAM, añadir: --medvram
# Para GPUs con menos de 4 GB, añadir: --lowvram
# export COMMANDLINE_ARGS="$COMMANDLINE_ARGS --medvram"

# Variable de entorno para optimización de memoria
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
EOF

chmod +x /opt/stable-diffusion/stable-diffusion-webui/webui-user.sh

Parámetros importantes

ParámetroDescripción
--listenEscuchar en todas las interfaces (no solo localhost)
--xformersUsar xformers para menor uso de VRAM (recomendado)
--medvramModo memoria media (4 GB VRAM)
--lowvramModo memoria baja (2 GB VRAM, muy lento)
--apiHabilitar la API REST
--no-half-vaeEvitar errores de precisión con VAE

Acceso Remoto Seguro

Opción 1: Tunnel SSH (más seguro, sin exponer el puerto)

# Desde tu máquina local, crear el tunnel SSH
ssh -L 7860:localhost:7860 usuario@IP_SERVIDOR -N

# Acceder desde el navegador local
# http://localhost:7860

Opción 2: Proxy Nginx con autenticación

# Instalar Nginx y Certbot
sudo apt-get install -y nginx certbot python3-certbot-nginx

# Obtener certificado SSL
sudo certbot --nginx -d sd.tudominio.com
# /etc/nginx/sites-available/stable-diffusion
server {
    listen 443 ssl http2;
    server_name sd.tudominio.com;

    ssl_certificate /etc/letsencrypt/live/sd.tudominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/sd.tudominio.com/privkey.pem;

    # Autenticación básica obligatoria
    auth_basic "Stable Diffusion - Acceso Restringido";
    auth_basic_user_file /etc/nginx/.htpasswd;

    # Subidas grandes para img2img
    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:7860;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 300;
    }
}
# Crear usuario para acceso
sudo apt-get install -y apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd tu-usuario

sudo ln -s /etc/nginx/sites-available/stable-diffusion /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Opción 3: Protección con contraseña incorporada en WebUI

# Añadir al COMMANDLINE_ARGS en webui-user.sh
# --gradio-auth usuario:contraseña

Configurar como Servicio

# Crear usuario dedicado
sudo useradd -r -s /bin/false -d /opt/stable-diffusion stable-diffusion
sudo chown -R stable-diffusion:stable-diffusion /opt/stable-diffusion/

# Crear el servicio systemd
sudo cat > /etc/systemd/system/stable-diffusion.service << 'EOF'
[Unit]
Description=Stable Diffusion WebUI
After=network.target

[Service]
Type=simple
User=stable-diffusion
Group=stable-diffusion
WorkingDirectory=/opt/stable-diffusion/stable-diffusion-webui
ExecStart=/opt/stable-diffusion/stable-diffusion-webui/webui.sh
Restart=on-failure
RestartSec=30
# Necesario para acceso a la GPU
Environment="HOME=/opt/stable-diffusion"

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable stable-diffusion
sudo systemctl start stable-diffusion

# Ver los logs (el primer inicio tarda varios minutos)
sudo journalctl -u stable-diffusion -f

Extensiones Útiles

# Las extensiones se instalan desde la interfaz web: Extensions > Available
# O manualmente clonando los repositorios

cd /opt/stable-diffusion/stable-diffusion-webui/extensions/

# ControlNet - control preciso de la composición
git clone https://github.com/Mikubill/sd-webui-controlnet

# ADetailer - mejora automática de caras y manos
git clone https://github.com/Bing-su/adetailer

# Infinite Image Browsing - galería de imágenes generadas
git clone https://github.com/zanllp/sd-webui-infinite-image-browsing

# After State - filtros y ajustes post-generación
git clone https://github.com/altoiddealer/--sd-webui-ar

# Reiniciar el WebUI para cargar las extensiones
sudo systemctl restart stable-diffusion

Solución de Problemas

Error: CUDA out of memory

# Añadir --medvram o --lowvram a los argumentos de inicio
# En webui-user.sh:
export COMMANDLINE_ARGS="... --medvram"

# O reducir el batch size y el tamaño de imagen en la interfaz

La generación es muy lenta

# Verificar que xformers está instalado y activo
# En la interfaz web: Settings > System Info

# Verificar que se usa la GPU y no la CPU
nvidia-smi  # Debe mostrar uso de VRAM durante la generación

# Instalar xformers si no está
source /opt/stable-diffusion/stable-diffusion-webui/venv/bin/activate
pip install xformers

Error al cargar el modelo

# Verificar que el archivo del modelo no está corrupto
ls -lh /opt/stable-diffusion/stable-diffusion-webui/models/Stable-diffusion/

# Verificar el hash del archivo
sha256sum modelo.safetensors

El WebUI no carga tras actualizar

# Actualizar el repositorio y las dependencias
cd /opt/stable-diffusion/stable-diffusion-webui
git pull
source venv/bin/activate
pip install -r requirements.txt
sudo systemctl restart stable-diffusion

Conclusión

Stable Diffusion WebUI instalado en un servidor VPS con GPU proporciona una plataforma completa de generación de imágenes con IA totalmente bajo tu control. Con el proxy Nginx configurado, la autenticación activada y el servicio systemd en marcha, puedes acceder a la interfaz desde cualquier dispositivo y generar imágenes sin límites de tiempo, sin coste por imagen y con total privacidad.