NAS还有很多扩展玩法,这次和大家介绍下如何搭建自己的gitlab服务器
1. NAS中gitlab的安装
1.1 安装docker
在套件中心先安装Docker。
1.2 docker中下载gitlab(这一步很多版本会查询不到注册表,1.3章节附解决方案)
docker下载后打开,注册表搜索:gitlab,双击下载,选latest
1.3 NAS中docker注册表查询失败的解决办法
a.常用的解决方法(但有一定局限性,至少不适用于我)
修改国内加速镜像地址和修改DNS,具体步骤如下:
1) 群晖docker——注册表——设置——选中Docker Hub——编辑——启用注册表镜像——在里面填写国内加速镜像地址:https://registry.docker-cn.com,然后重启docker
2) 控制面板——网络——手动配置DNS服务器,在里面填写国内公用DNS,一般用阿里的或者114
如果这两步做完docker注册表就可以正常使用,接下来就不用再看啦,如果这两步做完仍然解决不了问题,那接下来看b方案。
b. SSH方案
图形界面无法加载,但是通过SSH可以顺利拉取镜像,只要能够顺利拉取镜像,再在图形界面进行部署,就方便多了(部署也可以在SSH里面进行,这里介绍比较方便的图形部署)。
1) SSH连接到NAS
2) 进入root模式
sudo -i
下载最新版gitlabdocker pull gitlab/gitlab-ce:latest
然后返回NAS的docker里的映像,你就会发现刚才拉取的镜像已经在里面了,接下来你就可以愉快的通过图形界面进行容器的安装了
1.4 安装镜像
在映像栏,双击gitlab-ce镜像进行安装。
1.5 路径配置
点击高级设置——存储空间——添加文件夹
这里需要添加对应的文件夹到docker目录下,可以在file station中,打开docker目录,创建新的gitlab目录,然后在gitlab目录下,分别创建logs,config,data来存储日志、配置和数据信息文件。装载路径手动填写。(我这里之前配置过,主要截文件路径供参考)
1.6 端口配置
设置完路径后点击端口设置,设置一个本地端口,这里指定80容器端口对应本地端口1080,22端口对应的本地端口改为8886。避免自动获取而带来端口变化而导致的访问问题。
1.7 启动容器
其他的暂时不用改,直接点击应用,并启动这个docker。正常需要等待一段启动时间,内存飙升到一个比较稳定的数值时,正常就可以访问gitlab的页面了。
1.8 访问gitlab
浏览器输入NAS的ip地址+刚才配置的本地端口号,比如192.168.0.123:1080,这样来访问gitlab,如果此时出现:
错误502,这表示服务还没起来,可以再等等。
1.9 配置密码
首次登录,会要求设置管理员密码,可以回到NAS的docker/config目录下,找到名为initial_root_password的文件,里面会有初始密码
输入后就可以本地正常访问gitlab了,但我们通常要实现外部网络访问,在公司或家里都可以使用,所以接着往下看。
2. 将gitlab加入到反向代理列表:(反向代理参考我前面的文章,链接附在结尾)
2.1 配置frpc
SSH连接到NAS,进入frpc文件目录
1 | cd /root/data/docker_data/frpc |
增加下面配置,remote_port可以根据自己喜好更改,不与其他端口冲突即可
1 | [Gitlab] |
查看frpc进程
ps -aux|grep frpc|grep -v grep
kill掉进程
2.2 重启frpc
nohup ./frpc -c ./frpc.ini &
此时可以通过云服务器远程访问gitlab:http://IP:8888
虽然可以访问配置仓库,但发现无法直接clone项目,地址无法被识别,需要修改配置文件
3. 解决无法clone代码问题(SSH、HTTP全支持)
解决思路有两种,如果NAS有域名,可以将地址配置为域名。但本人由于国内域名备案较麻烦,还未申请。(国外域名托管后经常被疯狂攻击,后来就不怎么使用了)
这里介绍第二种方案,修改配置文件
依然是在终端设置,SSH到NAS
sudo -i
进入config目录
1 | cd /volume1/docker/gitlab/config |
增加extern_url为云服务器IP + 8888端口(本地1080端口对应的8888,分配给HTTP克隆代码)
IP填写对应的云服务器IP,ssh的port设为上面8886端口对应的8866端口
1 | external_url 'http://IP:8888/' |
重启容器后可以用HTTP拉取代码了,但SSH方式访问会提示 SSH ssh_exchange_identification: Connection closed by remote host。这是因为gitlab默认是22端口访问的,我们需要修改成与我们设置的本地端口一致。
4. 解决无法通过SSH直接克隆代码问题
首先我们回到容器,选择详情
在终端机中,点击新增,进入bash命令行工具,输入gitlab-ctl reconfigure回车,重新生成配置
打开sshd_config文件
vi /etc/ssh/sshd_config
找到以下内容,并修改
去除井号,并将22修改为8886
保存退出,然后执行service ssh restart命令,重启ssh服务。
重启docker镜像,这时可以通过ssh的8866端口拉取代码了!
5. 结束语
本文主要介绍在NAS中搭建属于自己的gitlab服务器,关于git的具体使用以及ssh key的配置等这里没做介绍,望自行了解