Skip to main content
[ PIER ]

Gitea

无痛自托管 Git 服务 —— 像 GitHub,但是你的。

Service #git#repository#ci#devops#code

Gitea 是一个用 Go 编写的轻量级自托管 Git 服务。它看起来和工作起来像 GitHub — 仓库、PR、issue、CI 集成、代码审查、release — 但作为单一二进制或 100MB Docker 容器运行。个人开发者、OSS 项目和不希望代码在他人云端的企业使用。

使用 Pier 部署

  1. 1 打开 Pier 控制台,点击 Add service。
  2. 2 从模板列表中选择 Gitea。
  3. 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
  4. 4 如需 HTTPS,请绑定域名。Traefik 会自动签发 Let's Encrypt 证书。

什么是 Gitea?

Gitea 是社区开发的、轻量级、自托管 Git 服务。它看起来和行为像 GitHub — 仓库、pull requests、issues、里程碑、release、带内联评论的代码审查、分支 保护 — 但作为单一 ~100 MB Docker 容器在 $5/月 VPS 上运行。最初在 2016 年 从 Gogs 分叉,它现在拥有蓬勃的社区和企业级功能集,包括 Actions(CI/CD)、 包注册中心、代码镜像、LDAP/OAuth/SSO 集成和 webhook 支持。

对于不希望代码在他人云端 — 或厌倦按席位付费 — 的个人和团队来说,Gitea 是默认选择。它从一个有私人 side-project 仓库的开发者扩展到拥有数千用户和 数万仓库的组织。

Pier 如何部署它

Pier 使用官方 gitea/gitea Docker 镜像,将 /data 挂载为持久卷 — 包含 SQLite 数据库(默认后端)、Git 仓库、附件和配置。默认端口是 3000/tcp 用于 HTTP。Pier 在设置期间自动生成初始管理员密码。

对于带 PostgreSQL 后端的更重部署,使用 gitea-postgresql 模板 — 它在一个 Docker Compose 栈中配置 Gitea + 一个专用的 PostgreSQL 容器。

对于 HTTPS,附加域名 — Traefik 处理证书颁发,Gitea 的 ROOT_URL 自动从 X-Forwarded-Host 头设置。

何时不要使用 Gitea

对于完整 DevSecOps,带漏洞扫描、容器扫描和内置 CI/CD 管道可视化 — GitLab CE 更完整(但重得多)。对于邮件驱动的极简工作流 — sr.ht。对于 个人/一人项目 — 服务器上直接 git over SSH 可能就足够了。

核心功能

类 GitHub UI

仓库、分支、PR、issue、里程碑、release、wiki 的 Web UI。如果你用过 GitHub,你已经会 Gitea。

单一二进制、低资源

~100 MB Docker 镜像,在 1 GB VPS 上舒适运行。SQLite、MySQL/MariaDB 或 PostgreSQL 后端 — 选择你的存储。

Actions(CI/CD)

