Skip to main content
Git 整合會執行獨立的 git-bridge 服務。使用者透過 ${OVERLEAF_SITE_URL}/git/<project id> 進行 clone 與 push;Ayakaleaf Pro pod 會將這些請求轉送至 git-bridge,而 git-bridge 會回呼 pod 以取得專案內容與歷史記錄。啟用此功能也會同時啟用 MCP Server,且 GitHub、GitLab、Gitea 與 Dropbox 同步都需要此功能。 本頁延伸自使用 Kubernetes 中的單一副本安裝。若有多個副本,請參閱水平擴展。
1

部署 git-bridge

45-git-bridge.yaml
10.96.100.80 必須是您叢集服務 CIDR 內的可用位址(kubeadm 的預設值為 10.96.0.0/12)。
2

讓 Ayakaleaf Pro 指向 git-bridge

加入 30-config.yaml:
30-config.yaml (additions)
3

Clone 專案

在 Account Settings 中建立 Git 驗證權杖,然後執行:
以 git 作為使用者名稱,並以該權杖作為密碼。

為何資訊清單是這樣寫的

  • 以固定 ClusterIP 作為 GIT_BRIDGE_HOST。Ayakaleaf Pro 映像檔內的 nginx 轉送 /git/ 時,所使用的解析器設為 127.0.0.11,也就是 Docker 內建的 DNS。Kubernetes 在該位址沒有 DNS 伺服器,因此像 git-bridge 這樣的主機名稱會以 502 失敗,並在 /var/log/nginx/error.log 中顯示「git-bridge could not be resolved」。IP 位址則不需要查詢。
  • overleaf-internal。git-bridge 需要 Ayakaleaf Pro pod 的連接埠 3000(web API)與 3100(歷史記錄)。獨立的 ClusterIP Service 可將它們保留在叢集內部;若將它們加入 NodePort Service,則會在每個節點上公開。
  • enableServiceLinks: false。Service git-bridge 會讓 Kubernetes 在 pod 中加入 GIT_BRIDGE_PORT=tcp://10.96.100.80:8000;git-bridge 會將 GIT_BRIDGE_PORT 讀取為其監聽連接埠,並以 MalformedJsonException ... path $.port 停止。
  • 單一副本搭配專屬磁碟區。git-bridge 會在磁碟上為每個已 clone 的專案保留一個 git 儲存庫,且不得同時執行兩個。請備份其磁碟區。

在 Kubernetes 上的測試

在 Kubernetes 1.37 上,以三個副本置於 HAProxy 之後,並讓 git-bridge 作為 overleaf-0 的相鄰服務,我們針對 Git 整合的端對端測試全數通過(19 個案例),將 git-bridge 移至連接埠 8001、使 nginx 必須使用 GIT_BRIDGE_HOST 與 GIT_BRIDGE_PORT 時亦同:帳號設定中的 Git 權杖、編輯器中的 clone 指令、clone、push 與 pull、二進位檔案與資料夾、重新命名與刪除、拒絕過時的 push、依角色的存取權(受邀的編輯者與透過連結加入的編輯者可以 push,檢視者與審閱者只能 clone,沒有存取權的使用者會被拒絕)、拒絕錯誤與已刪除的權杖、git-bridge 的內部路由保持在 nginx 後方,以及已停權的帳號。Git 驗證權杖本身(產生、列出、每位使用者的數量上限、刪除、到期、git-bridge 向 web 請求的檢查,以及已停權與已刪除帳號的權杖)在一個副本上通過測試(16 個案例)。

問與答

回答:請檢查 GIT_BRIDGE_HOST:它必須是 git-bridge Service 的 IP 位址,而不是其名稱,請參閱上文。kubectl -n overleaf exec deploy/overleaf -- tail /var/log/nginx/error.log 會顯示原因。
最後修改於 2026年11月2日