PRODUCCIÓN

Módulo 16: Deploy en producción EU

ACTUALIZADO Q3 2026

Por qué la soberanía de datos importa

Cada vez que envías datos de un cliente a una API externa (OpenAI, Anthropic, Google), esos datos salen de tu control. Para muchas empresas europeas esto no es un problema técnico: es un problema legal.

Punto clave

RGPD, ENS, NIS2: la normativa europea exige saber dónde están tus datos en todo momento. Self-hosted en servidores EU es la solución para datos sensibles.

Normativa que te afecta

  • RGPD: toda empresa con datos de personas en la UE. Consentimiento, minimización, derecho al olvido.
  • ENS Alto: administración pública española. Datos en territorio nacional, cifrado obligatorio, auditoría.
  • NIS2: infraestructura crítica. Notificación de incidentes en 24h, medidas técnicas específicas.
  • AI Act: sistemas de IA en la UE. Clasificación por riesgo, transparencia, documentación.

vLLM en Hetzner: tu propio LLM

Hetzner es un proveedor alemán con datacenters en Alemania y Finlandia. Desde 40 EUR/mes por un servidor dedicado. vLLM expone una API compatible con OpenAI: cualquier código existente funciona cambiando solo la URL.

# docker-compose.yml
services:
  vllm:
    image: vllm/vllm-openai:latest
    ports:
      - "8000:8000"
    volumes:
      - ./models:/root/.cache/huggingface
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    command: >
      --model Qwen/Qwen2.5-32B-Instruct
      --max-model-len 8192
    restart: unless-stopped
# Probar con curl
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen2.5-32B-Instruct",
    "messages": [{"role": "user", "content": "Hola"}]
  }'

Red privada con Tailscale

Tu servidor vLLM no debe estar expuesto a internet. Tailscale crea una red privada (mesh VPN) entre tus servidores. Solo las máquinas autorizadas se comunican.

# En cada servidor
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up

# Acceso interno (no público)
curl http://100.x.y.z:8000/v1/models

RGPD en la práctica

Para IA, RGPD requiere 6 cosas concretas:

  1. Base legal: una razón válida para procesar datos con IA
  2. Minimización: solo enviar al modelo los datos estrictamente necesarios
  3. Transparencia: informar al usuario de que usas IA
  4. Derecho al olvido: poder borrar todos los datos de un usuario
  5. DPIA: evaluación de impacto obligatoria para decisiones automatizadas
  6. Registro de actividades: documentar qué datos procesas, con qué modelo, dónde
# Endpoint de borrado RGPD
@app.delete("/api/v1/gdpr/erasure/{user_id}")
async def gdpr_erasure(user_id: str):
    await db.execute("DELETE FROM users WHERE id = $1", user_id)
    await db.execute("DELETE FROM ai_logs WHERE user_id = $1", user_id)
    qdrant.delete(collection_name="user_docs",
        points_selector={"filter": {"must": [
            {"key": "user_id", "match": {"value": user_id}}
        ]}})
    await audit_log("gdpr_erasure", user_id=user_id)
    return {"status": "erased", "sla": "72h max"}

La soberanía de datos no es un lujo. Es un requisito legal y una ventaja competitiva. Tus clientes europeos lo valoran.

Checklist antes de producción

  • Servidor en datacenter EU (Hetzner, OVH, Scaleway)
  • LLM self-hosted: NO APIs externas con datos sensibles
  • Red privada (Tailscale, WireGuard)
  • TLS 1.3 en todas las conexiones
  • Cifrado en reposo (LUKS discos, AES-256 base de datos)
  • Endpoint de borrado RGPD operativo
  • Política de retención documentada y automatizada
  • DPIA completada si hay perfilado automatizado
  • Notificación de brechas en menos de 72h (proceso documentado)

Pon a prueba tus conocimientos

Completa el quiz sobre deploy soberano y compliance europeo.

Hacer quiz