群辉第三方套件就有Gitlab,实际上是通过Docker的方式安装的,只是“省去”了我们自己配置Docker的麻烦,但是后续的配置就不是那么简单了,充满了艰辛。 安装方式有很多,刚好群辉自带Gitlab套件,这应该是最方便的安装姿势了。其实这个套件是通过Docker来运行Gitlab的,而且这个Docker镜像是有些特别的,所有配置都是通过环境变量来完成的,我尝试进入终端,发现没有常用的gitlab-ctl、gitlab-rails命令,有些地方需要用到,还是很不方便的,gitlab-rails后来我找到了,后面用到了再说。 进入正题,讲讲安装步骤: ### 1. 安装Docker套件 套件中心搜索Docker安装即可,没什么需要设置的。 ### 2. 安装Gitlab套件 套件中心搜索GitLab安装,如果没有安装Docker会提示你先安装Docker,我们已经提前安装过了,就不会有提示。 安装前需要先设置好一些环境变量。 设置端口号: ![配置端口号][1] 配置域名和电子邮件: ![配置域名和邮箱][2] 配置SMTP服务器: ![配置SMTP1][3] ![配置SMTP2][4] 最终确认: ![最终确认][5] 配置完成后就会开始安装了,这个过程看网速,需要下载3个Docker镜像,大小累计2.2GB左右。 > 众所周知,大陆因为某些原因,访问外网非常之慢,DockerHub刚好在国外,耐心点骚年,因为很有可能下载失败要重新下载的! 安装完成后我们可以看下Docker,3个镜像创建了3个容器。 ![Docker镜像][6] ![Docker容器][7] ### 3. 添加用户 第一次访问系统,可以点击应用图标**Docker GitLab**,或者直接输入网址`http://192.168.88.198:30000`来访问,其中IP需要换成你群辉的IP,端口号换成你设置的GitLab的端口号,如果你没有改的话默认为30000。 进入页面后,会提示你设置密码,这个密码是root账户的密码,设置完成后以root为用户名,加你刚刚设置的密码登录。 点击顶部导航栏的扳手图标,在左侧导航栏里点击**Users**,点击右上角**New User**按钮。 ![新建用户][8] **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分别代表邮件的标题和正文: ```shell Notify.test_email('master@example.com', 'title', 'content').deliver_now ``` ![测试发送邮件][9] 如果没有出现报错信息的话,说明邮件就是发送出去了,附一张发送成功截图: ![邮件发送成功][10] ![QQ邮箱][11] 如果没有成功,说明你和我一样,需要改配置文件。 先停止套件,然后进入Docker打开synology_gitlab配置页面如下: ![配置环境变量][12] 涉及到的环境变量如下,有则在原有的基础上更改,没有则添加。 | 变量 | 值 | 说明 | | ------------------------ | ------------------ | ------------------------------------------------------------ | | SMTP_ENABLED | true | 是否启用SMTP服务 | | SMTP_DOMAIN | mail.example.com | 邮箱域名 | | SMTP_HOST | smtp.example.com | smtp服务器域名或IP地址 | | SMTP_PORT | 25 | smtp服务端口 | | SMTP_USER | master@example.com | smpt用户名,即邮箱用户名 | | SMTP_PASS | xch923hds9024h | smtp密码,一般和邮箱密码不同,看你实际的smtp服务商如何提供的 | | SMTP_OPENSSL_VERIFY_MODE | none | OpenSSL验证方式,可为`none`、`peer`、`client_once`、`fail_if_no_peer_cert` | | SMTP_TLS | false | 是否使用TLS(这个变量没有需要自己添加) | | GITLAB_EMAIL | master@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][13] 在应用程序 > 应用程序门户 > 反向代理服务器规则中添加: ![配置方向代理][14] 在连接性 > 安全性 > 证书中申请证书: ![获取证书][15] > 特别注意的是:这里填写的域名必须解析到具体的网站并且可以访问(80和43端口),不然证书是下不来的!可以临时解析到一个可访问的主机,或者先配置好Frp的映射再申请证书。 配置证书给刚刚添加的方向代理规则: ![配置证书][16] Frp客户端添加映射: ```ini [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访问我们的应用了。补充一个我家的网络拓扑图。 ![家庭网络拓扑图][17] ### 6. 克隆地址修改 还有一个遗留问题,我们访问是HTTPS没错了,但是页面提供的地址仍是原来的带端口号HTTP地址。我们创建一个demo试试看。 ![新建Demo][18] 停止套件,Docker内更改环境变量: - GITLAB_HOST:改为Frp映射的域名,我们改为gitlab.example.com - GITLAB_PORT:改为你对外提供服务的端口,我们改为443 - GTILAB_HTTPS:需要添加,值为true 改完启动刷新,再看一下是不是既显示HTTPS协议链接,也没有端口号了。 ![刷新Demo][19] 总结:我尝试在Docker套件打开镜像的地址([synology/gitlab](https://registry.hub.docker.com/r/synology/gitlab))看看有没有使用文档,发现空空如也,其实这个项目的源头是[https://github.com/sameersbn/docker-gitlab](https://github.com/sameersbn/docker-gitlab),文档非常详细,如果早点找到这个文档也不至于走那么多弯路。 [1]: https://www.simaek.com/usr/uploads/2020/08/1338688872.png [2]: https://www.simaek.com/usr/uploads/2020/08/4287811787.png [3]: https://www.simaek.com/usr/uploads/2020/08/4075207055.png [4]: https://www.simaek.com/usr/uploads/2020/08/3968639606.png [5]: https://www.simaek.com/usr/uploads/2020/08/1210053736.png [6]: https://www.simaek.com/usr/uploads/2020/08/1321317602.png [7]: https://www.simaek.com/usr/uploads/2020/08/3808677260.png [8]: https://www.simaek.com/usr/uploads/2020/08/3908297146.png [9]: https://www.simaek.com/usr/uploads/2020/08/2566720236.png [10]: https://www.simaek.com/usr/uploads/2020/08/2625590271.png [11]: https://www.simaek.com/usr/uploads/2020/08/3994050624.png [12]: https://www.simaek.com/usr/uploads/2020/08/2315783698.png [13]: https://www.simaek.com/usr/uploads/2020/08/2236599832.png [14]: https://www.simaek.com/usr/uploads/2020/08/3589282271.png [15]: https://www.simaek.com/usr/uploads/2020/08/134031427.png [16]: https://www.simaek.com/usr/uploads/2020/08/3667093290.png [17]: https://www.simaek.com/usr/uploads/2020/08/4112052988.png [18]: https://www.simaek.com/usr/uploads/2020/08/1924554203.png [19]: https://www.simaek.com/usr/uploads/2020/08/2260743190.png Loading... 群辉第三方套件就有Gitlab,实际上是通过Docker的方式安装的,只是“省去”了我们自己配置Docker的麻烦,但是后续的配置就不是那么简单了,充满了艰辛。 安装方式有很多,刚好群辉自带Gitlab套件,这应该是最方便的安装姿势了。其实这个套件是通过Docker来运行Gitlab的,而且这个Docker镜像是有些特别的,所有配置都是通过环境变量来完成的,我尝试进入终端,发现没有常用的gitlab-ctl、gitlab-rails命令,有些地方需要用到,还是很不方便的,gitlab-rails后来我找到了,后面用到了再说。 进入正题,讲讲安装步骤: ### 1. 安装Docker套件 套件中心搜索Docker安装即可,没什么需要设置的。 ### 2. 安装Gitlab套件 套件中心搜索GitLab安装,如果没有安装Docker会提示你先安装Docker,我们已经提前安装过了,就不会有提示。 安装前需要先设置好一些环境变量。 设置端口号: ![配置端口号][1] 配置域名和电子邮件: ![配置域名和邮箱][2] 配置SMTP服务器: ![配置SMTP1][3] ![配置SMTP2][4] 最终确认: ![最终确认][5] 配置完成后就会开始安装了,这个过程看网速,需要下载3个Docker镜像,大小累计2.2GB左右。 > 众所周知,大陆因为某些原因,访问外网非常之慢,DockerHub刚好在国外,耐心点骚年,因为很有可能下载失败要重新下载的! 安装完成后我们可以看下Docker,3个镜像创建了3个容器。 ![Docker镜像][6] ![Docker容器][7] ### 3. 添加用户 第一次访问系统,可以点击应用图标**Docker GitLab**,或者直接输入网址`http://192.168.88.198:30000`来访问,其中IP需要换成你群辉的IP,端口号换成你设置的GitLab的端口号,如果你没有改的话默认为30000。 进入页面后,会提示你设置密码,这个密码是root账户的密码,设置完成后以root为用户名,加你刚刚设置的密码登录。 点击顶部导航栏的扳手图标,在左侧导航栏里点击**Users**,点击右上角**New User**按钮。 ![新建用户][8] **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分别代表邮件的标题和正文: ```shell Notify.test_email('master@example.com', 'title', 'content').deliver_now ``` ![测试发送邮件][9] 如果没有出现报错信息的话,说明邮件就是发送出去了,附一张发送成功截图: ![邮件发送成功][10] ![QQ邮箱][11] 如果没有成功,说明你和我一样,需要改配置文件。 先停止套件,然后进入Docker打开synology_gitlab配置页面如下: ![配置环境变量][12] 涉及到的环境变量如下,有则在原有的基础上更改,没有则添加。 | 变量 | 值 | 说明 | | ------------------------ | ------------------ | ------------------------------------------------------------ | | SMTP_ENABLED | true | 是否启用SMTP服务 | | SMTP_DOMAIN | mail.example.com | 邮箱域名 | | SMTP_HOST | smtp.example.com | smtp服务器域名或IP地址 | | SMTP_PORT | 25 | smtp服务端口 | | SMTP_USER | master@example.com | smpt用户名,即邮箱用户名 | | SMTP_PASS | xch923hds9024h | smtp密码,一般和邮箱密码不同,看你实际的smtp服务商如何提供的 | | SMTP_OPENSSL_VERIFY_MODE | none | OpenSSL验证方式,可为`none`、`peer`、`client_once`、`fail_if_no_peer_cert` | | SMTP_TLS | false | 是否使用TLS(这个变量没有需要自己添加) | | GITLAB_EMAIL | master@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][13] 在应用程序 > 应用程序门户 > 反向代理服务器规则中添加: ![配置方向代理][14] 在连接性 > 安全性 > 证书中申请证书: ![获取证书][15] > 特别注意的是:这里填写的域名必须解析到具体的网站并且可以访问(80和43端口),不然证书是下不来的!可以临时解析到一个可访问的主机,或者先配置好Frp的映射再申请证书。 配置证书给刚刚添加的方向代理规则: ![配置证书][16] Frp客户端添加映射: ```ini [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访问我们的应用了。补充一个我家的网络拓扑图。 ![家庭网络拓扑图][17] ### 6. 克隆地址修改 还有一个遗留问题,我们访问是HTTPS没错了,但是页面提供的地址仍是原来的带端口号HTTP地址。我们创建一个demo试试看。 ![新建Demo][18] 停止套件,Docker内更改环境变量: - GITLAB_HOST:改为Frp映射的域名,我们改为gitlab.example.com - GITLAB_PORT:改为你对外提供服务的端口,我们改为443 - GTILAB_HTTPS:需要添加,值为true 改完启动刷新,再看一下是不是既显示HTTPS协议链接,也没有端口号了。 ![刷新Demo][19] 总结:我尝试在Docker套件打开镜像的地址([synology/gitlab](https://registry.hub.docker.com/r/synology/gitlab))看看有没有使用文档,发现空空如也,其实这个项目的源头是[https://github.com/sameersbn/docker-gitlab](https://github.com/sameersbn/docker-gitlab),文档非常详细,如果早点找到这个文档也不至于走那么多弯路。 [1]: https://www.simaek.com/usr/uploads/2020/08/1338688872.png [2]: https://www.simaek.com/usr/uploads/2020/08/4287811787.png [3]: https://www.simaek.com/usr/uploads/2020/08/4075207055.png [4]: https://www.simaek.com/usr/uploads/2020/08/3968639606.png [5]: https://www.simaek.com/usr/uploads/2020/08/1210053736.png [6]: https://www.simaek.com/usr/uploads/2020/08/1321317602.png [7]: https://www.simaek.com/usr/uploads/2020/08/3808677260.png [8]: https://www.simaek.com/usr/uploads/2020/08/3908297146.png [9]: https://www.simaek.com/usr/uploads/2020/08/2566720236.png [10]: https://www.simaek.com/usr/uploads/2020/08/2625590271.png [11]: https://www.simaek.com/usr/uploads/2020/08/3994050624.png [12]: https://www.simaek.com/usr/uploads/2020/08/2315783698.png [13]: https://www.simaek.com/usr/uploads/2020/08/2236599832.png [14]: https://www.simaek.com/usr/uploads/2020/08/3589282271.png [15]: https://www.simaek.com/usr/uploads/2020/08/134031427.png [16]: https://www.simaek.com/usr/uploads/2020/08/3667093290.png [17]: https://www.simaek.com/usr/uploads/2020/08/4112052988.png [18]: https://www.simaek.com/usr/uploads/2020/08/1924554203.png [19]: https://www.simaek.com/usr/uploads/2020/08/2260743190.png 最后修改:2023 年 08 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