~/tools / 在自己的伺服器上執行本機 LLM / Ollama systemd Override Generator

Ollama systemd Override Generator — 建立 Ollama 的 systemd 覆寫設定:OLLAMA_HOST、OLLAMA_MODELS、KEEP_ALIVE 等

建立 systemd 覆寫設定,在 Linux 伺服器上設定 Ollama 的環境變數:監聽位址、模型目錄、模型留在記憶體中的時間、上下文長度、平行請求、Flash Attention、K/V 快取類型、額外的來源、僅限本機模式與 HTTPS 代理伺服器。每個變數都來自官方 Ollama FAQ,每個值都會依 systemd 讀取的方式加上引號。輸入的內容不會離開你的瀏覽器。

環境變數

空白欄位不會寫出。灰色文字是 Ollama FAQ 給出的預設值。

供 systemctl edit 使用的覆寫設定

將它貼進 sudo systemctl edit ollama.service 所開啟的編輯器中,放在兩行註解之間。它會存成 /etc/systemd/system/ollama.service.d/override.conf。

[Service]
Environment="OLLAMA_KEEP_ALIVE=10m"
Environment="OLLAMA_CONTEXT_LENGTH=8192"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
Environment="OLLAMA_NO_CLOUD=1"

指令

請在伺服器上依此順序執行。最後一個指令會顯示服務收到的變數。變更 OLLAMA_MODELS 時,前兩個指令會建立目錄並將它交給 ollama 使用者;mkdir -p 是我們加的,因為 chown 在不存在的目錄上會失敗。

sudo systemctl edit ollama.service
sudo systemctl daemon-reload
sudo systemctl restart ollama
systemctl show ollama --property=Environment

變數與預設值依 Ollama FAQ 所載,引號規則依 systemd.exec 手冊所載,於 2026-11-03 確認。 Ollama FAQ / systemd.exec: Environment=

所有處理都在你的瀏覽器中完成。你輸入的內容不會傳送到任何地方。

當 Ollama 在 Linux 上以 systemd 服務執行時,官方 FAQ 說要用 systemctl edit ollama.service 設定環境變數:在 [Service] 底下為每個變數加上一行 Environment,儲存後執行 systemctl daemon-reload 與 systemctl restart ollama。步驟很短,但細節很容易出錯。systemd 會展開指定符,所以 % 符號必須寫成 %%;在加上引號的指定式中,反斜線與雙引號會被當成跳脫字元;含有空格的值必須整個用引號包起來。本工具會幫你寫好這份覆寫設定。它只提供 FAQ 中記載的變數,在每個變數旁顯示文件記載的預設值,把每個指定式都以 "NAME=value" 的形式加上引號,並將 % 符號重複寫成兩個。當某個值會讓 Ollama 監聽所有網路介面、數量不是整數,或在關閉 Flash Attention 的情況下選了量化的 K/V 快取時,工具會發出警告。我們在 Ubuntu 24.04 與 systemd 255 上測試了輸出內容:將它貼進 systemctl edit,並確認服務收到的每個值都維持原樣,包括空格、$、' 與 %。

這個工具的核心邏輯以 MIT 授權開放原始碼。 github.com/seigo5555/toolkitbox-lib/src/ollama-systemd.ts

使用情境

  • 在小型 VPS 上用 OLLAMA_KEEP_ALIVE 讓模型在記憶體中停留更久,或更早卸載
  • 用 OLLAMA_MODELS 將模型檔案移到容量更大的磁碟
  • 在記憶體不多的伺服器上,限制 Ollama 只載入一個模型,並設定預設的上下文長度

使用方法

  1. 只填寫你想變更的變數。空白欄位不會寫出,所以 Ollama 會維持預設值。每個欄位中的灰色文字是 FAQ 給出的預設值。
  2. 請閱讀警告。監聽位址若不是 127.0.0.1 或 localhost,其他機器就能連到 Ollama,而 FAQ 並未說明這種情況下有任何驗證機制。
  3. 執行 sudo systemctl edit ollama.service,將文字貼到開啟的編輯器中兩行註解之間,儲存並離開。接著執行其餘指令,重新載入 systemd、重新啟動 Ollama,並檢查它收到的值。

FAQ

檔案會存在哪裡?

systemctl edit 會把它存成 drop-in 檔案 /etc/systemd/system/ollama.service.d/override.conf,而不更動主要的單元檔案。我們在 Ubuntu 24.04 上執行時,編輯器顯示了這行註解:### Anything between here and the comment below will become the contents of the drop-in file。請把文字貼在這行註解與它下方的註解之間。

為什麼每個值都要用雙引號包起來?

systemd 文件說,含有空格或等號的值,必須把整個指定式用引號包起來。每一行都用同樣的方式加上引號,可以讓含空格的路徑與 OLLAMA_ORIGINS 這類清單維持原樣。文件也說明,$ 在這裡沒有特殊意義,會照原樣傳遞;而 % 會開啟一個指定符,所以工具要表示字面上的 % 時會寫成 %%。

哪些字元不被接受?

雙引號、反斜線,以及像 Tab 這樣的控制字元。在加上引號的指定式中,systemd 會把它們當成跳脫字元或直接拒絕,所以值無法依你輸入的樣子傳到 Ollama。工具會把它們回報為錯誤,並略過那一行。

把 OLLAMA_HOST 設成 0.0.0.0 安全嗎?

這會讓 Ollama 監聽所有網路介面,其他機器就能連到它。FAQ 說 Ollama 預設綁定 127.0.0.1 的 11434 連接埠,並未說明伺服器有任何驗證機制。我們的建議,並非文件中的說法:保留預設值,改透過 SSH 通道,或透過有密碼與 HTTPS 的代理伺服器連到 Ollama,並在防火牆中限制 11434 連接埠。

可以把密碼放進 HTTPS_PROXY 嗎?

當代理伺服器位址含有使用者名稱與密碼時,工具會發出警告。systemd 文件說環境變數不適合傳遞機密,因為為單元設定的值可被沒有特權的用戶端讀取。FAQ 也說要避免設定 HTTP_PROXY,因為 Ollama 只透過 HTTPS 下載模型,而 HTTP_PROXY 可能會中斷用戶端連線,所以工具只提供 HTTPS_PROXY。

有任何資料會傳送到伺服器嗎?

不會。覆寫設定是在你的瀏覽器中組成的。

相關文章

相關工具