Meu Ollama está exposto? Um checklist para proteger

Por MV2 da Munim, Inc. Configurações conferidas com o FAQ do Ollama em 12 de outubro de 2026. 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.

Por que isso importa: a API do Ollama não tem login. Qualquer pessoa que alcance a porta 11434 pode listar, baixar, criar e apagar modelos, usar a sua GPU e acessar todos os endpoints onde estão os CVEs deste ano (veja CVEs do Ollama, em inglês). Por padrão o Ollama escuta em 127.0.0.1:11434, o que é seguro. Ele costuma ficar exposto depois: quando alguém define OLLAMA_HOST=0.0.0.0 (ou ativa no app a opção "Expose Ollama to the network") para que outra máquina ou um contêiner Docker possa se conectar, ou quando o Docker publica a porta.

1. Veja em qual endereço ele está escutando

127.0.0.1:11434 significa que só esta máquina pode se conectar, e este passo está concluído. 0.0.0.0:11434, *:11434, [::]:11434 ou uma porta do Docker como 0.0.0.0:11434->11434/tcp significa que outras máquinas também podem se conectar. Para confirmar, rode curl http://<this machine's LAN IP>:11434/api/version em outro dispositivo seu (com o IP desta máquina na rede local). Se a resposta trouxer um número de versão, a porta está aberta para a sua rede.

O script gratuito local-ai-checkup faz essas verificações para você, junto com as de versão, OLLAMA_ORIGINS e portas do Docker mais abaixo. Ele só lê e não envia nada para fora da máquina.

2. Se só esta máquina precisa do Ollama: vincule ao localhost

Remova OLLAMA_HOST ou defina como 127.0.0.1:11434, e desative "Expose Ollama to the network" nas configurações do app, se estiver ativada:

Se você definiu OLLAMA_HOST=0.0.0.0 só para que um contêiner Docker pudesse se conectar, há formas de manter o Ollama fora da sua rede: veja Open WebUI ou n8n no Docker não consegue conectar ao Ollama. Se definiu para que um notebook ou celular pudesse se conectar, veja Usar o Ollama de outro computador ou do celular.

3. Se você roda o Ollama no Docker

-p 11434:11434 publica a porta em todas as interfaces. No Linux, o Docker grava as próprias regras de firewall, então o ufw e o firewalld não bloqueiam a porta. Use uma destas opções:

docker run -d --gpus=all -v ollama:/root/.ollama -p 127.0.0.1:11434:11434 --name ollama ollama/ollama

Se o Open WebUI (ou n8n, Dify, Flowise) roda no mesmo arquivo Compose, o Ollama não precisa de porta publicada. O outro contêiner o alcança pelo nome do serviço:

services:
  ollama:
    image: ollama/ollama
    volumes: [ "ollama:/root/.ollama" ]
    # no "ports:" here - only containers on this network can reach it
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    ports: [ "127.0.0.1:3000:8080" ]
    volumes: [ "open-webui:/app/backend/data" ]
volumes:
  ollama: {}
  open-webui: {}

(O comentário no arquivo diz: sem "ports:" aqui, só contêineres desta rede conseguem alcançá-lo.) Recrie os contêineres depois de editar (docker compose up -d) e repita o passo 1.

4. Se outras máquinas realmente precisam: coloque um login na frente

Vincule o Ollama a 127.0.0.1 como no passo 2 e faça de um proxy reverso com autenticação o único caminho de entrada. Um exemplo mínimo com Caddy (gere o hash com caddy hash-password):

ollama.home.example {
    basic_auth {
        alice <hash from caddy hash-password>
    }
    reverse_proxy 127.0.0.1:11434 {
        header_up Host localhost:11434
    }
}

A linha Host é importante. Os exemplos de proxy do FAQ do Ollama reescrevem o cabeçalho Host para localhost:11434, e requisições com outros valores de Host podem ser recusadas. Uma rede privada como Tailscale ou WireGuard é outra opção: só os seus dispositivos alcançam a porta, e nada é publicado na internet. Usar o Ollama remotamente mostra um túnel SSH, o Tailscale (inclusive por que tailscale serve na frente do Ollama retorna 403) e uma regra de firewall só para a rede local.

Apps em vez de pessoas? Open WebUI, n8n e clientes compatíveis com a OpenAI enviam uma chave de API como Authorization: Bearer, que a autenticação básica rejeita. Chave de API do Ollama traz configurações de Caddy e nginx que verificam uma chave, e os ajustes de cada um desses clientes.

Túneis: o FAQ também mostra comandos de ngrok e cloudflared. Sozinhos, eles publicam o seu Ollama para toda a internet sem login. Use-os apenas com o controle de acesso do provedor do túnel ativado.

5. Mantenha o OLLAMA_ORIGINS restrito

OLLAMA_ORIGINS define quais páginas da web o seu navegador deixa conversar com o Ollama. Por padrão, só origens locais são permitidas. Com *, qualquer site que você visitar pode enviar requisições ao seu Ollama local e ler as respostas. Adicione apenas as origens específicas de que precisa, como o ID de uma única extensão do navegador em vez de chrome-extension://*. A verificação no navegador (em inglês), com um clique, mostra se um site consegue ler o seu Ollama (ou LM Studio) agora mesmo.

6. Se você usa o Open WebUI na frente

7. Mantenha tudo atualizado

Verifique suas versões com o verificador de CVEs gratuito (em inglês), que também cobre vLLM, n8n, Dify, RAGFlow, AnythingLLM, Langflow, Flowise e LiteLLM, inclusive avisos sem identificador CVE. O feed Atom lista cada atualização deste site.

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 e sugestões de modelos que cabem na sua GPU. 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, o seu sistema operacional e para que você o usa. MV2 nunca pede senhas, chaves ou acesso remoto.