跟前一篇 極簡易的 git server 類似狀況但更複雜、要跟旁邊的人協作但無聊如我依然就是不想把 code 推到 Github,查了查有沒有什麼方案。
最快的手段依然會是前一篇走 http.server 的方法,但這個模組不接受 POST
,要採用這個方法的話就是換成由另一方開伺服器,但由於每次有更新都要重跑 git-update-server-info 算是小麻煩。
另一個方案就是在本地端起一隻 Git 倉儲服務,因此查看了一下有什麼解決方案。注意這裡的目的是起一個臨時的服務、故會以方便性作考慮而非安全性。
GitLab
說道開源的 git 倉儲肯定會要聊到 GitLab——不過我就直接跳過它了,我只是想要個臨時而簡單的小工具。
Gogs / Gitea
Gitea 算是以前就聽過的方案,另外這次查了才發現它是 Gogs 的 fork。由於 Gitea 的文件比 Gogs 完整非常多,因此就以 Gitea 來嘗試。
首先取得它的映像檔 gitea/gitea
:
docker pull gitea/gitea:latest-rootless
然後直接跑起來:
docker run -d --rm -p 3000:3000 -p 2222:2222 --name gitea gitea/gitea:latest-rootless
其中有幾個參數可以調:2222 阜是給 SSH 使用的,如果沒用到可以不用開,另外就是如果想要保存 repo 跟設定可以把本機的某個資料夾 mount 進去 /data
。
跑起來之後從瀏覽器登入 http://localhost:3000 會看到一個設定的頁面,好久沒遇到用 UI 做初始化的系統了,前一次摸到疑似是當年的 phpBB。
資料庫可以先用 SQLite 就好,反正不可能有那麼大量的同步讀寫需求。戳完安裝就...
厄,還沒好
接下來會要求使用者登入或註冊帳號,為了偷懶所以直接用命令列敲一個使用者起來:
docker exec gitea gitea admin user create --username root --email [email protected] --random-password
這裡會做基本的安全性檢查,某些使用者名稱不給用、密碼長度也會限制。然後不管是指定密碼或是隨機密碼,在初次登入的時候依然會要求使用者改密碼。
改完密碼之後就能用了,不過小煩。
GitBucket
GitBucket是另一個選項,而且簡單不少。
首先一樣取得映像檔 gitbucket/gitbucket
:
docker pull gitbucket/gitbucket
然後跑起來:
docker run --rm -d -p 8080:8080 gitbucket/gitbucket
嗒噠,好了!
直接開 http://localhost:8080/ 下去、使用預設帳號密碼 root
/ root
就能用了:
有夠方便的拉,但如果是需要放到公開網路的東西的話就... 還是先好好讀過他們的文件吧。