跳转至

587_Gitea代码托管

一句话概述:Gitea 是用 Go 编写的轻量级自托管 Git 服务,功能对标 GitHub,但只需 512MB 内存就能跑,支持 CI/CD(Gitea Actions)和 20+ 种包管理,是小团队的 GitHub 替代品。

核心知识点表

概念白话解释
Gitea自己搭建的 GitHub,代码放在自己服务器上
Gitea Actions内置 CI/CD,语法兼容 GitHub Actions
Organization组织,把用户和仓库分组管理
Webhook代码推送时自动通知其他服务
Mirror镜像仓库,自动同步其他 Git 平台的仓库
Package Registry包管理,支持 npm/PyPI/Docker 等 20+ 种包

安装配置

Docker Compose 安装(推荐)

# docker-compose.yml
services:
  gitea:
    image: gitea/gitea:latest           # 最新版(v1.23,2026)
    container_name: gitea
    restart: always
    ports:
      - "3000:3000"                     # Web 界面
      - "2222:22"                       # SSH(Git over SSH)
    volumes:
      - ./gitea-data:/data              # 数据持久化
      - /etc/timezone:/etc/timezone:ro  # 时区
    environment:
      - USER_UID=1000                   # 运行用户 UID
      - USER_GID=1000                   # 运行用户 GID
      - GITEA__database__DB_TYPE=sqlite3  # 使用 SQLite(最简单)
docker compose up -d                   # 启动
# 浏览器打开 http://localhost:3000
# 首次访问进入安装向导

二进制安装

# 下载最新版
wget https://dl.gitea.com/gitea/1.23/gitea-1.23-linux-amd64
chmod +x gitea-1.23-linux-amd64       # 添加执行权限
sudo mv gitea-1.23-linux-amd64 /usr/local/bin/gitea  # 移到系统路径

# 创建用户和目录
sudo adduser --system --shell /bin/bash --group git
sudo mkdir -p /var/lib/gitea /etc/gitea
sudo chown git:git /var/lib/gitea /etc/gitea

# 启动
sudo -u git gitea web                 # 前台运行
# 或创建 systemd 服务后台运行

安装向导配置

# 首次访问 http://localhost:3000 时的关键配置:
# 1. 数据库类型:SQLite3(小团队)/ MySQL / PostgreSQL
# 2. 站点标题:你的 Git 服务名称
# 3. 仓库根目录:/data/gitea-repositories
# 4. SSH 端口:22 或 2222
# 5. 管理员账号:立即创建!
# 6. 邮件服务:配置 SMTP(可选,用于通知和密码重置)

基本使用

创建仓库和推送代码

# 在 Web 界面创建仓库后,用 Git 推送代码:

# SSH 方式(推荐)
git remote add origin ssh://git@your-server:2222/username/repo.git
git push -u origin main               # 推送代码

# HTTPS 方式
git remote add origin https://your-server:3000/username/repo.git
git push -u origin main

Gitea Actions(CI/CD)

# 在仓库中创建 .gitea/workflows/ci.yml
name: CI                               # 工作流名称
on: [push, pull_request]               # 触发条件

jobs:
  test:
    runs-on: ubuntu-latest             # 运行环境
    steps:
      - uses: actions/checkout@v4      # 拉取代码
      - name: Run tests               # 步骤名
        run: |
          npm install                  # 安装依赖
          npm test                     # 运行测试
# 启用 Gitea Actions 需要在 app.ini 中配置:
# [actions]
# ENABLED = true
#
# 还需要部署 act_runner(Actions 执行器)
docker run -d --name runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitea/act_runner:latest

仓库镜像

# 从 GitHub 镜像仓库到 Gitea:
# 1. 新建仓库 → 选择 "迁移/从远程仓库导入"
# 2. 填入 GitHub 仓库 URL
# 3. 勾选 "镜像仓库"
# 4. 设置同步间隔
# Gitea 会自动定期同步 GitHub 仓库的变更

高级用法

配置文件(app.ini)

; /data/gitea/conf/app.ini
[server]
ROOT_URL = https://git.example.com/    ; 外部访问 URL
SSH_PORT = 2222                        ; SSH 端口
DOMAIN = git.example.com              ; 域名

[service]
DISABLE_REGISTRATION = true           ; 关闭注册(安全!)
REQUIRE_SIGNIN_VIEW = true            ; 必须登录才能查看

[mailer]
ENABLED = true                        ; 启用邮件
SMTP_ADDR = smtp.gmail.com            ; SMTP 服务器
SMTP_PORT = 587                       ; SMTP 端口
FROM = gitea@example.com              ; 发件人

[actions]
ENABLED = true                        ; 启用 Gitea Actions

OAuth2 / LDAP 认证

# 管理面板 → 认证源 → 添加认证源
# 支持:LDAP / OAuth2 / SMTP / PAM
#
# OAuth2 配置示例(GitHub 登录):
# - 类型:OAuth2
# - 提供者:GitHub
# - Client ID:从 GitHub 获取
# - Client Secret:从 GitHub 获取
# - 重定向 URL:https://git.example.com/user/oauth2/github/callback

常见报错

报错信息原因解决方案
Permission denied (publickey)SSH 密钥未配置在用户设置中添加 SSH 公钥
Repository not found仓库不存在或无权限检查仓库路径和权限
Database lockedSQLite 并发写入冲突大团队建议换 MySQL/PostgreSQL
Actions runner offlineact_runner 未连接检查 runner 容器状态和注册 token
502 Bad GatewayGitea 未启动或反向代理错误检查 Gitea 服务和 Nginx/Traefik 配置

速查表

# === Docker 安装 ===
docker run -d -p 3000:3000 -p 2222:22 \
  -v gitea-data:/data --name gitea gitea/gitea:latest

# === 默认端口 ===
# 3000 → Web 界面
# 22/2222 → SSH

# === 资源需求 ===
# 最低:2 CPU + 512MB RAM(SQLite)
# 推荐:2 CPU + 1GB RAM

# === 数据库支持 ===
# SQLite(最简单)| MySQL | PostgreSQL | TiDB | MSSQL

# === 关键配置路径 ===
# app.ini:/data/gitea/conf/app.ini
# 仓库:/data/gitea-repositories/
# 日志:/data/gitea/log/

# === Gitea CLI ===
gitea admin user create --username admin --password pass --email a@b.com
gitea admin user list                 # 列出用户
gitea dump                            # 备份所有数据

同类对比

特性GiteaGitLab CEForgejoGitHub
内存需求512MB4GB+512MBN/A
安装复杂度N/A
CI/CDActions(兼容GH)内置ActionsActions
包管理20+ 种内置20+ 种Packages
开源协议MITMIT(CE)GPL闭源
适合规模1-50人50+人1-50人任意

选型建议:小团队自托管 Git 首选 Gitea(轻量、功能全);Forgejo 是 Gitea 的社区分支,更纯粹的开源治理;大团队需要完整 DevOps 选 GitLab。