本文永久链接: https://www.xtplayer.cn/git/gogs-install-update/

Gogs 是一款极易搭建的轻量级自助 Git 服务。

Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

功能特性

  • 支持活动时间线
  • 支持 SSH 以及 HTTP/HTTPS 协议
  • 支持 SMTP、LDAP 和反向代理的用户认证
  • 支持反向代理子路径
  • 支持用户、组织和仓库管理系统
  • 支持添加和删除仓库协作者
  • 支持仓库和组织级别 Web 钩子(包括 Slack 集成)
  • 支持仓库 Git 钩子和部署密钥
  • 支持仓库工单(Issue)、合并请求(Pull Request)、Wiki 以及保护分支
  • 支持迁移和镜像仓库以及它的 Wiki
  • 支持在线编辑仓库文件和 Wiki
  • 支持自定义源的 Gravatar 和 Federated Avatar
  • 支持 Jupyter Notebook
  • 支持邮件服务
  • 支持后台管理面板
  • 支持 MySQL、PostgreSQL、SQLite3、MSSQL 和 TiDB(实验性支持) 数据库
  • 支持多语言本地化(22 种语言)

系统要求

  • 最低的系统硬件要求为一个廉价的树莓派
  • 如果用于团队项目,建议使用 2 核 CPU 及 1GB 内存

浏览器支持

  • 请根据 Semantic UI 查看具体支持的浏览器版本。
  • 官方支持的最小 UI 尺寸为 1024*768,UI 不一定会在更小尺寸的设备上被破坏,但我们无法保证且不会修复。

安装配置

这里我们以 docker 容器方式单节点安装,只需要一条命令即可。在 https://github.com/gogs/gogs/tree/main/docker 此处可以查询镜像构建文件以及数据存储路径等参数。默认数据保存在 /data 目录下,所以在只需要在启动 docker 容器的时候通过卷映射的方式把数据映射到主机上即可。

docker run --restart always --name=gogs -tid -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs:0.12.3

git clone 代码的时候,可以通过 ssh 连接或者通过 http 连接。一般常用的是 http 连接方式,如果需要通过 ssh 连接,则这里需要把 22 端口映射出去。

接着访问 node ip + 端口 进入配置界面。

首次运行安装

Gogs 支持多种数据库,一般单机模式选择轻量级的 SQLite3 数据库,数据库文件路径建议保持默认。

应用基本设置

  • 应用名称: 可以随意设置

  • 仓库根目录:保持默认

  • 运行系统用户:保持默认

  • 域名

    Gogs 运行节点 IP 或者 域名或者 VIP

  • SSH 端口号

    这个端口需要设置为 docker -p 映射 22 到主机上的端口

  • HTTP 端口号

    这个端口需要设置为 docker -p 映射 3000 到主机上的端口

  • 应用 URL

    域名 + HTTP 端口号

  • 日志路径:保持默认

可选设置

  • 邮件服务设置

    如果 Gogs 节点可以访问互联网,或者有内部的邮件服务器,那么可以配置邮件服务,可以用来忘记密码的时候恢复密码。

  • 服务器和其它服务设置

    • 如果是离线环境,建议启用离线模式
    • Gravatar 头像国内拉取非常缓慢,建议禁用 Gravatar 服务
  • 管理员帐号设置

    可以在安装的时候创建一个管理员帐号,账号名称不能为 admin。或者在安装好之后手动注册,注册的第一个用户将自动获得管理员权限。

最后点击立即安装。

升级

升级方法很简单,只需要 docker pull 新的镜像,然后用相同的命令重新运行容器

docker pull gogs/gogs:0.12.x
docker stop gogs
docker rename gogs gogs-old
docker run --restart always --name=gogs -tid -p 10022:22 -p 10080:3000 -v /data/gogs:/data gogs/gogs:0.12.x

在升级完成后,确认没有问题后执行以下命令删除旧的容器:

docker rm -f gogs-old