群辉第三方套件就有Gitlab,实际上是通过Docker的方式安装的,只是“省去”了我们自己配置Docker的麻烦,但是后续的配置就不是那么简单了,充满了艰辛。

安装方式有很多,刚好群辉自带Gitlab套件,这应该是最方便的安装姿势了。其实这个套件是通过Docker来运行Gitlab的,而且这个Docker镜像是有些特别的,所有配置都是通过环境变量来完成的,我尝试进入终端,发现没有常用的gitlab-ctl、gitlab-rails命令,有些地方需要用到,还是很不方便的,gitlab-rails后来我找到了,后面用到了再说。

进入正题,讲讲安装步骤:

1. 安装Docker套件

套件中心搜索Docker安装即可,没什么需要设置的。

2. 安装Gitlab套件

套件中心搜索GitLab安装,如果没有安装Docker会提示你先安装Docker,我们已经提前安装过了,就不会有提示。

安装前需要先设置好一些环境变量。

设置端口号:

配置端口号

配置域名和电子邮件:

配置域名和邮箱

配置SMTP服务器:

配置SMTP1

配置SMTP2

最终确认:

最终确认

配置完成后就会开始安装了,这个过程看网速,需要下载3个Docker镜像,大小累计2.2GB左右。

众所周知,大陆因为某些原因,访问外网非常之慢,DockerHub刚好在国外,耐心点骚年,因为很有可能下载失败要重新下载的!

安装完成后我们可以看下Docker,3个镜像创建了3个容器。

Docker镜像

Docker容器

3. 添加用户

第一次访问系统,可以点击应用图标Docker GitLab,或者直接输入网址http://192.168.88.198:30000来访问,其中IP需要换成你群辉的IP,端口号换成你设置的GitLab的端口号,如果你没有改的话默认为30000。

进入页面后,会提示你设置密码,这个密码是root账户的密码,设置完成后以root为用户名,加你刚刚设置的密码登录。

点击顶部导航栏的扳手图标,在左侧导航栏里点击Users,点击右上角New User按钮。

新建用户

Account信息是必填的,其他可以随意,最后点击的Create User

你会发现这里是没法设置密码的,那么密码怎么办呢?Reset link will be generated and sent to the user. User will be forced to set the password on first sign in.重置密码的链接将被发送给用户,用户第一次登录将被强制设置密码。

但是用户并没有收到邮件!

系统的功能其实慢慢摸索就好了,之所以这里简单介绍一下如何添加用户,就是因为有可能遇到无法发送邮件的问题。

4. 解决可能无法发送邮件问题

之前演示的邮箱是我胡乱填的,实际上我使用的完美邮箱提供的SMTP服务,然而根本无法发送邮件。

除了可以通过之前注册时候会发送邮件来测试外,还有一种测试邮件发送方式是使用gitlab-rails console进入GitLab的控制台,前面提到了,这个Docker镜像没有这个命令,实际上这个命令是在别的位置的:/home/git/gitlab/bin/rails。我们打开synology_gitlab容器的详情页,在终端机里新建一个终端,进入/home/git/gitlab/bin目录下,执行./rails console命令进入GitLab的控制台,测试邮件发送的命令如下,master@example.com换成实际的收件邮箱,title,content分别代表邮件的标题和正文:

Notify.test_email('master@example.com', 'title', 'content').deliver_now

测试发送邮件

如果没有出现报错信息的话,说明邮件就是发送出去了,附一张发送成功截图:

邮件发送成功

QQ邮箱

如果没有成功,说明你和我一样,需要改配置文件。

先停止套件,然后进入Docker打开synology_gitlab配置页面如下:

配置环境变量

涉及到的环境变量如下,有则在原有的基础上更改,没有则添加。

变量说明
SMTP_ENABLEDtrue是否启用SMTP服务
SMTP_DOMAINmail.example.com邮箱域名
SMTP_HOSTsmtp.example.comsmtp服务器域名或IP地址
SMTP_PORT25smtp服务端口
SMTP_USERmaster@example.comsmpt用户名,即邮箱用户名
SMTP_PASSxch923hds9024hsmtp密码,一般和邮箱密码不同,看你实际的smtp服务商如何提供的
SMTP_OPENSSL_VERIFY_MODEnoneOpenSSL验证方式,可为nonepeerclient_oncefail_if_no_peer_cert
SMTP_TLSfalse是否使用TLS(这个变量没有需要自己添加)
GITLAB_EMAILmaster@example.com一定要与SMTP_USER一致(也可以不一致,后面讲)

启用GitLab套件后,再次进入终端测试,没有成功就禁用,重新配置,启用……直到成功为止,我在这卡了两个小时,最终解决的。

问题出在TLS验证和端口的问题上,所以我上面的解决方法是不要TLS验证,使用非TLS端口。以后有空慢慢研究如何启用TLS。

补充一点:SMTP_USER与GITLAB_EMAIL为何要一致?因为发件的时候需要smtp用户名和发件人一致,我们没有指定发件人,发件人就默认使用GITLAB_EMAIL。所以如果你希望GitLab的邮箱和发件账户不同,需要添加一个变量GITLAB_EMAIL_REPLY_TO,这个变量值与SMTP_USER保持一直,GITLAB_EMAIL的值就可以随意设置了。

另外默认发件人名称显示为GitLab,可以通过变量GITLAB_EMAIL_DISPLAY_NAME来自定义哦!

5. 开启HTTPS

这里体现了群辉的强大,原本我是打算直接通过Frp设置HTTPS内网穿透,内部还是HTTP,但是Frp配置证书还是需要费点事的。

我使用了另一种方案:通过群辉内置的Nginx反向代理,对外提供HTTPS,再通过Frp映射到公网。

有人会问,为啥我中间要多一个群辉的反向代理?因为方便配置证书!群辉控制面板中安全性里面有个证书选项,可以直接从Let's Encrypt获取证书,并且分配给群辉自带的反向代理,多方便呀!

HTTP转HTTPS

在应用程序 > 应用程序门户 > 反向代理服务器规则中添加:

配置方向代理

在连接性 > 安全性 > 证书中申请证书:

获取证书

特别注意的是:这里填写的域名必须解析到具体的网站并且可以访问(80和43端口),不然证书是下不来的!可以临时解析到一个可访问的主机,或者先配置好Frp的映射再申请证书。

配置证书给刚刚添加的方向代理规则:

配置证书

Frp客户端添加映射:

[gitlab_https]
type = https
local_ip = 192.168.88.198
local_port = 443
custom_domains = gitlab.example.com
use_encryption = true
use_compression = true

DNS解析到Frp服务端,此时应该可以通过gitlab.example.com访问我们的应用了。补充一个我家的网络拓扑图。

家庭网络拓扑图

6. 克隆地址修改

还有一个遗留问题,我们访问是HTTPS没错了,但是页面提供的地址仍是原来的带端口号HTTP地址。我们创建一个demo试试看。

新建Demo

停止套件,Docker内更改环境变量:

  • GITLAB_HOST:改为Frp映射的域名,我们改为gitlab.example.com
  • GITLAB_PORT:改为你对外提供服务的端口,我们改为443
  • GTILAB_HTTPS:需要添加,值为true

改完启动刷新,再看一下是不是既显示HTTPS协议链接,也没有端口号了。

刷新Demo

总结:我尝试在Docker套件打开镜像的地址(synology/gitlab)看看有没有使用文档,发现空空如也,其实这个项目的源头是https://github.com/sameersbn/docker-gitlab,文档非常详细,如果早点找到这个文档也不至于走那么多弯路。

最后修改:2020 年 09 月 22 日 09 : 44 AM