Ollama 公开到外网.md 3.9 KB

Ollama Serve 公开到外网(Windows / Linux / macOS)

⚠️ 安全提示
Ollama 的 API 没有默认认证机制。若直接把它暴露到互联网上,任何人都能发起请求。

  • 推荐做法:
    1. 在防火墙/云安全组里限制 IP。
    2. 或者在前端放一个反向代理(Nginx/Caddy/Traefik)并加 TLS + 基本认证 / JWT。
    3. 亦可使用 VPN/WireGuard 隧道让内部网络访问。

下面给出最常见的“直接暴露”步骤,随后演示安全化的反向代理配置。


1. 让 Ollama 监听所有网络接口

默认 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

2. 开放防火墙/路由

Linux (ufw / firewalld)

sudo ufw allow 11434/tcp      # 或 8080
sudo ufw reload

Windows 防火墙

  1. 打开 “Windows Defender 防火墙” → “高级设置”。
  2. “入站规则” → “新建规则” → 端口 → 11434 → 允许连接 → 适用所有配置 → 给规则命名。

路由器端口映射

如果你在 NAT 后面(家用路由器),需要把公网端口映射到本机 IP。

  • 登录路由器 → 端口转发外部端口:11434 → 内部 IP:<你的本机IP> → 内部端口:11434 → 保存。

3. (可选) 反向代理 + TLS

直接暴露裸口令不安全,最安全的做法是使用 Nginx/Caddy/Traefik 进行 TLS 加密,并可添加基本认证或 JWT。

示例:Nginx

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

创建 .htpasswd

sudo apt-get install apache2-utils
htpasswd -c /etc/nginx/.htpasswd username

示例:Caddy

yourdomain.com {
    reverse_proxy localhost:11434
    basicauth / {
        user password
    }
}

Caddy 自动申请、安装 Let's Encrypt 证书,省去手动 TLS 配置。


4. 通过 Docker 部署(可选)

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 端口。


5. 快速测试

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、安全组、代理工具)需要进一步说明,随时告诉我!