命令列工具
lerd-env/lerd avatar
lerd-env/lerd

lerd:Lerd:基於 rootless Podman 的 Linux 和 macOS PHP 開發環境

專案速覽:適用於 Linux 和 macOS 的開源、類似 Herd 的本機 PHP 開發環境。自動 .test 網域、每個專案 PHP/Node 隔離、單一命令 TLS。 Podman 原生,無根。

1,288 個 Star78 個 ForkGoMIT

秒懂

它是什麼?
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 已公開限制的讀者;不適合把未記載的功能當作保證的人。先依專案指定版本與命令完成最小流程,再檢查輸出、錯誤和資源邊界。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記