Gogs(Go Git Service)是一个使用 Go 编写的自助 Git 服务,旨在提供一个轻量级、易部署、高效的 Git 代码托管平台。它类似于 GitHub、GitLab,但更轻量,非常适合私有化部署、小型团队和嵌入式环境。下面是对 Gogs 的详细介绍:
一、Gogs 简介
-
名称来源:Gogs 是 “Go Git Service” 的缩写,使用 Go 语言开发,体积小、部署简单。
-
定位:轻量级 Git 服务,适合个人/小团队私有部署,资源占用低。
-
官网:Gogs: A painless self-hosted Git service
-
源码:GitHub - gogs/gogs: Gogs is a painless self-hosted Git service
二、Gogs 特点
特性 | 描述 |
---|---|
轻量快速 | 可在树莓派、ARM 等资源有限的设备运行 |
跨平台 | 支持 Windows、Linux、macOS 等平台 |
单文件运行 | 一个可执行文件搞定所有功能 |
内建 Web UI | 提供用户、组织、仓库管理的 Web 界面 |
支持多种数据库 | SQLite、MySQL、PostgreSQL |
内建 SSH / HTTP Git 支持 | 类似 GitHub 的克隆与推送体验 |
支持 Webhook / 服务集成 | 可用于 CI/CD |
支持 LDAP、SMTP 邮箱通知等 | 企业级常用功能 |
三、Gogs 核心组件
-
Git 存储系统:使用系统 Git 管理仓库。
-
Web UI 界面:用 HTML+Go 模板实现,支持用户注册、仓库浏览、提交查看等。
-
SSH / HTTPS 支持:可通过 SSH key 或 HTTP 认证方式访问仓库。
-
数据库支持:用于保存用户信息、仓库元数据、Issues、Wiki 等。
四、Gogs 与 Gitea 的关系
-
Gitea 是 Gogs 的一个社区分支(Fork),因为 Gogs 的开发长期由个人主导,Gitea 社区因需求推动形成并快速发展。
-
Gitea 相比 Gogs 功能更多,社区更活跃。
-
若希望更活跃的社区支持,可以选择 Gitea。
五、部署方式
1. 下载运行
wget https://dl.gogs.io/0.12.10/gogs_0.12.10_linux_amd64.tar.gz
tar -zxvf gogs_0.12.10_linux_amd64.tar.gz
cd gogs
./gogs web
-
首次运行后访问
http://<your-ip>:3000
进行 Web 配置
2. Docker 部署
docker run --name=gogs -p 10022:22 -p 3000:3000 \
-v /var/gogs:/data gogs/gogs
-
默认 web 端口为 3000,SSH 为 22(映射为宿主机 10022)
六、配置文件说明(custom/conf/app.ini
)
关键配置项:
[server]
DOMAIN = your.domain.com
HTTP_PORT = 3000
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
DISABLE_SSH = false
START_SSH_SERVER = true
SSH_PORT = 22
七、典型使用流程
-
启动 Gogs 服务
-
通过 Web UI 创建管理员账号
-
创建用户 / 组织
-
创建 Git 仓库
-
推送代码到 Gogs
git remote add origin git@your.domain.com:user/repo.git
git push -u origin master
八、安全性
-
支持 SSH 公钥管理
-
支持两步验证(2FA)
-
支持 Webhook Token 校验
-
支持反向代理部署(Nginx、Caddy)
九、常见用途
场景 | 说明 |
---|---|
企业内部私有 Git 平台 | 替代 GitHub/GitLab |
嵌入式设备 Git 同步 | 可运行在树莓派、工业电脑上 |
教学和团队协作 | 创建轻量级 Git 练习环境 |
自动化 DevOps | 搭配 Jenkins / Drone 实现 CI/CD |
十、总结对比
项目 | Gogs | Gitea | GitLab |
---|---|---|---|
体积 | 小 | 中 | 大 |
依赖 | 少 | 少 | 多(Ruby、Postgres、Redis) |
部署 | 非常简单 | 简单 | 复杂 |
功能 | 基本够用 | 比较丰富 | 最全面 |
适用 | 个人、小团队 | 中小型团队 | 企业级、大型组织 |