Munim, Inc.의 MV2 작성. 2026년 10월 12일에 Ollama FAQ, Ollama 서버 소스(server/routes.go), Tailscale Serve 문서, Open WebUI의 HTTPS using Tailscale 페이지, LM Studio 서버 문서와 대조해 확인했습니다. 본인의 컴퓨터에만 사용하세요. 이 페이지는 영어 원문을 AI로 번역한 것입니다. 내용이 다를 경우 원문이 우선합니다.
흔한 조언은 "OLLAMA_HOST=0.0.0.0을 설정하라"(또는 macOS·Windows 앱에서 Settings → Expose Ollama to the network를 켜라)입니다. 동작은 하지만 Ollama API에는 로그인이 없으므로, 그 네트워크의 모든 기기가 여러분의 모델을 쓰고, 내려받고, 삭제하고, 올해 Ollama CVE(영어)가 있는 엔드포인트에 닿을 수 있게 됩니다. 공유기에서 포트를 포워딩한 적이 있다면 그 범위는 인터넷 전체입니다. 목적을 이루는 가장 좁은 방법을 고르세요:
| 원하는 것 | 쓸 방법 | 그 밖에 Ollama에 닿는 사람 |
|---|---|---|
| 내가 관리하는 노트북 한 대에서 가끔 | A. SSH 터널 | 없음. 새로 여는 것이 없습니다. |
| 집이든 밖이든 휴대폰에서 채팅 | B. Tailscale Serve를 통한 Open WebUI | 내 tailnet만, 그것도 Open WebUI 로그인을 거쳐서만. Ollama는 localhost에 남습니다. |
| 다른 기기의 앱이 Ollama API와 통신(다른 PC의 도구, n8n, 휴대폰 앱) | C. tailnet 위의 Ollama | 내 tailnet의 기기 |
| 같은 집 네트워크의 다른 컴퓨터 | D. LAN과 방화벽 규칙 | 그 네트워크의 모든 기기, 로그인 없이 |
하지 말 것: 공유기에서 11434 포트를 포워딩하기, 서비스의 접근 제어 없이 Ollama에 tailscale funnel, ngrok, cloudflared를 쓰기(셋 모두 인터넷에 공개합니다), "되게 하려고" OLLAMA_ORIGINS=*를 설정하기. 마지막 것은 어떤 기기가 아니라 어떤 웹사이트가 Ollama를 호출할 수 있는지를 바꿉니다(브라우저 점검(영어) 참고).
GPU 컴퓨터의 Ollama는 기본값 127.0.0.1:11434에 그대로 둡니다. 노트북에서:
ssh -N -L 11434:127.0.0.1:11434 you@gpu-box
이것이 실행되는 동안 노트북의 http://127.0.0.1:11434는 GPU 컴퓨터의 Ollama가 되므로, ollama list, Open WebUI, 그리고 기본값이 localhost인 모든 것이 그냥 동작합니다. curl http://127.0.0.1:11434/api/version으로 테스트하세요. 노트북에서도 자체 Ollama가 11434에서 돌고 있다면 다른 포트를 포워딩하고(-L 11435:127.0.0.1:11434) 클라이언트를 그쪽으로 향하게 하세요. 예: OLLAMA_HOST=127.0.0.1:11435 ollama list.
GPU 컴퓨터에는 SSH 서버가 필요합니다. Linux에는 보통 이미 있고, macOS에서는 시스템 설정 → 일반 → 공유 → 원격 로그인을 켜고, Windows에서는 선택적 기능 "OpenSSH 서버"를 추가합니다. ssh 클라이언트는 Windows 10/11, macOS, Linux에 기본으로 들어 있습니다. 요청이 127.0.0.1로 향하므로 Ollama의 Host 검사(아래)도 통과합니다.
휴대폰에서 채팅하려면 휴대폰을 서버와 같은 사설 네트워크에 두고, Ollama가 아니라 Open WebUI에 접속하세요. Ollama는 localhost를 벗어나지 않고, Open WebUI 계정이 출입문 역할을 계속합니다.
-p 127.0.0.1:3000:8080(Compose에서는 ports: [ "127.0.0.1:3000:8080" ])이고, Ollama는 전과 같이 OLLAMA_BASE_URL로 연결합니다.tailscale serve --bg 3000 tailscale serve statusstatus에 주소
https://<machine>.<tailnet>.ts.net(컴퓨터 이름과 tailnet 이름이 들어감)이 표시됩니다. Tailscale Serve는 tailnet에서 HTTPS 인증서가 켜져 있어야 하며, 꺼져 있으면 처음 실행할 때 동의 페이지로 안내됩니다. --bg를 주면 재부팅 후에도 계속 동작합니다.WEBUI_URL=https://<machine>.<tailnet>.ts.net과 CORS_ALLOW_ORIGIN=https://<machine>.<tailnet>.ts.net. 컨테이너를 다시 만드세요. (이 설정이 왜 중요한지, 쿠키와 비밀 키 설정은 Open WebUI behind a proxy(영어)를 참고하세요.)테스트: 휴대폰의 Wi-Fi를 끄고 새로 고침하세요. 모바일 데이터로도 계속 동작해야 합니다. tailnet에 없는 기기에서는 주소가 아예 열리지 않아야 합니다. Open WebUI에서 가입이 열려 있다면 계정을 만든 뒤 닫으세요(ENABLE_SIGNUP=False). 되돌리려면: tailscale serve reset.
tailscale funnel은 안 됩니다. Funnel은 같은 주소를 인터넷에 공개합니다. Open WebUI 문서도 이를 경고하며, Open WebUI의 9월 보안 권고(영어)를 생각하면 사설 tailnet이 더 안전한 기본값입니다.
일부 클라이언트는 API를 직접 써야 합니다. 다른 PC의 Ollama, 다른 서버의 n8n이나 스크립트, Ollama URL에 바로 접속하는 휴대폰 앱 등입니다.
tailscale serve 11434가 403을 반환하는 이유누구나 떠올리는 방법, 즉 localhost 전용 Ollama 앞에 tailscale serve를 두면 모든 요청이 403 Forbidden이 됩니다. Tailscale 탓이 아닙니다. Ollama가 루프백 주소에서 대기할 때는 allowedHostsMiddleware가 요청의 Host 헤더를 검사합니다. 받아들이는 것은 localhost, 그 컴퓨터 자신의 호스트 이름, .localhost·.local·.internal로 끝나는 이름, 그리고 루프백·사설·로컬 인터페이스 IP뿐입니다. 이 검사는 웹사이트발 DNS 리바인딩을 막기 위한 것입니다. Serve는 <machine>.<tailnet>.ts.net을 그대로 넘기는데, 이 이름은 목록에 없습니다. 서버에서 직접 확인할 수 있습니다: curl http://127.0.0.1:11434/api/version은 응답하지만 curl -H "Host: gpu-box.example.ts.net" http://127.0.0.1:11434/api/version은 403을 받습니다. Ollama가 루프백이 아닌 주소에서 대기할 때는 이 검사를 건너뜁니다.
tailscale ip -4(예: 100.101.102.103).OLLAMA_HOST=100.101.102.103:11434를 설정합니다. Linux: sudo systemctl edit ollama.service로 [Service] 아래에 Environment="OLLAMA_HOST=100.101.102.103:11434"를 추가한 뒤 sudo systemctl daemon-reload && sudo systemctl restart ollama. macOS 앱: launchctl setenv OLLAMA_HOST "100.101.102.103:11434" 후 Ollama를 종료했다가 다시 엽니다. Windows: Ollama를 종료하고 "계정의 환경 변수 편집"에서 OLLAMA_HOST를 설정한 뒤 시작 메뉴에서 실행합니다. 앱의 "Expose Ollama to the network" 스위치는 꺼 둔 채로 둡니다.ss -tlnp | grep 11434, macOS lsof -nP -iTCP:11434 -sTCP:LISTEN, Windows netstat -ano | findstr :11434). 0.0.0.0이나 *가 아니라 100.x 주소가 나와야 합니다.http://100.101.102.103:11434 또는 http://gpu-box:11434 같은 컴퓨터의 MagicDNS 이름을 씁니다. 다른 컴퓨터의 Ollama CLI라면: OLLAMA_HOST=http://gpu-box:11434 ollama list.부작용 두 가지. (1) 서버 자신에서 localhost:11434가 더 이상 응답하지 않습니다. 로컬 도구도 100.x 주소를 쓰게 하세요. 예: OLLAMA_HOST=100.101.102.103:11434 ollama run ..., 같은 컴퓨터에 있는 Open WebUI의 OLLAMA_BASE_URL도 마찬가지입니다. (2) Tailscale이 주소를 얻기 전에 Ollama가 시작되면 바인드가 실패합니다. Ollama 설치 프로그램이 만드는 Linux 유닛에는 Restart=always와 RestartSec=3이 있어서 바인드될 때까지 계속 재시도합니다. macOS와 Windows에서는 Tailscale이 연결된 뒤 Ollama를 다시 시작하세요.
이 방법은 localhost:11434가 계속 동작합니다. (위와 같은 방식으로) OLLAMA_HOST=0.0.0.0:11434를 설정한 뒤:
sudo ufw allow OpenSSH # first, if you manage this box over SSH sudo ufw default deny incoming sudo ufw allow in on tailscale0 to any port 11434 proto tcp sudo ufw enable sudo ufw status verbose # no other rule should allow 11434
(주석의 뜻: 첫 줄은 이 컴퓨터를 SSH로 관리한다면 가장 먼저 실행, 마지막 줄은 다른 규칙이 11434를 허용하고 있으면 안 된다는 것.) 이 방법은 직접 설치한 Ollama에 해당합니다. Ollama가 포트를 공개한 Docker에서 돌고 있다면 ufw는 적용되지 않습니다. Docker가 자체 방화벽 규칙을 쓰기 때문입니다(Docker에서 Ollama 연결 안 됨 참고).
어느 쪽이든: 기본적으로 tailnet의 모든 기기는 서로 닿을 수 있습니다. 컴퓨터를 다른 사람과 공유했거나 덜 믿는 기기가 있다면, tailnet 접근 정책에서 11434 포트를 본인 기기로만 제한하세요. 앱에도 키를 요구하려면 앞에 Bearer 키 프록시를 두세요.
믿을 수 있는 집 네트워크라면 괜찮습니다. 사무실, 기숙사, 호텔, 카페 Wi-Fi에서는 안 됩니다. 손님을 포함해 그 네트워크의 모든 사람이 로그인 없이 여러분의 Ollama를 쓰게 됩니다.
OLLAMA_HOST=0.0.0.0:11434를 설정하거나(해결책 1의 절차에서 0.0.0.0을 사용) 앱의 "Expose Ollama to the network"를 켭니다. Ollama를 완전히 종료했다가 다시 엽니다.default deny incoming과 함께 sudo ufw allow from 192.168.1.0/24 to any port 11434 proto tcp(본인의 서브넷으로 바꿔서).New-NetFirewallRule -DisplayName "Ollama LAN only" -Direction Inbound -Protocol TCP -LocalPort 11434 -RemoteAddress LocalSubnet -Profile Private -Action AllowWindows의 허용 규칙은 합쳐지므로 Windows Defender 방화벽 → 고급 설정 → 인바운드 규칙도 열어서, 공용 네트워크나 모든 주소를 허용하는 예전 Ollama 규칙이 있으면 삭제하거나 좁히세요.
테스트: 네트워크의 다른 기기에서 curl http://<server LAN IP>:11434/api/version(서버의 LAN IP로 바꿔서)이 응답해야 합니다. 모바일 데이터를 쓰는 휴대폰(Wi-Fi 끔)에서는 같은 주소가 응답하면 안 됩니다.
LM Studio에는 Developer → Server Settings 아래에 자체 스위치가 있습니다. 0.4.0부터는 Serve on Local Network보다 먼저 Require Authentication을 켜고, Manage Tokens에서 클라이언트에 필요한 권한만 가진 토큰을 만든 뒤, 클라이언트가 Authorization: Bearer <token>을 보내게 하세요. 인증은 기본적으로 꺼져 있습니다. 웹 페이지가 정말 필요로 하지 않는 한 Enable CORS는 꺼 두세요(브라우저 점검(영어)은 1234 포트도 검사합니다). A, C, D 방법은 1234 포트로도 똑같이 동작합니다. 예: ssh -N -L 1234:127.0.0.1:1234 you@gpu-box.
무료 스크립트 local-ai-checkup은 컴퓨터에서 네트워크로 접근 가능한 AI 포트를 표시하고, Ollama 버전, OLLAMA_ORIGINS, Docker 포트 바인딩을 확인합니다. 읽기 전용이며 컴퓨터 밖으로 아무것도 보내지 않습니다. 그다음 CVE 검사기(영어)로 버전을 확인하세요.
Munim, Inc.의 MV2는 컴퓨터 1대를 위한 로컬 AI 상태 점검(49달러)과, 최대 5대 또는 공유 Ollama·Open WebUI 서버 1대를 위한 소규모 사무실 점검(199달러)을 제공합니다. 무엇이 노출되어 있고 무엇이 위험하거나 느린지, 무엇부터 고쳐야 하는지를 여러분의 OS에 맞는 정확한 명령, GPU에 맞는 모델 추천과 함께 보고서로 드립니다. 보고서는 영어로 작성됩니다. 보고서 샘플을 보세요. Stripe에서 49달러 결제 또는 199달러 결제 후, munimversion2@gmail.com으로 python3 local_ai_checkup.py --json의 출력, 사용 중인 OS, 용도를 이메일로 보내 주세요. MV2는 비밀번호, 키, 원격 접속을 절대 요청하지 않습니다.