⚠️ 安全提示
Ollama 的 API 没有默认认证机制。若直接把它暴露到互联网上,任何人都能发起请求。
- 推荐做法:
- 在防火墙/云安全组里限制 IP。
- 或者在前端放一个反向代理(Nginx/Caddy/Traefik)并加 TLS + 基本认证 / JWT。
- 亦可使用 VPN/WireGuard 隧道让内部网络访问。
下面给出最常见的“直接暴露”步骤,随后演示安全化的反向代理配置。
默认 ollama serve 只在 127.0.0.1:11434 监听。
使用 --host 参数或 OLLAMA_HOST 环境变量绑定到 0.0.0.0(所有网卡)。
| 平台 | 命令示例 |
|---|---|
| Linux/macOS | bash\nOLLAMA_HOST=0.0.0.0 ollama serve\n |
| Windows PowerShell | powershell\n$env:OLLAMA_HOST="0.0.0.0"\nollama serve\n |
| Windows CMD | cmd\nset OLLAMA_HOST=0.0.0.0\nollama serve\n |
可选:更改默认端口(例如 8080)
OLLAMA_HOST=0.0.0.0
OLLAMA_PORT=8080
ollama serve
sudo ufw allow 11434/tcp # 或 8080
sudo ufw reload
如果你在 NAT 后面(家用路由器),需要把公网端口映射到本机 IP。
端口转发 → 外部端口:11434 → 内部 IP:<你的本机IP> → 内部端口:11434 → 保存。直接暴露裸口令不安全,最安全的做法是使用 Nginx/Caddy/Traefik 进行 TLS 加密,并可添加基本认证或 JWT。
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://127.0.0.1:11434;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
基本认证(可选)
location / { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://127.0.0.1:11434; }创建
.htpasswdsudo apt-get install apache2-utils htpasswd -c /etc/nginx/.htpasswd username
yourdomain.com {
reverse_proxy localhost:11434
basicauth / {
user password
}
}
Caddy 自动申请、安装 Let's Encrypt 证书,省去手动 TLS 配置。
docker run -d \
--name ollama \
-p 11434:11434 \
-e OLLAMA_HOST=0.0.0.0 \
-v /path/to/data:/root/.ollama \
ollama/ollama:latest
同样要在防火墙或云安全组中打开 11434 端口。
curl http://<公网IP或域名>:11434/api/ping
# 预期返回:{"model":"ollama","status":"ok"}
如果能拿到 JSON,说明外网访问已成功。
| 步骤 | 目标 | 说明 |
|---|---|---|
| 1 | ollama serve 监听 0.0.0.0 |
让服务器可被外部请求 |
| 2 | 开放防火墙/路由 | 让公网访问对应端口 |
| 3 | 反向代理 + TLS(可选) | 增强安全性 |
| 4 | Docker 化(可选) | 方便部署、隔离 |
| 5 | 验证 | 确认可访问 |
最小化攻击面
- 仅开放你需要访问的端口。
- 通过 IP 过滤或 VPN 限制访问。
- 定期检查 Ollama 的更新,保持安全修补。
有任何细节(如云服务器、VPC、安全组、代理工具)需要进一步说明,随时告诉我!