Gitea Actions 与 GitHub Actions 兼容 — 大多数 actions/* 和社区 actions 直接工作。通过 gitea/act_runner 镜像在容器中运行 runner。

代码审查与 PR

带内联评论、审查线程、必需审查者、合并策略(merge / rebase / squash)、分支保护、code owners 的 pull requests。

包注册中心

npm、Maven、NuGet、PyPI、Cargo、Composer、RubyGems、Helm、Docker、Pub、Conan、Generic 的内置注册中心。替换单独的 Verdaccio/Nexus。

多认证集成

本地账户、LDAP、SMTP、OAuth2(Google、GitHub、GitLab、Discord、Azure AD、自定义 OIDC)、SSPI、PAM。通过 JIT 配置自动链接。

应用场景

私有团队 Git 服务器

无需为 GitHub 按席位付费即可托管团队代码。$5/月 VPS 上的相同功能。

OSS 项目家园

在你控制的基础设施上托管 OSS 项目(带 issue、PR、release、Actions)。镜像到 GitHub 以获得可见性。

代码镜像

按计划从 GitHub/GitLab 拉取镜像 — 保留团队依赖的每个 dep 的异地副本。

内部工件包注册中心

一个服务器用于代码 + npm + Maven + Docker 镜像。无需 Verdaccio、Nexus 或 JFrog。

非云工作负载的 CI/CD

Gitea Actions 在你自己的 runner 上运行 — IoT/嵌入式目标、GPU 盒、GitHub 托管 runner 无法到达的隔离环境。

代码示例

推送新仓库 bash
git remote add origin https://gitea.example.com/yourname/repo.git
git push -u origin main
Gitea Actions 工作流 yaml
# .gitea/workflows/test.yaml
name: test
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 22 }
      - run: npm ci
      - run: npm test
发布到 npm 注册中心 bash
# ~/.npmrc
@yourorg:registry=https://gitea.example.com/api/packages/yourorg/npm/
//gitea.example.com/api/packages/yourorg/npm/:_authToken=<token>

npm publish
API —— 创建仓库 bash
curl -X POST \
  -H "Authorization: token $GITEA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"my-repo","private":true}' \
  https://gitea.example.com/api/v1/user/repos

对比

vs GitHub GitHub 是托管的、精致的,私有仓库 $4-21/用户/月。Gitea 是 OSS、自托管,无限用户免费,仅 $5/月 VPS 成本。功能对等度高;Gitea 缺少 GitHub Copilot 集成和一些高级企业功能。
vs GitLab GitLab CE 功能丰富但很重 — 占用大量 RAM,设置复杂。Gitea 以 5% 的资源占用达到 80% 的功能。选 GitLab 用于完整 DevSecOps;选 Gitea 用于干净的 Git + CI + 注册中心服务器。
vs Forgejo Forgejo 是 Gitea 的社区友好分支(2022 年因治理问题分叉)。相同 UI、相同功能、大致相同的代码库。Pier 提供 Gitea;你可以通过自定义 Docker 模板安装 Forgejo。
vs Sourcehut、Gogs Sourcehut(sr.ht)是邮件驱动的极简主义 — 不同范式。Gogs 是 Gitea 在 2016 年分叉的原始项目,现在维护较少。

常见问题

Pier 部署哪个版本?
默认 `latest`(Gitea 1.22+)。特定版本如 `1.22` 和 `1.21` 是固定变体。
后端选 SQLite、MySQL 还是 Postgres?
对于个人 / 小团队 — SQLite 就够了且最简单。对于 10+ 用户或重度使用,旁边运行 Postgres(使用 `gitea-postgresql` 模板捆绑两者)。
如何运行 CI?
Gitea Actions 内置但需要 runner。生成 `gitea/act_runner` 容器,用 token 注册,Actions 工作流自动在 push 时触发。
Pier 如何处理 HTTPS?
在 Pier 的 Domains 标签中附加域名。Traefik 颁发 Let's Encrypt 证书;Gitea 的 `ROOT_URL` 自动设置为该域名。
git clone 的 SSH 访问?
Gitea 的 SSH 端口(默认 22,内部)需要通过 Traefik NAT(默认不做原始 TCP)或在主机级别暴露。最简单 — 使用 HTTPS 克隆和个人访问令牌。
如何从 GitHub 迁移?
Gitea 有内置的 GitHub 仓库导入器,包括 issue、PR、评论、里程碑、release 和 wiki。Settings → Migrations → Import from GitHub。
备份策略?
两部分 — SQLite/Postgres DB(Pier 按计划备份)和 `/data/git/repositories` 目录(rsync 卷,或 `gitea dump` 获取完整存档)。

相关服务

在你的 VPS 上部署

Gitea 是一个用 Go 编写的轻量级自托管 Git 服务。它看起来和工作起来像 GitHub — 仓库、PR、issue、CI 集成、代码审查、release — 但作为单一二进制或 100MB Docker 容器运行。个人开发者、OSS 项目和不希望代码在他人云端的企业使用。

部署此服务 →