lerd:Lerd:基於 rootless Podman 的 Linux 和 macOS PHP 開發環境
專案速覽:適用於 Linux 和 macOS 的開源、類似 Herd 的本機 PHP 開發環境。自動 .test 網域、每個專案 PHP/Node 隔離、單一命令 TLS。 Podman 原生,無根。
秒懂
- 它是什麼?
- Open-source, Herd-like local PHP development environment for Linux and macOS. Automatic .test domains, per-project PHP/Node isolation, one-command TLS. Podman-native, rootless. 本文依 README、版本與專案檔案整理實際適用範圍。
- 適合誰用?
- 適合需要 lerd 所述能力、且能接受 README 已公開限制的讀者;不適合把未記載的功能當作保證的人。先依專案指定版本與命令完成最小流程,再檢查輸出、錯誤和資源邊界。
- 可以商用嗎?
- 可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫在最近一天內有新的提交。
- 用什麼語言寫的?
- 主要是 Go(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
lerd:Podman 原生、rootless、無守護程式
Lerd 專門為 rootless Podman 建構。(lerd-1-1)
它運行 Nginx、PHP-FPM 和使用者服務作為 Podman 容器,無需 Docker 或 sudo。(lerd-1-2)
README 指出這種設計避免了系統污染,環境支援 IPv4 + IPv6 雙堆疊。(lerd-1-3)
專案用 Go 編寫,預設分支為 main。(lerd-1-4)
倉庫元資料顯示 841 個星標、46 個 fork 和 8 個未解決問題,採用 MIT 授權。(lerd-1-5)
(lerd-1-6)
Lerd 的判斷核心在 rootless Podman 與本機開發邊界。`lerd link` 會處理 `.test` 網域、TLS 和每個 worktree 的執行時版本;`lerd doctor` 可檢查主機依賴,`lerd site:doctor` 則面向專案站台。需要 sudo 時只列印指令,這讓權限變更仍可由操作者決定。(lerd 第 1 節)
針對 lerd 的第 1 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
針對 lerd 的第 11 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
lerd:連結專案與 .test 網域
核心指令是 `lerd link`,為專案分配 `.test` 主機名稱和 HTTPS,憑證會在過期前重新簽發。(lerd-2-1)
DNS 處理是自動的,不需要 dnsmasq、系統解析器調整或 sudo,並可以選擇退出 `*.localhost` 的託管。(lerd-2-2)
站台群組允許主站台擁有基礎網域,次要站台佔用子網域,資料庫可共享或獨立。(lerd-2-3)
主機代理站台在主機上執行非 PHP 開發伺服器,並透過 nginx 在 `.test` 網域下提供服務。(lerd-2-4)
Git worktree 是一等公民:自動偵測分支網域,支援每個 worktree 的 PHP 和 Node 版本。(lerd-2-5)
站台共享可在區域網路內透過 QR 碼,或透過 ngrok、cloudflared、Expose、serveo 或 localhost.run 公開。(lerd-2-6)
(lerd-2-7)
可以用 `lerd tui` 對照 Web UI 的站台狀態,觀察 PHP-FPM、Queue、Schedule 與 Reverb 日誌,再以 `lerd dump tail` 檢查 `dump()` 或 `dd()` 是否按站台和分支隔離。若要分析一次性指令,使用 `lerd profile run`;若要讓 AI 助手管理環境,先確認 `lerd mcp:enable-global` 的註冊範圍。(lerd 第 2 節)
針對 lerd 的第 2 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
針對 lerd 的第 12 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
lerd:PHP、Node 和執行時
按專案提供 PHP 8.1 到 8.5 版本,以及凍結的 7.4 / 8.0 舊版層。(lerd-3-1)
自訂 PHP 擴充功能與 Alpine 套件只需宣告一次,並應用於 Lerd 建置的每個映像。(lerd-3-2)
FrankenPHP 執行時是每個站台共享 PHP-FPM 的替代方案,支援 Laravel Octane 和 Symfony Runtime worker 模式。(lerd-3-3)
Node.js 隔離使用 Node 22 或 24,透過自帶的 fnm 或已有的 nvm,可在儀表板切換,也可以使用 bun 作為主機 JS 執行時。(lerd-3-4)
框架商店為 Laravel、Symfony、WordPress、Drupal、Magento、CakePHP 和 Statamic 提供社群定義,並支援版本化自動偵測,可回溯到仍執行在 PHP 7.4 上的主要版本。(lerd-3-5)
無需按框架設定;連結專案時會自動設定 workers、環境變數和 nginx vhost。(lerd-3-6)
(lerd-3-7)
Lerd 的判斷核心在 rootless Podman 與本機開發邊界。`lerd link` 會處理 `.test` 網域、TLS 和每個 worktree 的執行時版本;`lerd doctor` 可檢查主機依賴,`lerd site:doctor` 則面向專案站台。需要 sudo 時只列印指令,這讓權限變更仍可由操作者決定。(lerd 第 3 節)
針對 lerd 的第 3 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
針對 lerd 的第 13 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
lerd:服務、資料庫與 IDE 整合
一鍵服務包括 MySQL、PostgreSQL、Redis、Meilisearch、RustFS、Mailpit、Reverb 和 OpenSearch,內建預設堆疊,附加元件從商店取得,無需更新 Lerd。(lerd-4-1)
從服務頁面可以瀏覽、建立和刪除引擎的資料庫,支援快照、匯出和匯入。(lerd-4-2)
JetBrains IDE 資料庫接線自動完成:專案會獲得一個指向其自己的 Lerd 資料庫的資料來源,使用實際回應的主機連接埠,連結時寫入,並在資料庫變化時重新整理,而不會觸碰 Lerd 不擁有的資料來源。(lerd-4-3)
(lerd-4-4)
可以用 `lerd tui` 對照 Web UI 的站台狀態,觀察 PHP-FPM、Queue、Schedule 與 Reverb 日誌,再以 `lerd dump tail` 檢查 `dump()` 或 `dd()` 是否按站台和分支隔離。若要分析一次性指令,使用 `lerd profile run`;若要讓 AI 助手管理環境,先確認 `lerd mcp:enable-global` 的註冊範圍。(lerd 第 4 節)
針對 lerd 的第 4 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
針對 lerd 的第 14 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
lerd:偵錯與效能工具
偵錯視窗攔截每個 `dump()` 和 `dd()`,並將其串流傳輸到儀表板、TUI、MCP 和 `lerd dump tail`,按站台和 worktree 分支限定範圍。(lerd-5-1)
它還能擷取 SQL 並偵測 N+1 和慢查詢,以及 Laravel 和 Symfony 上的郵件、檢視、事件、佇列工作和出站 HTTP。(lerd-5-2)
SPX 分析器可以一鍵開關,將每個 PHP-FPM 請求變成火焰圖,在儀表板的同源 Profiler 檢視中檢視,無需重新啟動 FPM 或修改程式碼,`lerd profile run` 可對一次性 artisan 或 CLI 指令進行分析。(lerd-5-3)
請求計時分析提供每個站台的典型和 p95 回應時間、吞吐量、錯誤率以及按 p95 排序的最慢路由,並可一鍵分析。(lerd-5-4)
Tinker 標籤頁是每個站台的瀏覽器內 PHP REPL,具有專案感知的自動補全、懸停和診斷,由 phantomp_lsp 驅動。(lerd-5-5)
(lerd-5-6)
Lerd 的判斷核心在 rootless Podman 與本機開發邊界。`lerd link` 會處理 `.test` 網域、TLS 和每個 worktree 的執行時版本;`lerd doctor` 可檢查主機依賴,`lerd site:doctor` 則面向專案站台。需要 sudo 時只列印指令,這讓權限變更仍可由操作者決定。(lerd 第 5 節)
針對 lerd 的第 5 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
針對 lerd 的第 15 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
lerd:介面與 AI 存取
內建 Web UI 提供站台和服務儀表板、即時小工具、全域 Cmd+K 指令面板以及 PHP 和 Node 版本管理,支援十四種語言。(lerd-6-1)
終端儀表板(`lerd tui`)是 btop 風格的 TUI,具有即時狀態、站台詳情面板、內聯網域和版本編輯、shell 下拉、日誌追蹤和篩選排序。(lerd-6-2)
設定編輯在瀏覽器中進行,可編輯 nginx、`php.ini`、`.env` 和服務調優,並帶有驗證和時間戳備份。(lerd-6-3)
PHP-FPM、Queue、Schedule 和 Reverb 的即時日誌以工具實際輸出的顏色渲染,並可交給真實終端。(lerd-6-4)
通知可到達開啟的儀表板、透過 Web Push 訂閱的瀏覽器或桌面原生守護程式,側邊欄鈴鐺保留最近 50 筆。(lerd-6-5)
Lerd 還提供 Model Context Protocol 伺服器,包含十二個分組工具,讓 Claude Code、Cursor、JetBrains Junie 等 AI 助手管理環境,透過 `lerd mcp:enable-global` 全域註冊。(lerd-6-6)
(lerd-6-7)
可以用 `lerd tui` 對照 Web UI 的站台狀態,觀察 PHP-FPM、Queue、Schedule 與 Reverb 日誌,再以 `lerd dump tail` 檢查 `dump()` 或 `dd()` 是否按站台和分支隔離。若要分析一次性指令,使用 `lerd profile run`;若要讓 AI 助手管理環境,先確認 `lerd mcp:enable-global` 的註冊範圍。(lerd 第 6 節)
針對 lerd 的第 6 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
針對 lerd 的第 16 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
lerd:安裝、維護與專案狀態
Linux 和 macOS 支援一鍵腳本安裝(`curl -fsSL https://lerd.sh/install.sh | bash`),其他方式包括 apt(Ubuntu/Debian PPA)、dnf(Fedora COPR)、Homebrew 和 NixOS flake。(lerd-7-1)
環境醫生(`lerd doctor`)檢查主機依賴,並安全地使用 `--fix` 修復,任何需要 sudo 的指令會列印出來而不是代跑。(lerd-7-2)
站台醫生增加專案級健康檢查,包括環境漂移、應用程式金鑰、composer 和 node 狀態、安全稽核、資料庫存在性和 PHP 版本範圍。(lerd-7-3)
worker 自癒會在 CLI、儀表板、TUI 和 MCP 上顯示失敗的 worker,並一鍵恢復。(lerd-7-4)
閒置暫停會在可設定逾時後停止 worker,並在活動時恢復。(lerd-7-5)
Composer、fnm 和 mkcert 等主機工具被固定在發布清單後面。(lerd-7-6)
專案使用 MIT 授權,未封存;README 未說明生產狀態或保固。(lerd-7-7)
(lerd-7-8)
Lerd 的判斷核心在 rootless Podman 與本機開發邊界。`lerd link` 會處理 `.test` 網域、TLS 和每個 worktree 的執行時版本;`lerd doctor` 可檢查主機依賴,`lerd site:doctor` 則面向專案站台。需要 sudo 時只列印指令,這讓權限變更仍可由操作者決定。(lerd 第 7 節)
針對 lerd 的第 7 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
針對 lerd 的第 17 個判讀點,真正要看的不是專案描述中的形容詞,而是這個記號在實際流程中的位置:版本 v1.33.1、分支 main、以及本節提到的檔案或命令。若輸入、輸出或錯誤訊息與 README 不同,差異應被記錄為相容性問題,不能用推測補齊。這個限制對 lerd 特別具體,因為它決定了讀者是在使用既有工具、閱讀學習材料,還是承擔一個仍在變動的整合元件。
編輯結論
適合需要 lerd 所述能力、且能接受 README 已公開限制的讀者;不適合把未記載的功能當作保證的人。先依專案指定版本與命令完成最小流程,再檢查輸出、錯誤和資源邊界。
社群筆記