Clave de API de Ollama: su Ollama local no tiene ninguna. Así puede exigir una

Por MV2 de Munim, Inc. Comprobado el 12 de octubre de 2026 con la documentación de autenticación de Ollama, las preguntas frecuentes de Ollama, la documentación de credenciales de Ollama en n8n, la documentación de la API de Open WebUI y la documentación de matchers de Caddy. Solo para sus propias máquinas. Esta página se tradujo con IA del original en inglés; si hay diferencias, prevalece el original.

La respuesta corta

Si Ollama solo se usa en la máquina donde se ejecuta, no necesita nada de esto. Déjelo en 127.0.0.1; la lista de comprobación para asegurarlo muestra cómo confirmarlo.

Opción A: ¿ya usa Open WebUI? Úselo como puerta

Open WebUI reenvía peticiones a Ollama bajo /ollama/ y comprueba sus propias claves de API. Ollama sigue siendo interno y no necesita software adicional.

  1. Cree una clave en Open WebUI en Settings > Account (en la interfaz en español, «Configuración» y «Cuenta»; las claves empiezan por sk-). Si no ve la opción, un administrador tiene que permitir antes las claves de API; consulte la documentación de claves de API de Open WebUI.
  2. Llame a la API nativa de Ollama a través de Open WebUI:
    curl https://webui.example.home/ollama/api/tags -H "Authorization: Bearer sk-..."
    o use el endpoint compatible con OpenAI de Open WebUI, /api/chat/completions.
  3. En n8n, ponga como Base URL de la credencial de Ollama https://webui.example.home/ollama y como API Key la clave sk-. La documentación de n8n cita Open WebUI como ejemplo de esta configuración.

La clave lleva los permisos de ese usuario de Open WebUI, así que cree un usuario distinto para cada aplicación y mantenga Open WebUI actualizado (vea los avisos de seguridad de Open WebUI (en inglés)).

Opción B: un pequeño proxy que comprueba una clave

1. Mantenga Ollama en local y cree una clave

Ollama debe escuchar en 127.0.0.1:11434 (el valor por defecto). Si antes definió OLLAMA_HOST=0.0.0.0, deshágalo como en el paso 2 de la lista de comprobación. Si no, cualquiera puede saltarse el proxy yendo directamente al puerto 11434. Después genere una clave aleatoria larga:

openssl rand -hex 32
# or
python3 -c "import secrets; print(secrets.token_urlsafe(32))"

(Basta con uno de los dos comandos.)

2a. Caddy

Caddy obtiene por sí solo un certificado HTTPS cuando ollama.example.com es un dominio real que apunta a esta máquina. Sustituya el dominio y PASTE_YOUR_KEY_HERE (por su clave):

ollama.example.com {
    @key header Authorization "Bearer PASTE_YOUR_KEY_HERE"
    handle @key {
        reverse_proxy 127.0.0.1:11434 {
            header_up Host localhost:11434
            header_up -Authorization
        }
    }
    handle {
        respond "Missing or wrong API key" 401
    }
}

Nombre solo de red local (como ollama.home): no hay certificado público, así que use tls internal dentro del bloque del sitio e instale el certificado raíz de Caddy en sus clientes. O prescinda del proxy y use una red privada como Tailscale o WireGuard (vea Usar Ollama en remoto). No envíe la clave por http:// sin cifrar en una red en la que no confía; cualquiera en esa red podría leerla.

2b. nginx

Ponga esto en /etc/nginx/conf.d/ollama.conf. Los archivos de conf.d se leen dentro del bloque http, que es donde va map. Use sus propias rutas de certificado, por ejemplo las de certbot:

map $http_authorization $ollama_key_ok {
    default                        0;
    "Bearer PASTE_YOUR_KEY_HERE"   1;
}

server {
    listen 443 ssl;
    server_name ollama.example.com;
    ssl_certificate     /etc/letsencrypt/live/ollama.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ollama.example.com/privkey.pem;

    location / {
        if ($ollama_key_ok = 0) { return 401; }
        proxy_pass http://127.0.0.1:11434;
        proxy_set_header Host localhost:11434;
        proxy_set_header Authorization "";   # don't pass the key on to Ollama
        proxy_buffering off;                 # stream tokens as they come
        proxy_read_timeout 600s;             # long generations
        client_max_body_size 0;              # model uploads (ollama create)
    }
}

(Los comentarios significan, en orden: no reenviar la clave a Ollama; enviar los tokens a medida que llegan; permitir generaciones largas; permitir subir modelos con ollama create.) Añada una línea al map por cada clave extra. Luego ejecute sudo nginx -t && sudo systemctl reload nginx y haga que solo root pueda leer el archivo (sudo chmod 600 /etc/nginx/conf.d/ollama.conf; nginx lo lee como root al arrancar).

2c. Ollama en Docker

No dé ningún ports: al servicio ollama y publique solo Caddy. En el Caddyfile de arriba, use reverse_proxy ollama:11434. Añada sus ajustes de GPU habituales al servicio ollama.

services:
  ollama:
    image: ollama/ollama
    volumes: [ "ollama:/root/.ollama" ]
    # no "ports:" - only containers on this network can reach it
  caddy:
    image: caddy:2
    ports: [ "80:80", "443:443" ]
    volumes: [ "./Caddyfile:/etc/caddy/Caddyfile:ro", "caddy_data:/data" ]
volumes:
  ollama: {}
  caddy_data: {}

(El comentario significa: sin «ports:», solo los contenedores de esta red llegan a Ollama.)

3. Pruébelo

# no key: should print 401
curl -s -o /dev/null -w "%{http_code}\n" https://ollama.example.com/api/version

# with the key: should print {"version":"..."}
curl -H "Authorization: Bearer YOUR_KEY" https://ollama.example.com/api/version

# from ANOTHER machine, straight to Ollama: should fail to connect
curl http://<server LAN IP>:11434/api/version

(Lo esperado: sin clave, 401; con la clave, la versión; y desde OTRA máquina directamente a Ollama, la conexión debe fallar. YOUR_KEY es su clave y <server LAN IP> la IP local del servidor.) Si el último comando responde con una versión, el proxy se puede saltar. Revise otra vez OLLAMA_HOST y los ports: de Docker. En Linux, ufw no bloquea los puertos que publica Docker.

Conecte sus aplicaciones

Errores que debe evitar

¿Prefiere que se lo revisen?

MV2 de Munim, Inc. ofrece una revisión de IA local de 49 USD para una máquina, o una revisión para oficinas pequeñas de 199 USD para hasta 5 máquinas o un servidor compartido de Ollama u Open WebUI. Recibe un informe escrito de lo que está expuesto, es arriesgado o va lento y qué arreglar primero, con los comandos exactos para su sistema operativo. El informe está en inglés. Vea un informe de ejemplo (en inglés). Pague 49 USD o pague 199 USD en Stripe y después envíe a munimversion2@gmail.com la salida de python3 local_ai_checkup.py --json del script gratuito local-ai-checkup, su sistema operativo y para qué lo usa. MV2 nunca pide contraseñas, claves ni acceso remoto, así que no envíe su clave de API.