自架服務
charmbracelet/soft-serve avatar
charmbracelet/soft-serve

Soft Serve:把倉庫管理放進 SSH 终端

用於命令列的強大的、可自架的 Git 伺服器。您也可以嘗試以下一些指令:或者您可以使用 Soft Serve 來瀏覽本機儲存庫,使用 soft browser [directory] ​​或在 Git 儲存庫中執行 Soft。

7,219 個 Star241 個 ForkGoMIT
GitHub

秒懂

它是什麼?
Soft Serve 是单二進制自托管 Git 服務器,覆盖 SSH 浏览、HTTP 與 Git 克隆、LFS、倉庫管理和基于密钥的權限控制。
適合誰用?
适合希望自持 Git 倉庫并以 SSH 作為管理入口的個人或小团队;不适合把匿名開發配置直接暴露到不受信任網络的场景。先用临時 data 目錄啟動 `soft serve`,核對 `config.yaml`、管理员公钥、anon-access、HTTP 克隆和一個 repo hook 的實際行為,再决定是否迁移正式倉庫。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 15 天前。
用什麼語言寫的?
主要是 Go(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

通過命令行操作的 Git 服務器 · charmbracelet-soft-serve-deep-analysis

Soft Serve 是一個自托管的 Git 服務器,你可以通過命令行操作它。README 將其描述為适合命令行的自托管 Git 服務器。它通過 SSH 提供终端界面,允許通過 SSH、HTTP 或 Git 协议克隆倉庫,并支持通過 HTTP 和 SSH 後端的 Git LFS。你可以通過 SSH 管理倉庫,通過 SSH 或 git push 按需创建倉庫,通過 SSH 可访问的界面浏览倉庫、文件和提交,并通過 SSH 打印文件,支持语法高亮和行号。该项目使用 Go 编寫,采用 MIT 許可證。

安装 soft 二進制文件并啟動服務器 · charmbracelet-soft-serve-deep-analysis

Soft Serve 以名為 soft 的单個二進制文件發布。README 记錄了 macOS 或 Linux 下用 brew、Windows 下用 winget、Arch Linux 下用 pacman、Nix、Debian/Ubuntu 用 apt 倉庫、Fedora/RHEL 用 yum 倉庫的安装方式。预编译二進制文件提供 Alpine、Debian 和 RPM 格式,适用于 Linux、macOS 和 Windows,也可以使用 go install github.com/charmbracelet/soft-serve/cmd/soft@latest 安装。README 提到有 Docker 镜像,但没有给出具體的 Docker 命令。啟動服務器時,README 要求先安装 git,然後运行 soft serve。這会创建一個 data 目錄,用于存放倉庫、SSH 密钥和數據庫。首次运行需要設置 SOFT_SERVE_INITIAL_ADMIN_KEYS 為你的 SSH 公钥以创建管理员用户。還可以設置 SOFT_SERVE_DEFAULT_REPO 在啟動時创建一個空的公共倉庫;README 指出這只保證存在性,不保證可访问性,可访问性取决于访问設置。

配置文件和環境变量 · charmbracelet-soft-serve-deep-analysis

服務器設置存放在首次运行後 data 目錄下的 config.yaml 中。默認文件包含服務器名称、日志格式、SSH 监听地址 :23231、Git daemon :9418、HTTP :23232、數據庫驱動(sqlite 或 postgres)、Git LFS、cron 任務和 stats 监听器等部分。任何設置都可以用環境变量覆盖,環境变量以 SOFT_SERVE_ 開头,後接全大寫的設置名称,例如 SOFT_SERVE_SSH_LISTEN_ADDR 或 SOFT_SERVE_HTTP_PUBLIC_URL。數據路径由 SOFT_SERVE_DATA_PATH 控制,自定义配置文件位置可通過 SOFT_SERVE_CONFIG_LOCATION 設置。數據庫支持 SQLite 和 Postgres,默認使用 SQLite。README 展示了如何通過設置驱動為 postgres 并提供數據源 URL 來指向 Postgres 數據庫。示例配置中 Git LFS 默認啟用,但纯 SSH 传输默認禁用。

認證與授權 · charmbracelet-soft-serve-deep-analysis

Soft Serve 的認證和授權通過 SSH 管理。README 指出所有需要認證的操作都通過 SSH 完成,并且不允許用户重復使用 SSH 公钥。匿名访问由两個設置控制:anon-access 設置匿名用户的访问級别(no-access、read-only、read-write 或 admin-access,默認為 read-only),allow-keyless 是否允許不使用密钥的連接(默認為 true)。如果禁用 allow-keyless,HTTP 和 git:// 克隆將被拒绝。README 警告,通過 SOFT_SERVE_ANON_ACCESS 和 SOFT_SERVE_ALLOW_KEYLESS 進行本地開發覆盖会授予完全未認證的访问權限,绝不應暴露给不受信任的網络。可以通過 SSH CLI 生成访问令牌用于 HTTP 認證。共有四個访问級别:no-access、read-only、read-write 和 admin-access。還有一個已记錄的局限:由于 Go 的 x/crypto/ssh 包存在缺陷,新的 SSH RSA 密钥无法使用,只有旧的 SHA-1 RSA 密钥可用。

创建和管理倉庫 · charmbracelet-soft-serve-deep-analysis

倉庫通過 SSH 上的 repo 命令管理,README 列出了 blob、branch、collab、create、delete、description、hide、import、info、list、mirror、private、project-name、rename、tag 和 tree 等子命令。要创建倉庫,注册用户可以运行 repo create <名称>,或者直接推送到指向 Soft Serve 服務器的远程倉庫;如果倉庫不存在,推送会创建它。倉庫可以嵌套,可以用 repo import 從公共远程导入,并用 --mirror 標记為拉取镜像。可以添加具有特定访问級别的协作者。倉庫可以設為私有、從列表中隐藏、重命名和删除。支持 webhook,事件包括 push、collaborators 和 branch_tag_create。README 還展示了通過 SSH 打印倉庫树和文件 blob 的命令,带有语法高亮和行号的標志。使用這些 repo 命令需要成為该倉庫的协作者。

SSH TUI 和 git hooks · charmbracelet-soft-serve-deep-analysis

Soft Serve TUI 主要用于通過 SSH 浏览倉庫。你可以用 ssh 連接到服務器,或者通過將倉庫名作為命令传递直接跳轉到某個倉庫。README 還描述了 soft browse 用于本地倉庫,以及在 Git 倉庫內运行 soft。在菜单中按下 c 可以復制克隆命令,這取决于终端對 OSC52 的支持。對于服務器端自動化,Soft Serve 支持 git hooks:pre-receive、update、post-update 和 post-receive。hook 可以是每個倉庫的,存放在倉庫的 hooks 目錄下,也可以是全局的,存放在數據路径下的 hooks 目錄。README 包含一個示例 update hook,打印關于推送的信息。该项目是 Charm 的一部分,以 MIT 許可證分發,该許可證授予使用、復制、修改、合并、發布、分發、再許可和出售副本的權利,但軟件按原樣提供,不提供任何担保。

Soft Serve:把倉庫管理放進 SSH 终端 的專案核對記錄。這裡只談 charmbracelet-soft-serve-deep-analysis 自身的文件、目錄、命令與輸出。採用前先閱讀 README,確認安裝方式、啟動入口、設定檔、依賴與資料位置,再依文件建立最小測試。測試 Soft Serve:把倉庫管理放進 SSH 终端 時,應保存實際輸入、終端輸出、產生檔案、服務埠號與錯誤訊息,並逐項對照 README 的描述。若命令需要環境變數或外部服務,記下變數名稱與服務狀態;若功能涉及網路、權限、資料庫、終端介面或編譯器,也要分開記錄成功和失敗結果。素材沒有說明的效能、相容版本、支援期限與安全保證,不應由標題或宣傳語推導。授權條款只說明 charmbracelet-soft-serve-deep-analysis 的程式碼如何使用、修改與分發,實際部署仍須檢查依賴和配置。升級時對照 charmbracelet-soft-serve-deep-analysis 的版本標籤、README 變更與測試輸出,確認既有輸入仍得到預期結果。這些觀察點都指向 charmbracelet-soft-serve-deep-analysis,不是泛用的選型清單。

Soft Serve:把倉庫管理放進 SSH 终端 的專案核對記錄。這裡只談 charmbracelet-soft-serve-deep-analysis 自身的文件、目錄、命令與輸出。採用前先閱讀 README,確認安裝方式、啟動入口、設定檔、依賴與資料位置,再依文件建立最小測試。測試 Soft Serve:把倉庫管理放進 SSH 终端 時,應保存實際輸入、終端輸出、產生檔案、服務埠號與錯誤訊息,並逐項對照 README 的描述。若命令需要環境變數或外部服務,記下變數名稱與服務狀態;若功能涉及網路、權限、資料庫、終端介面或編譯器,也要分開記錄成功和失敗結果。素材沒有說明的效能、相容版本、支援期限與安全保證,不應由標題或宣傳語推導。授權條款只說明 charmbracelet-soft-serve-deep-analysis 的程式碼如何使用、修改與分發,實際部署仍須檢查依賴和配置。升級時對照 charmbracelet-soft-serve-deep-analysis 的版本標籤、README 變更與測試輸出,確認既有輸入仍得到預期結果。這些觀察點都指向 charmbracelet-soft-serve-deep-analysis,不是泛用的選型清單。 Soft Serve:把倉庫管理放進 SSH 终端 的下一次核對仍應使用同一個命令與同一個配置鍵,避免把不同流程混在一起。

編輯結論

适合希望自持 Git 倉庫并以 SSH 作為管理入口的個人或小团队;不适合把匿名開發配置直接暴露到不受信任網络的场景。先用临時 data 目錄啟動 `soft serve`,核對 `config.yaml`、管理员公钥、anon-access、HTTP 克隆和一個 repo hook 的實際行為,再决定是否迁移正式倉庫。

官方來源

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

社群筆記