發表文章

🚀 [實戰] 用 Docker Compose 快速建置 n8n 本地環境

  這套配置的核心目標是: 解耦 (Decoupling) 。我們讓 n8n 跑在容器內,但透過隧道與你本地的 Python 資源對接。 1. 目錄配置 (Project Structure) 首先,在終端機建立工作目錄。良好的目錄結構是維運的第一步。 Bash mkdir -p ~/n8n-infra/data cd ~/n8n-infra 2. 撰寫 docker-compose.yml 使用你最愛的編輯器(VS Code 或 vim ),建立 docker-compose.yml 。這份檔案定義了 n8n 本身以及一個 PostgreSQL 數據庫(比起預設的 SQLite,Postgres 在長期執行大量 539 數據分析時更穩定)。 YAML version: '3.8' services: db: image: postgres:16-alpine container_name: n8n-postgres restart: always environment: - POSTGRES_USER=n8n_admin - POSTGRES_PASSWORD=n8n_secure_pass - POSTGRES_DB=n8n_metadata volumes: - ./data/postgres:/var/lib/postgresql/data n8n: image: docker.n8n.io/n8nio/n8n:latest container_name: n8n-webui restart: always ports: - "5678:5678" environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=db - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n_metadata - DB_POSTGRESDB_USER=n...

[Dify] 導入的血淚後續

 Dify 雖然介面漂亮、整合了 RAG(知識庫),但在深度自動化和本地部署的玩家眼中,它有幾個讓人崩潰的「坑」: 1. 記憶體食蟻獸 (Memory Hog) 這是自架玩家最大的血淚。Dify 不是一個單一程式,它是 一群 服務的集合: 前端 (Web) + 後端 (Api) + Worker (非同步處理) + Redis (快取) + PostgreSQL (資料庫) + Vector DB (向量庫) + Sandboxed Code Executor 。 血淚點 :如果你要在 Pi4 上跑 Dify,基本是「自殺行為」。即便有 8GB RAM,光啟動這堆 Docker 容器就會卡死,更別提執行時的 Swap 噴發。相較之下,n8n 一個容器就能跑完九成功能。 2. 「假」工作流的挫折感 Dify 的 Workflow 雖然看起來像 n8n,但邏輯封閉很多: 資料傳遞 :在 n8n 你可以隨意用 JavaScript 揉捏 JSON;在 Dify,變數型態檢查極其嚴格,常常為了傳一個字串弄到整條 Flow 報錯。 循環與邏輯 :Dify 早期版本幾乎沒辦法做複雜的 Loop(循環),如果你要批次處理 50 筆 539 的歷史數據,Dify 會讓你寫到想哭,而 n8n 的 Split In Batches 才是真正的自動化工具。 3. RAG 的「黑盒子」陷阱 Dify 強調「上傳文件就能對話」,這很吸引人,但: 血淚點 :當 AI 回答錯誤時,你很難調試它是「檢索不到」、「切片太碎」還是「Prompt 太爛」。 成本 :Dify 的自動切片(Chunking)會消耗大量 Embedding Token,如果你頻繁更換文件測試,帳單會讓你心痛。 4. 版本更新的「驚喜」 Dify 更新極快,這本來是好事,但: 血淚點 :經常發生更新後 Docker Compose 啟動失敗,或是舊的 Workflow 節點突然不相容。對於追求「設定完就讓它自動跑 24 小時」的開發者(像你打算在 Pi4 上做的那樣)來說,Dify 的維護成本遠高於 n8n。

🌐 超越邊界:Ollama (Windows) 與 Dify (WSL2) 的完美結合

  0. 核心架構圖:跨越虛擬機的隱形網路線 在開始之前,我們先建立一個清晰的空間概念。你的電腦現在被分為兩個世界: 代码段 graph TD subgraph Windows_Host ["Windows 宿主機 (你的電腦)"] Ollama[("🐳 Ollama<br>(負責模型推理LLM/Embedding)") ] GPU[("🚀 NVIDIA/AMD GPU<br>(硬體加速)") ] Ollama --> GPU end subgraph WSL2_Linux ["WSL2 虛擬 Linux (Ubuntu)"] Dify[("🧩 Dify 全棧平台<br>(負責應用邏輯/工作流)") ] Docker[("🐋 Docker Containers<br>(Postgres, Redis, Sandbox)") ] Dify --> Docker end %% 關鍵連線 Dify -. "透過 http://host.docker.internal:11434 連線" .-> Ollama Ollama -. "接收來自 WSL2 的請求" .-> Dify style Windows_Host fill:#e1f5fe,stroke:#01579b,stroke-width:2px style WSL2_Linux fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px style Ollama fill:#fff,stroke:#000,stroke-width:2px style Dify fill:#fff,stroke:#000,stroke-width:2px Windows 的角色 :扮演「強大的肌肉」。Ollama 在這裡直接存取 GPU 驅動,發揮最強的模型推理效能。 WSL2 的...

