架設Gitea

要自行架設gitserver,除了使用gogs外,另外一套gitea也是很有名且很多人推薦的gitserver。

要安裝gitea比較建議是要參考它的英文網頁,說明的比較清楚。如果要快速先參考的話,是可以先看中文的,不過中文並沒有全部翻譯過來,所以只能知道一部份而已。

在這裏,我使用的是docker方式的安裝及設定,因為這樣比較方便,而且錯了也可以再重來。

事前準備

要啟重一組新的docker服務前,我會先考量一下它是否需要有新的帳號來執行服務,以及它要用來儲存資料的地方,也就是volume。

因為我希望gitea的docker使用一位新的gitea使用者,所以我就先新增一位host主機中的使用者,名稱也叫gitea:

useradd gitea
usermod -s /bin/bash gitea
passwd

新增完新的使用者後,也要查詢一下這位新的使用者的UID及GID,因為後續在啟動gitea docker時需要指定UID及GID以便對volume有存取的權限。

接著就是要安排給gitea docker使用的資料儲存位置,可看你的方式或習慣來新增一個目錄,並將這個目錄授權給gitea這位使用者:

cd /mnt/extHD
mkdir giteadata
chown gitea:gitea giteadata

接著就是將gitea的docker image先取回來:

sudo docker pull gitea:gitea

啟動gitea docker

要啟動gitea docker image基本上也可以用sudo docker run的方式,但gitea的網站是提供使用docker-compose的方式,所以這裏我也採用docker-compose的方式。

先編寫一份docker-compose.yml檔案:

version: "3.3"

networks:
  mynet:
    external: true
    #    name: bridge

services:
  server:
    image: gitea/gitea:1.15.6
    container_name: gitea
    environment:
      - USER_UID=1003
      - USER_GID=1003
    restart: always
    #    networks:
    #      - mynet
    network_mode: bridge
    volumes:
      - /mnt/extHD/giteadata:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3100:3000"
      - "3122:22"

這裏要特別留意的是,在使用的網路上我是希望我的gitea docker image是使用原本docker就有的bridge這個服務,因為我已經有執行一組nginx服務,並希望讓nginx作為代理伺服器的方式來轉址到gitea的網站上。

在這裏我試過許多方式,最後才知道在docker-compose檔案中不用去設定networks的相關指令,只要加上network_mode: bridge就可以了。

寫好docker-compose檔後就可以執行它:

docker-compose up -d

設定

在設定頁面中要留意的:

  • 以使用者名稱執行:請保留git,雖然我們有新增一位gitea,但在gitea docker image中只有git這位user。不過因為我們在docker-compose檔案中有指定UID及GID,所以git的權限就等同於我們外面host主機上的gitea這位使用者。
  • Gitea基本URL:可以先保留不改,等到後來你在nginx中建好代理網站後,再調整config/app.ini就好

基本設定使用預設值就可以了,接著就可以安裝gitea。安裝完成就可以登入網站。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *