ollama 除了可以在本機使用外,也可以從遠端連接,不過預設 ollama 只接受本機的連線,無法從遠端連接。
設定可接受遠端連線
要讓 ollama 接受遠端連線,必須在啟動 ollama 服務前設定 OLLAMA_HOST
環境變數為 0.0.0.0
,否則就只會接收本機連線。設定環境變數時可設定為 0.0.0.0
保留預設連接埠 11434
,或是也可以同時指定連接埠,像是 0.0.0.0:11434
,不過不建議更改連接埠,以維持最大的相容性。
Window 環境
在安裝完 ollama 後,你可以利用以下指令查看目前 ollama 監聽的 IP:
netstat -ano | findstr ":11434"
輸出如下,可以看到目前只監聽本機迴路的 IP:
TCP 127.0.0.1:3923 127.0.0.1:11434 TIME_WAIT 0
TCP 127.0.0.1:11434 0.0.0.0:0 LISTENING 21544
也可以透過測試連線來確認,首先取得本機的 IP 位址:
Get-NetIPAddress | Select-Object IPAddress, InterfaceAlias, AddressFamily | Where-Object {$_.AddressFamily -eq 'IPv4'}
IPAddress InterfaceAlias AddressFamily
--------- -------------- -------------
172.19.144.1 vEthernet (WSL (Hyper-V firewall)) IPv4
169.254.130.47 區域連線* 3 IPv4
169.254.236.94 區域連線* 2 IPv4
169.254.221.5 藍牙網路連線 IPv4
192.168.0.71 Wi-Fi IPv4
127.0.0.1 Loopback Pseudo-Interface 1 IPv4
利用 curl 連線本機迴路測試:
curl http://127.0.0.1:11434/
可正常運作:
Ollama is running
但如果利用 Wi-Fi IP 連線:
curl http://192.168.0.71:11434/
就會無法連線:
curl: (7) Failed to connect to 192.168.0.71 port 11434 after 2032 ms: Could not connect to server
為了讓 ollama 可以接受本機迴路以外的連線,你可以在使用者或是系統環境變數加入 OLLAMA_HOST
:
重新登入或是重新啟動後即可確認環境變數:
$env:OLLAMA_HOST
0.0.0.0:11434
再透過指令確認目前監聽的狀況:
netstat -ano | findstr ":11434"
輸出如下:
TCP 0.0.0.0:11434 0.0.0.0:0 LISTENING 11832
TCP [::]:11434 [::]:0 LISTENING 11832
即可看到監聽了所有的 IP,如果用 curl 測試:
curl http://192.168.0.71:11434/
Ollama is running
會看到可以正常連線。
Linux/MacOS 下手動啟動
如果你沒有把 ollama 安裝成自動啟動的服務,就只要在使用者自己的 .bashrc 或是 .zshrc、.profile 檔中繪出環境變數即可,以下先取得本機 IP 位址:
ip addr show eth0 | grep inet
可以看到本機的 IP 是 172.19.149.141:
inet 172.19.149.141/20 brd 172.19.159.255 scope global eth0
inet6 fe80::215:5dff:fe40:a05c/64 scope link
透過 curl 可以測試是否可連線:
curl http://localhost:11434/
Ollama is running
curl http://172.19.149.141:11434/
curl: (7) Failed to connect to 172.19.149.141 port 11434 after 0 ms: Couldn't connect to server
接著先把 ollama 停掉:
pkill ollama
如果只是要短暫接受非本機連線,也可以直些設定環境變數,例如:
OLLAMA_HOST=0.0.0.0 ollama serve &
現在不論是本機或是非本機的 IP 都可以正常連線了:
curl http://localhost:11434/
Ollama is running
curl http://172.19.149.141:11434/
Ollama is running
如果希望每次啟動 ollama 都會接收非本機的連線,就可以在 .bashrc、.profile 等 shell 的設定檔中加入:
export OLLAMA_HOST=0.0.0.0
也可以達到一樣的效果,重新啟動 ollama 後,我從 Windows 連過去測試:
(Invoke-WebRequest -Uri "http://172.19.149.141:11434/").Content
Ollama is running
現在就通行無阻了。
Linux 下使用 systemctl 啟動的服務
如果是以 systemctl
啟動服務,必須到對應的 service 檔中設定環境變數,你可以在 /etc/systemd/system 或是 /usr/lib/systemd/system 下找到 ollama.service 檔:
cat /etc/systemd/system/ollama.service
底下是我我自己的範例,請在 [Service]
區段中找到 Environment 項目,以 "key=value"
的格式加入環境變數,我在這裡加入了 "OLLAMA_HOST=0.0.0.0:11434" 讓 ollama 會監聽所有的 IP。:
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/home/meebox/.local/bin:/home/meebox/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/users/meebo/scoop/apps/vscode/current/bin" "OLLAMA_HOST=0.0.0.0:11434"
[Install]
WantedBy=default.target
修改完存檔後必須重新啟動服務才會生效,重新啟動前:
sudo apt install net-tools
sudo netstat -anp | grep ollama
會看到只監聽 128.0.0.1
這個 IP 位址:
tcp 0 0 127.0.0.1:11434 0.0.0.0:* LISTEN 120/ollama
unix 3 [ ] STREAM CONNECTED 1342 120/ollama
接著重新啟動:
sudo systemctl daemon-reload
確認是否有生效:
sudo netstat -anp | grep ollama
輸出如下,現在監聽的是 :::11434
,沒有限定只有本機迴路的 IP 了:
tcp6 0 0 :::11434 :::* LISTEN 1092/ollama
現在除了以 localhost 或是 127.0.0.1 連接 ollama 外,也可以使用本機對外的 IP 位址:
ip addr show eth0 | grep inet
可看到像是如下的輸出:
inet 172.19.149.141/20 brd 172.19.159.255 scope global eth0
inet6 fe80::215:5dff:fead:ec41/64 scope link
即可使用該 IP 測試:
curl http://172.19.149.141:11434/
看到以下訊息就表示成功:
Ollama is running
你也可以到 Windows 的 PowerShell 測試了:
Invoke-WebRequest -Uri "http://172.19.149.141:11434/" | Select-Object -ExpandProperty Content
一樣可以取得同樣的結果:
Ollama is running
MacOS
Mac 下比較特別:首先,在 .zshrc 等 shell 相關設定檔中設定的環境變數只對 shell 有效,但是 ollama 在 Mac 上是在使用者登入後透過帳戶的登入項目與延伸功能的設定啟動 ollama 桌面程式(也就是你在工作列看到的小圖示),並且在 ollama 桌面程式的資源檔中設定執行 ollama serve
指令啟動 ollama 服務,因此在 shell 的設定檔中所設定的環境變數完全不會生效。
為了讓 ollama 服務啟動時可以依據環境變數接受非本機連線,我們必須改成使用 launchd 機制啟動 ollama 服務。首先,必須在 ~/Library/LaunchAgents/
建立一個com.ollama.serve.plist
服務描述檔:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.ollama.serve</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Ollama.app/Contents/Resources/ollama</string>
<string>serve</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>OLLAMA_HOST</key>
<string>0.0.0.0:11434</string>
</dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
其中:
- Label 鍵:此服務的名稱。
- ProgramArgs 鍵:此服務要執行的指令。
- EnvironmentVariables 鍵:要提供給此服務執行時的環境變數
這個服務會在此帳號的使用者登入時啟動,要讓這個服務生效,必須先把已經在執行的 ollama 服務關閉:
killall ollama
然後使用 launchctl 指令載入剛剛寫好的設定:
launchctl load ~/Library/LaunchAgents/com.ollama.serve.plist
載入後,就可以測試看看,先取得 IP:
ipconfig getifaddr en0
192.168.0.37
再利用 curl 工具測試:
curl http://192.168.0.37:11434
Ollama is running
確認可以正常運作之後,還有最重要的一步,移除原本 ollama 桌面程式在登入後自動執行並啟動 ollama 服務的定,否則 launchd 啟動服務時會因為已經有在監聽本機迴路的 ollama 而失敗:
移除 ollama 項目後,之後重新開機登入此帳號,就會自動啟動剛剛設定的服務了。
之後若是有修改服務的設定檔,就要先從系統中卸載之前載入的設定檔:
launchctl unload ~/Library/LaunchAgents/com.ollama.serve.plist
再重新載入設定檔即可。
使用 ollama 指令連接遠端的 ollama 服務
只要設定 OLLAMA_HOST
環境變數為遠端 ollama 服務的位址,就可以連接遠端 ollama 服務,例如:
ollama list
沒有設定 OLLAMA_HOST
時,這是本機上 ollama 安裝的模型:
NAME ID SIZE MODIFIED
weitsung50110/llama-3-taiwan:8b-instruct-dpo-q4_K_M 7fcf06fa5eaa 4.9 GB 5 days ago
weitsung50110/multilingual-e5-large-instruct:f16 ad6d1b04ec00 1.1 GB 2 weeks ago
gemma3:latest a2af6cc3eb7f 3.3 GB 2 weeks ago
我們可以先設定環境變數(以下以 Linux 示範),再重新執行同樣的指令:
OLLAMA_HOST=192.168.0.37 ollama list
現在看到的則是我在 192.168.0.37 位址的 ollama 安裝的模型:
NAME ID SIZE MODIFIED
gemma3:4b a2af6cc3eb7f 3.3 GB 38 minutes ago
weitsung50110/multilingual-e5-large-instruct:f16 ad6d1b04ec00 1.1 GB 3 hours ago
weitsung50110/llama-3-taiwan:8b-instruct-dpo-q4_K_M 7fcf06fa5eaa 4.9 GB 3 hours ago
gemma3:12b f4031aab637d 8.1 GB 24 hours ago
gemma3:1b 8648f39daa8f 815 MB 24 hours ago
Darrrrr/mymodel:latest 40a13e3b82e2 815 MB 12 days ago
deepseek-r1:14b ea35dfe18182 9.0 GB 12 days ago
qwq:latest 009cb3f08d74 19 GB 2 weeks ago
gemma3:27b a418f5838eaf 17 GB 2 weeks ago
deepseek-r1:70b 0c1615a8ca32 42 GB 2 weeks ago
deepseek-r1:32b 38056bbcbb2d 19 GB 2 weeks ago
這樣一來,你就可以彈性的配置實際要跑 ollama 模型的機器,其他的機器則只要透過遠端連線就可以使用同一組模型了。如果需要,你也可以直接在系統或是 shell 的設定檔中設定環境變數,就不需要每次執行都要先設定環境變數了。
使用 API 連接遠端的 ollama
從遠端利用 API 使用 ollama:只要透過 API 位址的參數指定遠端 IP 即可,本例遠端 ollama 服務位於 192.168.0.37
:
curl http://192.168.0.37:11434/api/chat -d '{
> "model": "gemma3:4b",
> "messages": [
> {
> "role": "user",
> "content": "你好"
> }
> ],
> "stream": false
> }'
可以取得正確結果:
{"model":"gemma3:4b","created_at":"2025-04-30T09:48:53.946791Z","message":{"role":"assistant","content":"你好!很高兴和你聊天。有什么我可以帮助你的吗?\n"},"done_reason":"stop","done":true,"total_duration":361840209,"load_duration":57624667,"prompt_eval_count":10,"prompt_eval_duration":79502667,"eval_count":15,"eval_duration":224293500}
使用 ollama 套件則是指定 host
參數:
import asyncio
from ollama import AsyncClient
async def main():
client = AsyncClient(host='http://192.168.0.37:11434')
response = await client.chat(
model='gemma3:4b',
messages=[{'role': 'user', 'content': '你是誰?'}]
)
print('回應:', response['message']['content'])
asyncio.run(main())
若要使用 OpenAI API,必須傳入遠端 ollama 伺服器的位址連同連接埠(預設為 11434
)給 base_url
參數:
from openai import OpenAI
# 配置遠端 Ollama API
OLLAMA_API_URL = "http://192.168.0.37:11434/v1" # 遠端 Ollama 伺服器
# OLLAMA_API_URL = "http://127.0.0.1:11434/v1" # 本機 Ollama 伺服器
MODEL_NAME = "gemma3:12b"
# 初始化 OpenAI 客戶端,指向 Ollama 的 API
client = OpenAI(
base_url=OLLAMA_API_URL,
)
# 發送聊天完成請求
response = client.chat.completions.create(
model=MODEL_NAME,
messages=[
{
"role": "user",
"content": "你好"
}
],
)
# 提取回應內容
print(response.choices[0].message.content)
Top comments (0)