公司終於要引進git啦(灑花~),但因為安全疑慮不想使用github這類的雲端工具,剛好前陣子聽朋友說可以把git server架在NAS上,於是我開始研究怎麼架server,從一開始嘗試共用網路資料夾(簡單粗暴),但SSH幒是驗證失敗,爬解決方法的時候意外看到根本就是內網版github的gitea,簡直亢奮到不行!!搭配docker的作法,可以不用設定太多電腦的環境,再甚至未來也許可以把開發環境統一規格放在docker
compose文件中,這樣就可以避免版本、相依性問題所花費大把時間的問題,感覺挺美好的
環境
windows11客戶端、windows10伺服器
作法
因為搭配Docker使用,docker的安裝就不用多說了,去官網下載並安裝
在要當伺服器的電腦隨意位置開啟資料夾,喜歡放哪裡就放哪裡,我自己是在電腦桌面建立一個docker資料夾,裡面還有一個gitea資料夾,這樣未來還有其他docker compose的話就不會混在一起,方便管理。
在資料夾中建立一個
docker-compose.yml
檔案,內容是1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.21
container_name: gitea1
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql
container_name:容器的名稱,如果之前有其他容器也叫這個名字,則無法成功建立這個容器
restart:如果不想要每次打開docker就自動啟動容器的話,可以把參數always改成no(我是因為硬體限制,打開docker就馬上運行server會轉圈圈轉到懷疑人生)
volumes:不會隨著容器重啟就消失的檔案,本機資料夾(我現在的資料夾位置在docker,在這個目錄之下的gitea資料夾)對應容器中的哪一個資料夾
ports: 冒號前面對應的是本機的port,後面對應的是容器上的port,3000那個是給Gitea運行的port,222是給SSH伺服器用的
這邊我是搭配MySQL儲存gitea資料,如果不用MySQL也可以使用別的資料庫,不設定資料庫的話會預設使用SQLite
- 在瀏覽器輸入
http://localhost:3000/
就可以到安裝畫面,部分資訊是直接帶入剛才在yml檔中的設定,這邊可以調整
基本上維持預設就可以了,有幾項我有用到的客製化
網站標題: 當未來連上這個Gitea網站歡迎頁的標題(打碼區塊)
伺服器域名: 現在只跟自己電腦連,用localhost沒問題,要讓別人連就要改成ip位置,假設ip是192.168.0.3 ,有改設定的話,這個Gitea介面網址就變成
http://192.168.0.3:3000/
Gitea HTTP埠: 更改使用port,簡單來說一樣是改網址的部分,例如預設是8088,原本的網址會是
http://localhost:8088/
,更改成3000 port之後變成http://localhost:3000/
設定管理員帳號之後,點安裝Gitea,有成功跳轉到登入畫面的話,基本上就算是成功安裝了
不設定管理員帳號也沒關係,要使用的時候,點註冊,第一個註冊的帳號自動會變成管理員:登入之後就可以看到一個類似github的頁面,沒有格子也沒關係,創建第一個儲存庫之後也會出現
試用功能
架好Gitea之後就是來試用看看它的功能,我從clone開始測
先建一個普通的倉庫
基本上跟github的操作一模一樣,這邊不多贅述
還有孰悉的上傳指令畫面開一個資料夾執行
git clone http://(你的IP):3000/cc/test1.git
,有成功下載下來就是成功了~再來測試一下push,先在剛剛clone下來的資料夾中隨意建立一個commit(就git add和git commit的那個commit),
git reomte -v
檢查一下遠端是不是剛才clone的儲存庫,最後再git push origin
推上去,上傳時會要求輸入帳號密碼,也就是剛剛註冊帳號的那一組,這邊詳細步驟就請洽git基礎操作了不多說~在剛剛的Gitea畫面看見剛才推送的檔案就代表完成囉
我不想每次都打帳號密碼欸
用HTTP傳送接收檔案可以正常使用,缺點就是每次上傳都要輸入帳號密碼,之前使用github的時候,大家都使用SSH協定,就不用一直輸入帳號密碼,但裝在docker上的SSH有額外設定,我目前還沒解決每次上傳都一直要求我輸入密碼以及這個問題
1 | Could not load host certificate "/data/ssh/ssh_host_ed25519_cert": No such file or directory |
等研究出來再來更新~ 目前就以能上傳到伺服器進行協作為主~
其他設定就開另外一篇文介紹
參考資料
Gitea-Installation with Docker
給windows使用者的簡易Git環境架設
在 Windows 架設 Git 私服 - 免安裝版
Git 私服第一品牌 - Gitea
使用 Docker 五分鐘安裝好 Gitea (自架 Git Hosting 最佳選擇)