【Dify 安裝教學】解決 Windows WSL2 下 PostgreSQL 無限重啟:為什麼源碼開發必須遠離 C 槽?

  在 Windows 環境下透過 WSL2 安裝 Dify 原始碼(Source Code)時,最常遇到的挫折不是程式碼寫錯,而是資料庫(Database)連線失敗。本文將深入解析如何解決 PostgreSQL 權限報錯 與 Restarting (unhealthy) 問題,並提供 2026 年最完整的安裝流程。 為什麼 Dify 在 Windows C 槽安裝會失敗? 當你將 Dify 專案放在 /mnt/c/Users/... (NTFS 格式)時,會觸發 WSL2 的底層權限衝突 。 1. 檔案系統的權限代溝 (chmod 0700) PostgreSQL 對資料夾權限要求極嚴。在啟動時,它會嘗試執行 chmod 0700 來保護數據。然而,Windows 的 NTFS 磁碟不支援 Linux 的權限鎖定位元,導致報錯: initdb: error: could not change permissions: Operation not permitted 2. I/O 效能的「降維打擊」 WSL2 存取 Windows 磁碟(C 槽)需經過 9P 協議轉換,讀寫效能比原生 Linux 檔案系統慢了將近 10 倍 。這會導致 pnpm install 或 uv sync 異常緩慢。 🛠️ Dify Windows 安裝「避坑」指南:正確流程 為了確保 Dify 穩定運行,請務必將專案「移民」至 WSL 原生路徑 (如 /home/username/ )。 第一步:徹底清理舊容器 在嘗試新安裝前,先移除 C 槽殘留的損壞數據卷: Bash cd /mnt/c/your/old/path/docker docker compose -p dify down -v 第二步:移民至 WSL 原生地盤 (極速關鍵) 不要在 /mnt/c/ 下執行 git clone ! 請執行以下指令: Bash cd ~ # 回到 Linux 家目錄 mkdir -p Projects && cd Projects git clone https://github.com/langgenius/dify.git cd dify/docker 第三步:啟動中間件 (Docker Middleware) 複製環境變數範本並啟動資...

【實戰教學】如何在 Dify 中串接本地 Ollama 模型?實現在地化 AI Agent 開發!

  隨著開源模型(如 Llama 3, Mistral, Qwen 2)的崛起,利用 Ollama 在本地部署大型語言模型(LLM)已成為工程師的標配。而 Dify 作為最強大的 LLMOps 平台,提供了直接串接 Ollama 的功能。 本篇文章將教你如何讓這兩個神器聯手,打造一個**「零 API 成本、數據不上雲」**的私有 AI 平台。 專家架構圖:Dify 與 Ollama 的通訊邏輯 在開始動手前,我們先理解底層的資料流。身為建置專家,理解架構能幫你解決 90% 的連線問題。 架構解析: 使用者 (User) :透過瀏覽器存取 Dify 前端 ( localhost:3000 )。 Dify 後端 (API Service) :跑在 Docker 容器內,它負責所有的邏輯調度。 Ollama 服務 :通常跑在你的 Windows/Mac 宿主機(Host)上,提供 localhost:11434 的 API 接口。 模型 (Models) :Ollama 管理著本地磁碟上的模型檔案(如 Llama 3)。 核心難點 (The Tunnel) :Docker 容器內的 Dify 「看不見」 宿主機的 localhost 。我們需要建立一條跨越 Docker 邊界的網路通道。 🚀 實戰步驟 1:Ollama 端準備 (Windows/Mac) 在連線前,請確保你的 Ollama 已經「開門迎客」。 A. 下載並執行模型 在你的終端機(Terminal 或 PowerShell)執行以下指令,下載目前最紅的 Llama 3: Bash ollama run llama3 (看到 >>> 的提示符號後,隨便輸入幾個字測試,確認模型可以正常回答。) B. 解鎖 Ollama 的網路限制 (關鍵步驟!) 預設情況下,Ollama 只接受本地 ( 127.0.0.1 ) 的請求。為了讓 Docker 內的 Dify 能連進來,我們必須調整環境變數。 Windows 開發者 : 在工作列右下角找到 Ollama 圖示,點擊 Quid 退出。 搜尋 「編輯系統環境變數」 。 在「使用者變數」中新增: 變數名稱: OLLAMA_HOST 變數值: 0.0.0.0 重新啟動 Ollama。 Mac 開發者 : 在終端機執行: Bash lau...