Gogs + Docker 建立自己的 Git 服务器

Github 的私有仓库是收费的,学生包申请很麻烦,就一直没去弄,至于国内的一些 Git 托管……请给云计算一点宽容。所以就利用 Gogs 搭建自己的 Git 服务器来托管一些个人项目。

演示地址(关闭注册,强制登录浏览,所以只有登陆页面)

已经改为使用 GitHub 私有仓库了,学校的邮箱申请秒过,自己维护感觉还是太麻烦了(囧

Gitlab or Gogs

Gitlab 对服务器的配置要求太高,手上的服务器全都是捡垃圾来的小鸡,所以就没有考虑。

Gogs 对配置基本没有要求,甚至只要一块树莓派就能运行,虽然说现在还有许多 bug ,Github 上那么多的 issue 和 pr 没解决。(不过反正是自己用,有什么问题忍忍就过去了

安装

我是利用 Docker 进行部署的,关于 Docker 有时间可能会写一篇文章安利下。总之,Docker 部署各种应用真是不要太简单,几行命令敲一敲就行了,不用关心宿主机的环境依赖。

如果还没主机上没有安装 Docker,可以看下 安装方法

拉取镜像

$ docker pull gogs/gogs

建立目录

$ mkdir -p /var/gogs

目录不一定是 /var/gogs,你也可以放在 /home

初始化

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

这里的 /var/gogs 需要改成上一步创建的目录,端口号 1002210080 可以换成其它的。

之后如果要管理 Gogs 就可以直接输

$ docker [start|stop|restart] gogs

配置

访问 http://<ip>:<port> 进行配置

配置中有几个参数是比较重要的:

  • Repository Root PathRun User :保持默认
  • Domain:改成你要设置的域名或 ip 地址,如 git.giuem.com
  • SSH PortHTTP Port :改为启动时暴露的端口,如 1002210080
  • Application URL:完整的访问地址,如 https://git.giuem.com

数据库我选择的是 SQLite3,考虑到内存占用,没有选择 MySQL,而且个人使用 SQLite3 足够了。

其他的配置可以 看这里,配置文件在 /var/gogs/gogs/conf/app.ini,改完配置重启 Docker 容器就行。

备份数据

Gitlab 误删数据库,所有的备份方法都失效的事件才发生不久。我也是吸取了教训,搭完 Gogs 立马写了个脚本定时备份。

目前采用的方案是每天凌晨自动打包 /var/gogs 目录下所有文件上传到 Dropbox,用的是 Dropbox Uploader

等过段时间再折腾下 rsync 就稳了。。

运行时资源占用图

资源占用图

后台界面

后台界面