commit 90a1ba581d0c4ed611f086e696f580fbf61cbbc5 Author: Timmy Date: Thu Mar 26 15:31:41 2026 +0800 Add gitea-deploy skill diff --git a/skill.md b/skill.md new file mode 100644 index 0000000..a5a0a0d --- /dev/null +++ b/skill.md @@ -0,0 +1,177 @@ +--- +name: gitea-deploy +description: Deploy Gitea (self-hosted Git service) with PostgreSQL using Docker Compose. Use when user wants to set up Gitea for Git repository hosting. +tools: Read, Glob, Grep, Bash +--- + +# Gitea Docker 部署 + +使用 Docker Compose 部署 Gitea 自託管 Git 服務(含 PostgreSQL 資料庫)。 + +## 前置需求 + +- **目標**: 已安裝 Docker 的伺服器 +- **存取**: SSH root 權限 +- **目錄**: 服務部署於 `/opt/docker/gitea/` + +## 部署步驟 + +### Step 1: 建立目錄與配置 + +```bash +ssh root@ bash -c ' +mkdir -p /opt/docker/gitea +cat > /opt/docker/gitea/docker-compose.yml << "EOF" +networks: + gitea: + external: false + +volumes: + gitea: + driver: local + postgres: + driver: local + +services: + server: + image: docker.gitea.com/gitea:1.22.3 + container_name: gitea + environment: + - USER_UID=1000 + - USER_GID=1000 + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=db:5432 + - 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: docker.io/library/postgres:14 + container_name: gitea-db + restart: always + environment: + - POSTGRES_USER=gitea + - POSTGRES_PASSWORD=gitea + - POSTGRES_DB=gitea + networks: + - gitea + volumes: + - postgres:/var/lib/postgresql/data +EOF +' +``` + +### Step 2: 啟動服務 + +```bash +ssh root@ "cd /opt/docker/gitea && docker compose up -d" +``` + +### Step 3: 驗證部署 + +```bash +ssh root@ "docker ps | grep gitea" +``` + +**預期輸出**: +``` +gitea Up 0.0.0.0:3000->3000/tcp, 0.0.0.0:222->22/tcp +gitea-db Up 5432/tcp +``` + +## 存取資訊 + +- **Web 介面**: `http://:3000` +- **SSH**: `ssh git@:222` + +## 初始設定 + +首次訪問 `http://:3000` 時,需填寫: + +**資料庫設定**: +- **資料庫類型**: PostgreSQL +- **資料庫主機**: `db:5432` +- **資料庫使用者**: `gitea` +- **資料庫密碼**: `gitea` +- **資料庫名稱**: `gitea` + +**其他設定可保持預設值。** + +## 常用指令 + +```bash +# 查看狀態 +ssh root@ "cd /opt/docker/gitea && docker compose ps" + +# 查看日誌 +ssh root@ "cd /opt/docker/gitea && docker compose logs" + +# 停止服務 +ssh root@ "cd /opt/docker/gitea && docker compose down" + +# 重啟服務 +ssh root@ "cd /opt/docker/gitea && docker compose restart" + +# 更新映像 +ssh root@ "cd /opt/docker/gitea && docker compose pull && docker compose up -d" + +# 進入容器 +ssh root@ "docker exec -it gitea bash" +``` + +## 連接埠說明 + +| 連接埠 | 用途 | +|--------|------| +| 3000 | Web 介面 | +| 222 | SSH Git 操作 | + +## 備份 + +```bash +# 備份資料庫 +ssh root@ "docker exec gitea-db pg_dump -U gitea gitea > gitea_backup.sql" + +# 備份資料卷 +ssh root@ "docker run --rm -v gitea_gitea:/data -v \$(pwd):/backup ubuntu tar czf /backup/gitea_data.tar.gz /data" +``` + +## 故障排除 + +### 容器名稱有 -1 後綴 + +確保 `docker-compose.yml` 中每個服務都有 `container_name` 設定。 + +### 無法連接資料庫 + +確認網路設定正確,容器應在 `gitea` 網路中: + +```bash +docker network inspect gitea_gitea +``` + +### SSH 連接失敗 + +確認 222 連接埠已開放,且 SSH 金鑰已正確添加到 Gitea 用戶設定。 + +## 升級 + +編輯 `docker-compose.yml` 更新映像版本後: + +```bash +cd /opt/docker/gitea +docker compose pull +docker compose up -d +```