Docker Compose 一鍵部署私有 Git 伺服器 Gitea 完整教學

用 Docker Compose 一鍵部署私有 Git 伺服器:由零到用得嘅完整教學 成日聽人講「私有 Git 伺服器」,但係咪真係要裝部機、開個 GitLab 咁大工程先得?其實用 Docker Compose 幾分鐘就搞掂。今次同你講下點樣用 Gitea 搭一個輕量、慳資源嘅私有 Git 伺服器,仲要開埋 SSH、Webhook 同備份,一條龍。 點解揀 Gitea 而唔係 GitLab? G...

用 Docker Compose 一鍵部署私有 Git 伺服器:由零到用得嘅完整教學

成日聽人講「私有 Git 伺服器」,但係咪真係要裝部機、開個 GitLab 咁大工程先得?其實用 Docker Compose 幾分鐘就搞掂。今次同你講下點樣用 Gitea 搭一個輕量、慳資源嘅私有 Git 伺服器,仲要開埋 SSH、Webhook 同備份,一條龍。

點解揀 Gitea 而唔係 GitLab?

Gitea 係一個用 Go 寫嘅輕量 Git 服務,好處係:

– 食 RAM 少:一個 container 已經跑得鬱,比起 GitLab 要 4GB RAM 起步,Gitea 幾百 MB 就夠。
– 單一二進制檔:維護簡單,升級就換個 image。
– 功能齊:PR、Issue、Wiki、Webhook、CI 整合樣樣有。

如果你只係想屋企或者中小團隊自用,Gitea 真係夠用有餘。

環境準備

先確認你部機有齊兩樣嘢:

docker --version
docker compose version

冇嘅話就先去裝 Docker Desktop(Mac/Win)或者 `apt install docker.io docker-compose-plugin`(Linux)。

建立 docker-compose.yml

開一個資料夾,放個 compose file:

mkdir -p ~/gitea && cd ~/gitea

編輯 `docker-compose.yml`:

services:
  gitea:
    image: gitea/gitea:1.21
    container_name: gitea
    restart: always
    environment:
      - USER_UID=1000
      - USER_GID=1000
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:22"
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    container_name: gitea-db
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea_secret
      - POSTGRES_DB=gitea
    volumes:
      - ./postgres:/var/lib/postgresql/data

留意兩點:SSH port 我 map 咗去 2222,因為你部機本身可能已經有 SSH 用緊 22。咁樣撞唔到。

啟動同初始化

docker compose up -d

之後打開瀏覽器去 `http://localhost:3000`,會見到 Gitea 嘅初次設定頁。揀返 PostgreSQL 做資料庫,Host 填 `db:5432`(因為 container 內部 network 用 service name 連),帳號密碼照返上面 environment。

撳「Install Gitea」,等佢建立 database 同埋第一個 admin 帳號。

設定 SSH 免密碼 push

Gitea 內置 SSH server,行喺 2222 port。你喺 local 機想用 `git@localhost:2222` 咁 clone,要先將你嘅 public key 加入去。

# 喺 Gitea 網頁 → 設定 → SSH/GPG Keys → 貼上你嘅 public key
cat ~/.ssh/id_ed25519.pub

冇 key 就 generate 一個:

ssh-keygen -t ed25519 -C "you@example.com"

加完之後,clone 一個 repo 試下:

git clone ssh://git@localhost:2222/username/repo.git

開 Webhook 接 CI

Gitea 內置 webhook,可以接 Jenkins、Drone 或者 GitHub Actions。喺 repo → Settings → Webhooks → Add Webhook → Gitea,貼返你 CI 嘅 endpoint 同 secret。

一個常用做法係接 Drone CI,咁就可以喺 push 之後自動跑測試同 build。

每日備份(一定要做)

私有 Git 伺服器最驚就係 data 冇咗。加個 cron job 每晚 backup:

crontab -e

加入:

0 2 * * * docker exec gitea gitea dump -c /data/gitea/conf/app.ini --file /tmp/gitea-backup.zip

咁每日凌晨兩點就會出一份完整 backup(連 repo + database + config 一齊)。

總結

用 Docker Compose 搭 Gitea,全程唔使半個鐘,就有個穩定嘅私有 Git 伺服器。比起租 GitHub 私人 repo,自建勝在數據完全自己掌握,而且零月費。細團隊或者想學嘢嘅朋友,今晚就可以試下。

#SSH #備份 #技術分享 #IT教學 #部署

Docker Compose 一鍵部署私有 Git 伺服器 Gitea 完整教學 - 文章重點速覽 infographic