1. Habilitar IOMMU en Proxmox
Verificar si IOMMU está activado:
sudo dmesg | grep DMAR
Si ves una línea similar a DMAR: IOMMU enabled
, entonces está activado.
Habilitar IOMMU si no lo está
Edita el archivo de configuración de GRUB:
sudo nano /etc/default/grub
Cambia la línea:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
por:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
Guarda los cambios (CTRL+X
, Y
, Enter
) y actualiza GRUB:
sudo update-grub
sudo reboot
Habilitar IOMMU en la BIOS (si aún no lo has hecho):
- Busca
VT-d
en la configuración del chipset y actívalo.
2. Passthrough de la GPU en Proxmox
Edita el archivo de módulos del kernel:
sudo nano /etc/modules
Agrega estas líneas:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Obtén el ID del dispositivo PCI de la GPU:
lspci -nn | grep -i nvidia
Verás una línea como:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03]
01:00.1 Audio device [0403]: NVIDIA Corporation GP106 High Definition Audio Controller [10de:10f1]
Edita /etc/modprobe.d/vfio.conf
para asignar la GPU a VFIO:
sudo nano /etc/modprobe.d/vfio.conf
Añade:
options vfio-pci ids=10de:1c03,10de:10f1
Aplica los cambios y reinicia:
sudo update-initramfs -u
sudo reboot
3. Instalación de Docker y NVIDIA Container Toolkit
Instalar Docker:
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable --now docker
Instalar NVIDIA Container Toolkit:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb #deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] #' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
Configura Docker para usar NVIDIA como runtime por defecto:
sudo nano /etc/docker/daemon.json
Añade:
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
Reinicia Docker:
sudo systemctl restart docker
Verifica que la GPU está disponible en Docker:
sudo docker run --rm --gpus all nvidia/cuda:12.2.0-runtime-ubuntu22.04 nvidia-smi
4. Configurar Ollama con Docker y GPU
Crea un archivo docker-compose.yml
:
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
volumes:
- ollama:/root/.ollama
pull_policy: always
tty: true
ports:
- "11434:11434"
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,utility
- OLLAMA_FORCE_CUDA=1
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:v0.5.7
container_name: open-webui
volumes:
- open-webui:/app/backend/data
depends_on:
- ollama
ports:
- "3000:8080"
environment:
- 'OLLAMA_API_BASE_URL=http://ollama:11434/api'
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
volumes:
ollama: {}
open-webui: {}
Ejecuta los contenedores:
sudo docker-compose up -d
Para descargar un modelo y probarlo:
sudo docker exec ollama ollama pull deepseek-r1
sudo docker exec ollama ollama run deepseek-r1
5. Configuración de Nginx Proxy Manager
Para acceder a Proxmox desde Internet:
- Host:
192.168.1.147
- Puerto:
8006
- Esquema:
HTTPS
- Force SSL: ❌ Desactivado
- HSTS: ✅ Activado
- HTTP/2: ✅ Activado
Si ves ERR_TOO_MANY_REDIRECTS
, asegúrate de:
sudo nano /etc/default/pveproxy
Comenta la línea:
#redirect-port 80
Reinicia Proxmox:
sudo systemctl restart pveproxy
6. Monitorización de la GPU
Instala nvtop
para ver el uso de la GPU:
sudo apt install -y nvtop
nvtop
Si ves Impossible to initialize nvidia nvml
, reinicia la máquina y asegúrate de que los drivers de NVIDIA están bien instalados.
Con esto tendrás tu Nvidia GTX 1060 funcionando en Proxmox, Docker y Ollama con WebUI, accesible desde Internet. ¡Disfruta! 🚀
Deja una respuesta