Add gitea-deploy skill
This commit is contained in:
177
skill.md
Normal file
177
skill.md
Normal file
@@ -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@<SERVER_IP> 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@<SERVER_IP> "cd /opt/docker/gitea && docker compose up -d"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 3: 驗證部署
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh root@<SERVER_IP> "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://<SERVER_IP>:3000`
|
||||||
|
- **SSH**: `ssh git@<SERVER_IP>:222`
|
||||||
|
|
||||||
|
## 初始設定
|
||||||
|
|
||||||
|
首次訪問 `http://<SERVER_IP>:3000` 時,需填寫:
|
||||||
|
|
||||||
|
**資料庫設定**:
|
||||||
|
- **資料庫類型**: PostgreSQL
|
||||||
|
- **資料庫主機**: `db:5432`
|
||||||
|
- **資料庫使用者**: `gitea`
|
||||||
|
- **資料庫密碼**: `gitea`
|
||||||
|
- **資料庫名稱**: `gitea`
|
||||||
|
|
||||||
|
**其他設定可保持預設值。**
|
||||||
|
|
||||||
|
## 常用指令
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看狀態
|
||||||
|
ssh root@<SERVER_IP> "cd /opt/docker/gitea && docker compose ps"
|
||||||
|
|
||||||
|
# 查看日誌
|
||||||
|
ssh root@<SERVER_IP> "cd /opt/docker/gitea && docker compose logs"
|
||||||
|
|
||||||
|
# 停止服務
|
||||||
|
ssh root@<SERVER_IP> "cd /opt/docker/gitea && docker compose down"
|
||||||
|
|
||||||
|
# 重啟服務
|
||||||
|
ssh root@<SERVER_IP> "cd /opt/docker/gitea && docker compose restart"
|
||||||
|
|
||||||
|
# 更新映像
|
||||||
|
ssh root@<SERVER_IP> "cd /opt/docker/gitea && docker compose pull && docker compose up -d"
|
||||||
|
|
||||||
|
# 進入容器
|
||||||
|
ssh root@<SERVER_IP> "docker exec -it gitea bash"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 連接埠說明
|
||||||
|
|
||||||
|
| 連接埠 | 用途 |
|
||||||
|
|--------|------|
|
||||||
|
| 3000 | Web 介面 |
|
||||||
|
| 222 | SSH Git 操作 |
|
||||||
|
|
||||||
|
## 備份
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 備份資料庫
|
||||||
|
ssh root@<SERVER_IP> "docker exec gitea-db pg_dump -U gitea gitea > gitea_backup.sql"
|
||||||
|
|
||||||
|
# 備份資料卷
|
||||||
|
ssh root@<SERVER_IP> "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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user