最近想要搭建一个私人代码仓库,所以瞄上了家里的群晖,在群晖里搭建一个gitlab是一个不错的选择!但是在搭建的过程中,发现网上的教程都不是很全面,可能是因为版本不同,总是有这样那样的问题。
本文是根据我实际搭建过程,编写的一个完整教程,一方面是做个记录,另一方面也是希望能够帮助其他人快速的把服务搭建起来。
一、安装
1.1 安装docker
首先你的群晖需要支持docker,不然只能使用其他方法安装了,在套件中心查找并安装docker。
1.2 安装gitlab
docker安装好后打开,在注册表中搜索gitlab
并下载镜像gitlab/gitlab-ce
,选择latest
1.3 配置gitlab
现在完成之后,就可以在映像中看到刚才下载的镜像,然后双击镜像安装,进入高级设置
1.3.1 存储空间
这里需要提前准备好用来映射的文件夹,分别为 logs-存储日志、config-配置、warehose-数据信息文件
1.3.2 端口设置
这里的本地端口都需要改一下,不然会和群晖的端口冲突,其中22端口是用于ssh访问的,443端口用于https访问,80端口用于http访问,我这里统一修改了一下本地端口,如果你的群里启用了防火墙,需要在防火墙中开放这几个端口
1.4 启动gitlab
上面的配置完就可以启动容器了,容器启动过程时间比较长,请耐心等待,等内存保持到一个稳定的数值时就可以访问了
访问地址为 nas的IP:配置的本地端口号,比如: http://192.168.1.11:3080
如果访问出现502则说明服务还没有完全启动,再等一会就可以了
1.5 登录gitlab
打开后,就会看到下面的页面,默认用户为root,密码我们去上面配置的docker/gitlab/config
中查看
打开文件夹,找到这个文件,使用文本编辑器打开
我们可以看到Password后面的就是默认密码
1.6 改成中文界面
登录进来后默认是英文界面,点击头像进入偏好设置
拉到最后,看到Localization本地化,在Language下拉菜单中找到简体中文,保存后刷新界面就变成中文了
二、配置访问地址
2.1 ssh访问地址
默认情况下,ssh和http克隆地址都是容器名称,我们需要修改一下配置才能正常的访问代码仓库
2.1.1 重新生成配置
首先我们回到容器,选择详情
在终端机中,点击新增,进入bash命令行工具,输入gitlab-ctl reconfigure
回车,重新生成配置
2.1.2 修改yaml文件
继续在bash命令行工具,输入如下命令,打开yaml文件
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
找到下面的配置,修改host、port等配置项目,注意port是上面自定义的本地端口
## GitLab settings
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: 192.168.1.11 # 群晖的IP
port: 3080 # docker配置的本地端口
2.1.3 修改gitlab.rb配置文件
在群晖的文件管理器中找到docker/gitlab/config
文件夹,找到gitlab.rb
文件,用文本编辑器打开,找到并修改以下内容
external_url 'http://192.168.1.11:3080'
gitlab_rails['gitlab_ssh_host'] = '192.168.1.11'
gitlab_rails['gitlab_shell_ssh_port'] = 3022
# 设置时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
2.1.4 重启
保存退出后,重启gitlab,在bash命令行工具中输入下面的命令并回车
gitlab-ctl restart
等待一段时间,重启完成。
2.2 SSH 方式访问提示 SSH ssh_exchange_identification: Connection closed by remote host
上面配置完成后,ssh方式无法访问时,会提示 SSH ssh_exchange_identification: Connection closed by remote host
,这是因为gitlab默认是22端口访问的,我们需要修改成与我们设置的本地端口一致。
再次进入docker bash命令行工具,打开sshd_config文件
vi /etc/ssh/sshd_config
找到以下内容,并修改
去除井号,并修改为3022
保存退出,然后执行service ssh restart
命令,重启ssh服务。
然后就可以愉快的使用gitlab了。