看來給 AI 整理的筆記還是不太行,後面有力氣再來補漏吧!
本指南記錄了如何在 Windows 環境下,建立一個系統級別的 Ollama 服務(實現多帳號共享模型),並將 Open WebUI 服務遷移到 WSL 2 的原生 Docker Engine 中,以確保服務獨立、穩定地運行。
🎯 階段一:Windows Ollama 獨立服務版安裝與設定
目標: 安裝獨立版 Ollama,設定共享模型路徑,並將其設定為開機自啟動的系統服務。
1. 下載與安裝獨立執行檔 (Standalone)
使用 GitHub 上的獨立版本,避免桌面版帶來的用戶綁定問題。
下載獨立執行檔 (Standalone ZIP):
請開啟 Ollama 的官方 GitHub 發布頁面:https://github.com/ollama/ollama/releases
在最新的版本中,找到並下載 ollama-windows-amd64.zip 這個檔案。
注意: 不要下載 OllamaSetup.exe。
建立程式資料夾:
開啟檔案總管,到 C:\Program Files\。
建立一個新資料夾,命名為 Ollama。 (最終路徑為 C:\Program Files\Ollama)
解壓縮:
將您下載的 ollama-windows-amd64.zip 中的 ollama.exe 檔案,解壓縮到 C:\Program Files\Ollama 資料夾中。
將 Ollama 加入系統 Path: (讓所有帳號都能找到命令)
回到「編輯系統環境變數」>「環境變數...」。
在**下半部「系統變數」**中,找到 Path 變數,點選「編輯(E)...」。
點選「新增(N)」,並輸入 C:\Program Files\Ollama。
一路按「確定」儲存。
2. 模型共享配置 (環境變數)
將模型的預設儲存路徑從用戶目錄移到系統共享目錄。
操作: 在 Windows 系統環境變數中,新增以下變數:
變數名稱: OLLAMA_MODELS
變數值: C:\ProgramData\Ollama\models
3. 驗證服務與共享設定
在設定自動啟動前,先手動測試服務是否正常運作。
重新啟動電腦 (必要步驟):
請務必重新啟動電腦。這能確保新的 Path 變數和 OLLAMA_MODELS 變數被系統完全載入。
手動啟動服務 (測試):
電腦重啟後,登入您的本機管理員帳號。
開啟 CMD (以系統管理員身分執行)。
輸入命令:ollama serve
(請不要關閉這個視窗,它現在正在運行服務)
驗證 (使用兩個帳號):
(本機帳號) 另外開啟一個新 CMD,輸入 ollama list。確認能看到共享目錄內的模型。
(網域帳號) 登出並切換到網域帳號,開啟 CMD,輸入 ollama list。確認能看到相同的模型清單。
4. Ollama 服務自動啟動 (Task Scheduler)
確認驗證無誤後,設定 Ollama 隨開機自動啟動。
操作:
開啟 工作排程器 (Task Scheduler)。
建立新的工作 (Ollama Shared Server)。
一般標籤:勾選 以最高權限執行,設定執行帳戶為系統管理員帳號。
觸發程序標籤:新增 啟動時 (At startup)。
動作標籤:
程式或指令碼: C:\Program Files\Ollama\ollama.exe
新增引數: serve
結果: Ollama 服務器在 Windows 開機後自動運行在 http://127.0.0.1:11434。
🌐 階段二:Docker 環境遷移至 WSL 原生 Engine
目標: 移除 Docker Desktop 依賴,安裝 WSL 原生 Docker Engine。
1. 準備 WSL 2 環境與 Systemd 設定
操作: 移除 Docker Desktop,並啟用 WSL Systemd 支援。
編輯 /etc/wsl.conf,新增或確認以下內容:
Ini, TOML
[boot]
systemd=true
重啟 WSL: 在 Windows CMD/PowerShell 中執行 wsl --shutdown,然後重新開啟 WSL 終端機。
2. 安裝原生 Docker Engine (完整步驟)
在 WSL 終端機 (Ubuntu-22.04) 中,使用 Docker 官方儲存庫進行安裝。
步驟 A: 移除舊版本與安裝依賴:
Bash
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
步驟 B: 設定 GPG Key 和 Repository:
Bash
# 新增 Docker 的 GPG 金鑰
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 設定儲存庫位址
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
步驟 C: 安裝核心套件與啟動服務:
Bash
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 啟動 Docker 服務
sudo service docker start
步驟 D: 配置使用者權限:
Bash
sudo usermod -aG docker $USER
# 退出 WSL 並重新進入以生效
🔗 階段三:Open WebUI 部署與連線
目標: 在 WSL Docker 中部署 WebUI,並正確連線到 Windows 主機上的 Ollama 服務。
1. 取得 Windows 主機 IP (連線關鍵)
WebUI 容器需要明確知道 Windows 主機(Ollama 服務)的 IP 地址。
操作: 在 WSL 終端機中執行此命令:
Bash
# 獲取 Windows 主機 IP 並存入變數 WIN_IP
WIN_IP=$(cat /etc/resolv.conf | grep nameserver | cut -d ' ' -f 2)
echo $WIN_IP
(請記住這個 IP 地址)
2. 部署 Open WebUI 服務
使用 WIN_IP 設定 OLLAMA_API_BASE_URL 環境變數,並映射到 4000 埠。
操作: 在 WSL 終端機中執行:
Bash
docker run -d -p 4000:8080 -e OLLAMA_API_BASE_URL="http://$WIN_IP:11434" -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
存取: http://localhost:4000
接下來安裝 gitlab
這是一個非常有野心的決定!GitLab 是一個功能非常強大(但也非常「重」)的 DevOps 平台。
與輕量級的 Gitea 不同,GitLab 對硬體資源的要求相當高。在開始之前,請務必確認您的電腦狀況:
⚠️ 資源警告:
記憶體 (RAM): GitLab 至少需要 4GB 的專用記憶體才能勉強運行,建議 8GB 以上 才能順暢使用。如果您的筆電總記憶體只有 16GB 且同時跑 Ollama + WebUI + Windows,GitLab 可能會讓系統變得很慢。
啟動時間: GitLab 容器啟動通常需要 2~5 分鐘 才能看到登入畫面,請耐心等待。
如果您確認硬體足夠,我們將繼續使用您現有的 WSL Native Docker 環境來部署 GitLab CE (Community Edition)。
🚀 階段一:準備工作
為了確保資料(程式碼、使用者、設定)不會因為容器刪除而消失,我們需要建立專用的儲存卷 (Volume) 或目錄。在 WSL 中,我們直接使用 Docker Volume 比較簡單管理。
我們還需要規劃 連接埠 (Ports),避免與現有服務衝突:
HTTP (Web): 預設是 80,我們將映射到
8929(避免與 WebUI 的 4000 或 Windows 預設服務衝突)。SSH (Git): 預設是 22,我們將映射到
2224(避免與 Windows 或 WSL 的 SSH 衝突)。
🛠️ 階段二:部署 GitLab 容器
請在您的 WSL 終端機 中執行以下命令。
這個命令比較長,因為我們需要透過環境變數 GITLAB_OMNIBUS_CONFIG 直接設定 GitLab 的內部參數,讓它知道我們改了 Port,這樣它產生的 git clone 網址才會是正確的。
docker run -d \
--hostname localhost \
--publish 8929:8929 \
--publish 2224:22 \
--name gitlab \
--restart always \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
--shm-size 256m \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://localhost:8929'; gitlab_rails['gitlab_shell_ssh_port'] = 2224;" \
gitlab/gitlab-ce:latest
指令解析:
--publish 8929:8929: 將 Web 介面開在 8929。
--publish 2224:22: 將 SSH 介面開在 2224。
--volume ...: 建立三個 Volume 來保存設定、日誌和數據。
--shm-size 256m: 解決 GitLab 在 Docker 中常見的記憶體共享錯誤。
GITLAB_OMNIBUS_CONFIG: 這是最關鍵的!
external_url: 告訴 GitLab 首頁網址是http://localhost:8929。
gitlab_shell_ssh_port: 告訴 GitLab SSH 走的是2224port,這樣複製按鈕給出的 SSH 連結才會正確。
⏳ 階段三:等待啟動與獲取密碼
這是最考驗耐心的一步。
等待啟動: 執行
docker logs -f gitlab查看日誌。您會看到大量的設定訊息在跑。直到您看到類似
Run: gitlab-ctl reconfigure完成,或者日誌變慢並顯示系統監控訊息時,才算啟動完成。初次啟動可能需要 3-5 分鐘。
獲取初始 root 密碼: GitLab 啟動後,會自動生成一個隨機的 root 密碼。請開啟新的 WSL 視窗執行以下命令來查看:
Bashdocker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password請複製這串密碼。 (注意:這個檔案會在 24 小時後自動刪除,請盡快登入並修改密碼)。
🌐 階段四:登入與基本設定
存取網頁: 開啟 Windows 瀏覽器,輸入:
http://localhost:8929登入:
Username:
rootPassword: (貼上剛剛獲取的密碼)
修改密碼 (強烈建議): 登入後,點擊右上角頭像 -> Preferences -> Password,將密碼修改為您容易記住的密碼。
關閉註冊 (選用,建議私人使用): 為了安全,建議關閉公開註冊功能:
進入 Menu (左上角漢堡選單) -> Admin (管理員區域)。
Settings -> General -> Sign-up restrictions。
取消勾選 Sign-up enabled。
滑到最下方點擊 Save changes。
📝 如何使用 (Clone/Push)
現在您的 GitLab 已經架設好了,兩個帳號(本機/網域)的使用方式如下:
使用 HTTP (最簡單)
# Clone 專案
git clone http://localhost:8929/root/my-project.git
系統會提示輸入帳號密碼。
使用 SSH (推薦,需設定 Key)
因為我們改了 SSH Port,所以指令會稍微不同:
# Clone 專案 (注意 ssh:// 前綴和 :2224 埠號)
git clone ssh://git@localhost:2224/root/my-project.git
🚨 常見問題排查
Q: 瀏覽器顯示 502 Bad Gateway?
A: GitLab 還沒完全啟動。請再等 1-2 分鐘重新整理網頁。如果持續很久,可能是記憶體不足,GitLab 的部分服務崩潰了。
Q: 電腦變得很慢?
A: 如開頭所述,GitLab 吃記憶體怪獸。您可以透過限制它的程序數量來優化,但設定較複雜。如果您覺得太慢,隨時可以使用以下命令刪除它,改用 Gitea:
Bashdocker stop gitlab docker rm gitlab # 刪除資料 (小心!) docker volume rm gitlab_config gitlab_logs gitlab_data
您想現在就開始部署,還是因為資源考量想回頭考慮 Gitea?
這是一個非常關鍵的問題!答案是:Ollama 會自動啟動,但 Docker (WebUI/GitLab) 目前還不會。
原因在於:
Ollama: 我們已經設定了 Windows 工作排程器,所以它沒問題,開機就會跑。
Docker/WebUI/GitLab: 雖然容器設定了
--restart always,但它們運行在 WSL 2 裡面。WSL 2 本身預設不會隨 Windows 開機自動啟動。如果不啟動 WSL,裡面的 Docker 引擎就不會跑,容器自然也不會動。
我們需要補上最後一塊拼圖:設定 WSL 隨開機自動啟動。
請依照以下兩個步驟操作,就能達成全自動化:
步驟一:確保 Docker 在 WSL 內部設定為自動啟動
雖然我們啟用了 Systemd,但要確保 Docker 服務被設定為「啟用 (Enabled)」狀態,這樣 WSL 一開機它就會跑。
開啟 WSL 終端機。
輸入以下指令:
Bashsudo systemctl enable docker(如果它顯示已經啟用或建立了 symlink,那就沒問題。)
步驟二:設定 Windows 自動啟動 WSL (工作排程器)
我們需要再建立一個工作排程,讓電腦一開機就在背景「喚醒」WSL。
回到 Windows,開啟「工作排程器 (Task Scheduler)」。
點選「建立工作...」。
一般 (General) 標籤:
名稱: 輸入
Start WSL Docker。執行帳戶: 使用您的 本機管理員帳號。
勾選 「不論使用者是否登入都要執行 (Run whether user is logged on or not)」 (這很重要,這樣它會在背景執行,不會跳出視窗)。
勾選 「以最高權限執行」。
觸發程序 (Triggers) 標籤:
點選「新增」。
開始工作: 選擇 「啟動時 (At startup)」。
動作 (Actions) 標籤:
點選「新增」。
程式或指令碼: 輸入
wsl.exe新增引數: 輸入
-d Ubuntu-22.04(註:如果您只有一個 Linux 發行版,或者 Ubuntu-22.04 是預設值,這裡也可以只輸入
-d Ubuntu-22.04確保指定正確。如果不確定名稱,可以在 PowerShell 輸入wsl -l查看)。建議: 如果您的發行版名稱確實是
Ubuntu-22.04,就填-d Ubuntu-22.04。如果只顯示Ubuntu,就填-d Ubuntu。
條件 (Conditions) 標籤 (選用但建議):
取消勾選 「只有在電腦使用 AC 電源時才啟動」 (以免筆電用電池開機時服務沒跑)。
設定 (Settings) 標籤:
取消勾選 「如果執行超過下列時間便停止工作」 (我們要它一直跑)。
點選「確定」,並輸入您的密碼儲存。
✅ 最終結果
完成上述設定後,您的電腦開機流程會變成:
Windows 開機。
Ollama 排程啟動 -> Ollama 服務上線 (Port 11434)。
WSL 排程啟動 -> 喚醒 Ubuntu 環境。
Systemd 啟動 -> 觸發 Docker 服務啟動。
Docker 啟動 -> 偵測到 WebUI 和 GitLab 容器有
--restart always標籤 -> 自動啟動容器。
這樣您重開機後,等待約 1~3 分鐘(視 GitLab 啟動速度而定),就可以直接用瀏覽器存取所有服務了!
沒有留言:
張貼留言