Gitea
无痛自托管 Git 服务 —— 像 GitHub,但是你的。
Gitea 是一个用 Go 编写的轻量级自托管 Git 服务。它看起来和工作起来像 GitHub — 仓库、PR、issue、CI 集成、代码审查、release — 但作为单一二进制或 100MB Docker 容器运行。个人开发者、OSS 项目和不希望代码在他人云端的企业使用。
使用 Pier 部署
- 1 打开 Pier 控制台,点击 Add service。
- 2 从模板列表中选择 Gitea。
- 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
- 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 无法到达的隔离环境。
代码示例
git remote add origin https://gitea.example.com/yourname/repo.git
git push -u origin main # .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 # ~/.npmrc
@yourorg:registry=https://gitea.example.com/api/packages/yourorg/npm/
//gitea.example.com/api/packages/yourorg/npm/:_authToken=<token>
npm publish 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 部署哪个版本?
后端选 SQLite、MySQL 还是 Postgres?
如何运行 CI?
Pier 如何处理 HTTPS?
git clone 的 SSH 访问?
如何从 GitHub 迁移?
备份策略?
相关服务
在你的 VPS 上部署
Gitea 是一个用 Go 编写的轻量级自托管 Git 服务。它看起来和工作起来像 GitHub — 仓库、PR、issue、CI 集成、代码审查、release — 但作为单一二进制或 100MB Docker 容器运行。个人开发者、OSS 项目和不希望代码在他人云端的企业使用。
部署此服务 →