Ollama API 키: 로컬 Ollama에는 키가 없습니다. 키를 요구하는 방법

Munim, Inc.의 MV2 작성. 2026년 10월 12일에 Ollama 인증 문서, Ollama FAQ, n8n Ollama 자격 증명 문서, Open WebUI API 문서, Caddy matcher 문서와 대조해 확인했습니다. 본인의 컴퓨터에만 사용하세요. 이 페이지는 영어 원문을 AI로 번역한 것입니다. 내용이 다를 경우 원문이 우선합니다.

짧은 답

Ollama를 실행 중인 그 컴퓨터에서만 쓴다면 이 모든 것이 필요 없습니다. 127.0.0.1에 그대로 두세요. 확인 방법은 보안 체크리스트에 있습니다.

방법 A: 이미 Open WebUI를 쓰고 있다면 그것을 출입문으로

Open WebUI는 /ollama/ 아래로 들어온 요청을 Ollama로 전달하며, 자체 API 키를 검사합니다. Ollama는 내부에 남고 추가 소프트웨어도 필요 없습니다.

  1. Open WebUI의 Settings > Account에서 키를 만듭니다(키는 sk-로 시작). 이 옵션이 보이지 않으면 먼저 관리자가 API 키를 허용해야 합니다. Open WebUI의 API 키 문서를 참고하세요.
  2. Open WebUI를 거쳐 Ollama의 네이티브 API를 호출합니다:
    curl https://webui.example.home/ollama/api/tags -H "Authorization: Bearer sk-..."
    또는 Open WebUI의 OpenAI 호환 엔드포인트 /api/chat/completions를 씁니다.
  3. n8n에서는 Ollama 자격 증명의 Base URL을 https://webui.example.home/ollama로, API Key를 sk- 키로 설정합니다. n8n 문서도 이 구성의 예로 Open WebUI를 들고 있습니다.

키는 해당 Open WebUI 사용자의 권한을 그대로 가지므로 앱마다 별도의 사용자를 만들고, Open WebUI를 최신으로 유지하세요(Open WebUI 보안 권고(영어) 참고).

방법 B: 키를 검사하는 작은 프록시

1. Ollama는 로컬에 두고 키 만들기

Ollama는 127.0.0.1:11434(기본값)에서 대기해야 합니다. 예전에 OLLAMA_HOST=0.0.0.0을 설정했다면 체크리스트 2단계대로 되돌리세요. 그러지 않으면 사람들이 11434 포트로 바로 들어와 프록시를 건너뛸 수 있습니다. 그다음 길고 무작위한 키를 만듭니다:

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

(# or는 "또는"이라는 뜻으로, 둘 중 하나만 실행하면 됩니다.)

2a. Caddy

ollama.example.com이 이 컴퓨터를 가리키는 실제 도메인이면 Caddy가 HTTPS 인증서를 알아서 받아 옵니다. 도메인과 PASTE_YOUR_KEY_HERE(여기에 키를 붙여 넣음)를 바꾸세요:

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

LAN 전용 이름(예: ollama.home): 공인 인증서가 없으므로 사이트 블록 안에 tls internal을 쓰고 Caddy의 루트 인증서를 클라이언트에 설치하세요. 아니면 프록시 없이 Tailscale이나 WireGuard 같은 사설 네트워크를 쓰세요. 믿을 수 없는 네트워크에서 일반 http://로 키를 보내지 마세요. 그 네트워크의 누구나 키를 읽을 수 있습니다.

2b. nginx

다음을 /etc/nginx/conf.d/ollama.conf에 넣습니다. conf.d의 파일은 http 블록 안에서 읽히며, map은 그곳에 있어야 합니다. 인증서 경로는 본인 것으로 바꾸세요(예: 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)
    }
}

(주석의 뜻: 키를 Ollama로 넘기지 않음, 토큰을 오는 대로 스트리밍, 긴 생성 작업용, 모델 업로드(ollama create)용.) 키를 추가할 때마다 map에 한 줄씩 넣으세요. 그다음 sudo nginx -t && sudo systemctl reload nginx를 실행하고, 파일은 root만 읽을 수 있게 하세요(sudo chmod 600 /etc/nginx/conf.d/ollama.conf. nginx는 시작할 때 root로 이 파일을 읽습니다).

2c. Docker의 Ollama

ollama 서비스에는 ports:를 아예 주지 말고 Caddy만 공개하세요. 위 Caddyfile에서는 reverse_proxy ollama:11434를 씁니다. 평소의 GPU 설정은 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: {}

(주석의 뜻: ports:를 쓰지 않는다. 이 네트워크의 컨테이너만 닿을 수 있다.)

3. 테스트하기

# 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

(주석의 뜻: 키 없이는 401이 출력되어야 함, 키를 넣으면 버전이 출력되어야 함, 다른 컴퓨터에서 Ollama로 직접 접속하면 연결에 실패해야 함. YOUR_KEY는 본인의 키, <server LAN IP>는 서버의 LAN IP로 바꿉니다.) 마지막 명령이 버전으로 응답한다면 프록시를 우회할 수 있다는 뜻입니다. OLLAMA_HOST와 Docker ports:를 다시 확인하세요. Linux에서 ufw는 Docker가 공개한 포트를 막지 않습니다.

앱 연결하기

피해야 할 실수

대신 점검받고 싶다면

Munim, Inc.의 MV2는 컴퓨터 1대를 위한 로컬 AI 상태 점검(49달러)과, 최대 5대 또는 공유 Ollama·Open WebUI 서버 1대를 위한 소규모 사무실 점검(199달러)을 제공합니다. 무엇이 노출되어 있고 무엇이 위험하거나 느린지, 무엇부터 고쳐야 하는지를 여러분의 OS에 맞는 정확한 명령과 함께 보고서로 드립니다. 보고서는 영어로 작성됩니다. 보고서 샘플을 보세요. Stripe에서 49달러 결제 또는 199달러 결제 후, munimversion2@gmail.com으로 무료 스크립트 local-ai-checkup의 python3 local_ai_checkup.py --json 출력, 사용 중인 OS, 용도를 이메일로 보내 주세요. MV2는 비밀번호, 키, 원격 접속을 절대 요청하지 않으니 API 키는 보내지 마세요.