Chave de API do Ollama: o seu Ollama local não tem nenhuma. Veja como exigir uma

Por MV2 da Munim, Inc. Conferido em 12 de outubro de 2026 com a documentação de autenticação do Ollama, o FAQ do Ollama, a documentação de credenciais do Ollama no n8n, a documentação da API do Open WebUI e a documentação de matchers do Caddy. Apenas para as suas próprias máquinas. Esta página foi traduzida com IA a partir do original em inglês; em caso de divergência, vale o original.

A resposta curta

Se o Ollama só é usado na máquina onde roda, você não precisa de nada disso. Deixe-o em 127.0.0.1; o checklist de proteção mostra como confirmar.

Opção A: já usa o Open WebUI? Use-o como portão

O Open WebUI repassa requisições ao Ollama em /ollama/ e verifica as próprias chaves de API. O Ollama continua interno, e você não precisa de software extra.

  1. Crie uma chave no Open WebUI em Settings > Account (na interface em português, "Configurações" e "Conta"; as chaves começam com sk-). Se a opção não aparecer, um administrador precisa liberar as chaves de API antes; veja a documentação de chaves de API do Open WebUI.
  2. Chame a API nativa do Ollama pelo Open WebUI:
    curl https://webui.example.home/ollama/api/tags -H "Authorization: Bearer sk-..."
    ou use o endpoint compatível com a OpenAI do Open WebUI, /api/chat/completions.
  3. No n8n, defina a Base URL da credencial do Ollama como https://webui.example.home/ollama e a API Key como a chave sk-. A documentação do n8n cita o Open WebUI como exemplo dessa configuração.

A chave leva as permissões daquele usuário do Open WebUI, então crie um usuário separado para cada app e mantenha o Open WebUI atualizado (veja os avisos de segurança do Open WebUI (em inglês)).

Opção B: um pequeno proxy que verifica uma chave

1. Mantenha o Ollama local e crie uma chave

O Ollama precisa escutar em 127.0.0.1:11434 (o padrão). Se você definiu OLLAMA_HOST=0.0.0.0 antes, desfaça isso como no passo 2 do checklist. Senão, qualquer um pode pular o proxy indo direto à porta 11434. Depois gere uma chave aleatória longa:

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

(Basta um dos dois comandos.)

2a. Caddy

O Caddy obtém sozinho um certificado HTTPS quando ollama.example.com é um domínio real que aponta para esta máquina. Troque o domínio e PASTE_YOUR_KEY_HERE (pela sua chave):

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
    }
}

Nome só da rede local (como ollama.home): não existe certificado público, então use tls internal dentro do bloco do site e instale o certificado raiz do Caddy nos seus clientes. Ou dispense o proxy e use uma rede privada como Tailscale ou WireGuard (veja Usar o Ollama remotamente). Não envie a chave por http:// sem criptografia numa rede em que você não confia; qualquer pessoa nessa rede poderia lê-la.

2b. nginx

Coloque isto em /etc/nginx/conf.d/ollama.conf. Os arquivos em conf.d são lidos dentro do bloco http, que é onde o map deve ficar. Use os seus próprios caminhos de certificado, por exemplo os do 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)
    }
}

(Os comentários querem dizer, na ordem: não repassar a chave ao Ollama; enviar os tokens à medida que chegam; permitir gerações longas; permitir o envio de modelos com ollama create.) Adicione uma linha ao map para cada chave extra. Depois rode sudo nginx -t && sudo systemctl reload nginx e deixe o arquivo legível só para o root (sudo chmod 600 /etc/nginx/conf.d/ollama.conf; o nginx o lê como root na inicialização).

2c. Ollama no Docker

Não dê nenhum ports: ao serviço ollama e publique só o Caddy. No Caddyfile acima, use reverse_proxy ollama:11434. Adicione as suas configurações de GPU de sempre ao serviço 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: {}

(O comentário quer dizer: sem "ports:", só os contêineres desta rede alcançam o Ollama.)

3. Teste

# 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

(O esperado: sem chave, 401; com a chave, a versão; e de OUTRA máquina, direto no Ollama, a conexão deve falhar. YOUR_KEY é a sua chave e <server LAN IP> o IP local do servidor.) Se o último comando responder com uma versão, o proxy pode ser contornado. Confira de novo o OLLAMA_HOST e os ports: do Docker. No Linux, o ufw não bloqueia portas que o Docker publica.

Conecte os seus apps

Erros a evitar

Prefere que alguém verifique para você?

MV2 da Munim, Inc. faz uma verificação de IA local por US$ 49 para uma máquina, ou uma verificação para pequenos escritórios por US$ 199 para até 5 máquinas ou um servidor compartilhado de Ollama ou Open WebUI. Você recebe um relatório escrito do que está exposto, arriscado ou lento e do que corrigir primeiro, com os comandos exatos para o seu sistema operacional. O relatório é em inglês. Veja um relatório de exemplo (em inglês). Pague US$ 49 ou pague US$ 199 no Stripe e depois envie para munimversion2@gmail.com a saída de python3 local_ai_checkup.py --json do script gratuito local-ai-checkup, o seu sistema operacional e para que você o usa. MV2 nunca pede senhas, chaves ou acesso remoto, então não envie a sua chave de API.