极易搭建的自助Git服务Gogs

简介

什么是 Gogs ?

Gogs 是一个轻量级、自托管的 Git 服务,旨在提供简单、高效的 Git 版本控制解决方案。它允许用户在自己的服务器上快速部署 Git 仓库,便于团队协作和代码管理。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的所有平台,包括 LinuxmacOSWindows 和基于 ARM 的操作系统。

主要特点

  1. 易于安装: 用户只需运行适合其平台的二进制文件,或通过 DockerVagrant 等工具进行部署。
  2. 跨平台支持Gogs 可以在多种操作系统上运行,包括 WindowsMacLinuxARM 等。
  3. 轻量级Gogs 的最低系统要求非常低,可以在 Raspberry Pi 等低配置设备上运行,甚至一些用户在 NAS 设备上也能成功部署。
  4. 开源免费Gogs100% 开源的,遵循 MIT 许可证,源代码可在 GitHub 上获取,用户无需支付费用即可使用。

应用场景

  • 团队协作: Gogs 适合开发团队用于管理代码和项目,提供版本控制和协作功能。
  • 私有项目托管: 适合需要在内部网络中托管代码的企业和开发者,确保数据安全。
  • 轻量级解决方案: 对于资源有限的环境(如小型服务器或单板计算机),Gogs 提供了一个经济实惠的 Git 解决方案。

Gogs 以其简洁和高效的特性,成为了许多开发者和团队的理想选择。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 gogs ,选择第一个 gogs/gogs,版本选择 latest

本文写作时, latest 应该是 0.13.2 之后的版本;

从软件界面看是 0.14.0+dev

docker 文件夹中,创建一个新文件夹 gogs,并在其中建一个子文件夹 data

文件夹 装载路径 说明
docker/gogs/data /data 存放数据,包括仓库和配置文件

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口 说明
3234 3000 主服务端口,用于访问 GogsWeb 界面
3222 22 用于 SSH 访问,以便通过 Git 协议进行代码推送和拉取

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 新建文件夹 gogs 和 子目录
mkdir -p /volume1/docker/gogs/data

# 进入 gogs 目录
cd /volume1/docker/gogs

# 运行容器
docker run -d \
--restart unless-stopped \
--name gogs \
-p 3234:3000 \
-p 3222:22 \
-v $(pwd)/data:/data \
gogs/gogs:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
version: '3'

services:
gogs:
image: gogs/gogs:latest
container_name: gogs
restart: unless-stopped
ports:
- "3234:3000"
- "3222:22"
volumes:
- ./data:/data

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 gogs 和 子目录
mkdir -p /volume1/docker/gogs/data

# 进入 gogs 目录
cd /volume1/docker/gogs

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3234 就能看到向导界面

既然是简易,数据库就选择 SQLite3

修改

  • 域名: 填写 Docker 主机的主机名或 IP 地址,将默认的 localhost 改为 192.168.0.197
  • 应用 URL:填写公开的访问地址,将默认的 http://localhost:3000/ 改为 http://192.168.0.197:3234/

如果要启用 SSH 协议,要将 SSH 端口 改为 3222

立即安装

完成之后,会显示登录界面

第一次需要先注册

登录成功后的主界面

接下来就可以创建仓库了

如果是管理员,可以进入管理面板

参考文档

gogs/gogs: Gogs is a painless self-hosted Git service
地址:https://github.com/gogs/gogs

Gogs: A painless self-hosted Git service
地址:https://gogs.io/

gogs/gogs - Docker Image | Docker Hub
地址:https://hub.docker.com/r/gogs/gogs