Gitea 完整部署教程
从零搭建 Gitea 代码托管平台
一、架构设计
1.1 典型部署架构
┌─────────────────────────────────────────────────────────────────────┐
│ 完整网络架构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 📱 笔记本 ── EasyTier ── ☁️ 云服务器 ── 公网用户 │
│ │ │ │
│ │ └── Gitea (公网: gitea.example.com) │
│ │ │
│ └── EasyTier 内网 ── 🏠 内网 Gitea (内网: 192.168.1.x) │
│ │
└─────────────────────────────────────────────────────────────────────┘1.2 两种部署方案
| 方案 | Gitea 位置 | 公网访问 | 内网访问 | 推荐场景 |
|---|---|---|---|---|
| A | 内网 | ❌ | ✅ EasyTier | 数据隐私优先 |
| B | 云服务器 | ✅ | ✅ EasyTier | 公网访问优先 |
二、云服务器部署 Gitea
2.1 原理讲解
为什么用 Docker?
- 隔离环境,不影响其他服务
- 便于迁移和备份
- 一键部署
为什么用 Nginx 反向代理?
- Gitea 自带 HTTP 服务,但直接暴露 3000 端口不安全
- Nginx 可以:HTTPS、负载均衡、限流、访问控制
2.2 开放端口
bash
# 云服务器防火墙
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# 云服务器安全组也要开放!2.3 创建目录
bash
mkdir -p ~/gitea/{data,config}2.4 配置 Docker Compose
bash
cat > ~/gitea/docker-compose.yml << 'EOF'
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
ports:
- "3000:3000"
- "2222:22"
volumes:
- ./data:/data
- ./config:/config
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__server__DOMAIN=git.example.com
- GITEA__server__ROOT_URL=https://git.example.com/
- GITEA__server__HTTP_PORT=3000
- GITEA__server__SSH_PORT=2222
- GITEA__server__DISABLE_SSH=false
- GITEA__security__INSTALL_LOCK=true
restart: unless-stopped
EOF2.5 启动 Gitea
bash
cd ~/gitea
docker compose up -d
# 查看状态
docker compose ps
# 查看日志
docker logs gitea -f2.6 初始化配置
- 浏览器访问:
https://git.example.com(或http://你的服务器IP:3000) - 首次访问会跳转到初始化页面
配置建议:
| 配置项 | 建议值 |
|---|---|
| 数据库类型 | SQLite3(简单)或 PostgreSQL |
| 域名 | git.example.com |
| SSH 端口 | 2222 |
| HTTP 端口 | 3000 |
2.7 配置 Nginx 反向代理
bash
cat > ~/gitea/nginx.conf << 'EOF'
server {
listen 80;
server_name git.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF需要配置 HTTPS 证书(参考 VitePress 部署教程)。
三、配置 SSH 访问
3.1 本地生成 SSH 密钥
bash
# 本地电脑执行
ssh-keygen -t ed25519 -C "your-email@example.com"3.2 添加公钥到 Gitea
- 登录 Gitea
- 点击头像 → 设置 → SSH 密钥
- 添加公钥(
~/.ssh/id_ed25519.pub内容)
3.3 配置 SSH
bash
# 本地电脑配置 SSH
cat >> ~/.ssh/config << 'EOF'
Host gitea
HostName git.example.com
User git
Port 2222
IdentityFile ~/.ssh/id_ed25519
EOF3.4 测试连接
bash
ssh -T git@gitea
# 应该显示:Hi xxx! You've successfully authenticated...四、内网访问(通过 EasyTier)
如果 Gitea 部署在内网,通过 EasyTier 访问:
- 确保本地电脑已加入 EasyTier 网络
- 配置 SSH 访问内网 IP:
bash
cat >> ~/.ssh/config << 'EOF'
Host gitea-internal
HostName 192.168.1.x # Gitea 内网 IP
User git
Port 22
IdentityFile ~/.ssh/id_ed25519
EOF五、常用命令
bash
# 启动
cd ~/gitea && docker compose up -d
# 停止
docker compose down
# 重启
docker compose restart
# 查看日志
docker logs gitea -f
# 进入容器(调试用)
docker exec -it gitea /bin/bash六、备份与恢复
备份
bash
# 备份数据目录
tar -czvf gitea-backup-$(date +%Y%m%d).tar.gz ~/gitea/data/恢复
bash
# 解压备份
tar -xzvf gitea-backup-20240101.tar.gz -C ~/
# 重启服务
cd ~/gitea && docker compose restart