Files
gitea-deploy/skill.md
2026-03-26 15:31:41 +08:00

178 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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
```