Gogs: 打造属于你自己的轻量级 Git 服务

在软件开发的世界里,Git 已经成为版本控制的事实标准。GitHub、GitLab 等平台提供了强大的托管服务,但有时候,我们需要一个完全属于自己的私有 Git 仓库------可能是为了代码安全,可能是为了定制化需求,可能是为了集成到现有服务中,也可能只是想在自己的服务器上搭建一个个人代码库。开源gitlab有点重,最近我在GitHub上发现了一个轻量级项目Gogs

什么是 Gogs?

Gogs 是一个用 Go 语言编写的自助 Git 托管服务。它的目标是以最简单、最轻松的方式搭建一个简单、稳定且可扩展的 Git 服务。得益于 Go 语言的跨平台特性,Gogs 可以在 Linux、macOS、Windows 以及基于 ARM 的系统上以独立的二进制文件运行。

该项目在github上已有47.5k star

github地址:github.com/gogs/gogs

文档地址: gogs.io/

为什么选择 Gogs?

轻量级,低资源占用

Gogs 最吸引人的特点就是轻量。有人在仅有 64MB 内存的 Docker 容器中运行 Gogs!对于团队协作,2 个 CPU 核心和 512MB 内存就足够起步了。

功能丰富,不输大厂

别看 Gogs 轻量,该有的功能一个都不少:

  • 用户面板:用户仪表板、个人资料和活动时间线
  • 多协议访问:支持 SSH、HTTP 和 HTTPS 协议访问仓库
  • 完整的管理功能:用户、组织和仓库管理
  • Webhook:支持 Slack、Discord、钉钉等
  • Git 钩子:Git hooks、部署密钥和 Git LFS
  • 协作功能:工单(Issues)、合并请求(Pull Requests)、Wiki、受保护分支
  • 仓库迁移:从其他代码托管平台迁移和镜像仓库
  • Web 编辑器:在线编辑仓库文件和 Wiki
  • 多格式渲染:支持 Jupyter Notebook 和 PDF 渲染
  • 多认证方式:SMTP、LDAP、反向代理、GitHub.com、GitHub Enterprise,支持两步验证
  • 多语言支持:超过 31 种语言的本地化

数据库支持丰富

Gogs 支持多种数据库后端:PostgreSQL、MySQL、SQLite3,以及任何支持这些协议的数据库。

Docker 部署:5 分钟快速上手

以下是Docker具体的部署步骤:

第一步:拉取镜像

bash 复制代码
docker pull gogs/gogs

第二步:创建docker-compose.yml文件

创建一个部署目录gogs,在该目录下创建docker-compose.yml文件,内容如下:

yaml 复制代码
services:
  gogs:
    image: gogs/gogs
    container_name: gogs
    ports:
      - "10022:22"
      - "10880:3000"
    volumes:
      - ./data:/data
    restart: unless-stopped

这里解释一下各个参数的含义:

  • - "10022:22":将宿主机的 10022 端口映射到容器的 22 端口(SSH 服务)
  • - "10880:3000":将宿主机的 10880 端口映射到容器的 3000 端口(Web 服务)
  • - ./data:/data:将宿主机的 ./data 目录挂载到容器的 /data 目录

第三步:运行容器

复制代码
docker-compose up -d 

出现如下内容则说明启动成功

第四步:初始配置

启动容器后,通过浏览器访问 http://你的服务器IP:10880 进入安装页面。

我们需要先创建好所需要的数据库,我使用的是mysql

第五步:使用

使用相对来说比较简单,此处不多做讲解

常见问题与解决方案

1. 内置 SSH 服务器不推荐

在 Docker 容器内使用内置 SSH 服务器不被推荐。建议使用映射到宿主机的 SSH 端口(如示例中的 10022)。

其他方式部署

还有其他二进制包部署等方式,家人们可参考一下文章

使用 Gogs 搭建自己的 Git 服务器:blog.mynook.info/post/host-y...

结语

Gogs 是一个小而美的 Git 服务解决方案。无论你是想在个人服务器上搭建私有的代码仓库,还是为小团队提供一个轻量级的代码协作平台,Gogs 都是一个值得考虑的选择。

它的简洁并不意味着功能的缺失,相反,Gogs 在保持轻量的同时,提供了 Git 托管服务所需的核心功能。加上 Docker 的一键部署,你可以在几分钟内拥有一个属于自己的 Git 服务。

相关推荐
Mediary2 小时前
Git本地忽略文件夹,只拉取目标文件夹
git
MY_TEUCK7 小时前
【git工具篇】Git 常用实战手册:从基础命令到分支冲突解决(开发实战版)
大数据·git
幸运的大号暖贴8 小时前
解决Vibe Coding时Idea经常不自动git add问题
java·人工智能·git·intellij-idea·claudecode·opencode
摇滚侠9 小时前
如何打开 GitHub,GitHub 是基于 Git 版本控制系统的在线代码托管平台
git·github
MY_TEUCK10 小时前
【Git 实习生小白专用】:最安全、永不翻车、公司最爱 的标准版本控制工作流程
git·安全·github
donecoding11 小时前
第一次用 git worktree,连踩了三个坑(附无痛清理姿势)
git
spmcor11 小时前
解决 Git 中已跟踪目录无法被 .gitignore 忽略的问题
git
qcx2313 小时前
【AI Engineering · Harness 系列】02 确定性外壳 × 非确定性内核——git push 红线的故事
人工智能·git·prompt·agent·engineering·harness
水云桐程序员13 小时前
10 分钟 Git 上手教程
git