前言
我家的Synology Nas上也有gitlab包可以直接安装。
结果,不是安装失败,就是修复中,或是已启动了不能用。@@
还被朋友呛...
即然Synalogy Nas上的gitlab老是安装失败,山不转路转,
我就用官方的Docker image来跑私有仓库吧
官方文档连结:
https://docs.gitlab.com/omnibus/docker/
步骤
(前题,您的Synology NAS需设置可以SSH登录,这里我采公钥验证,并且透过ssh-agent日志密码了,因此没打密码。)
(题外话,我能用cc登录,是在~/.ssh/config中有类似的设置 ,192.168.100.1是我的Nas的IP位置)
下图中,Include方式有些旧版的Linux并不支持哦,贴出来供大家参考!
二、创建挂载所需的数据夹。
mkdir -p /volume1/docker/gitlab/config
mkdir -p /volume1/docker/gitlab/logs
mkdir -p /volume1/docker/gitlab/data
三、运行docker run命令,创建并运行容器。(前题,您的Synology NAS需支持Docker安装与运行,您安装好了)
docker run --detach \
--hostname git.ccc.tc \
--publish 127.0.0.1:3080:80 --publish 3022:22 \
--name gitlab \
--restart always \
--volume /volume1/docker/gitlab/config:/etc/gitlab \
--volume /volume1/docker/gitlab/logs:/var/log/gitlab \
--volume /volume1/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
在上方的例子中,我将web的port开在host的port 3080,并且使用本地的IP位置。
因为Synology有反向代理,可以走HTTPS,因此我不需要将没加密的HTTP公布到外面。
我们从Synalogy Nas上的「控制台」=>「应用进程入口」可以进行此设置。
我的规则如下:
如果您的Synalogy Nas也有设置防火墙,记得开启port 3443。
其实是可以弄另一个子域名,例如: gitlab.ccc.tc,就不需要额外的port 3443了。
不过只是随便测试,就不这么讲究啦。
启动与关闭
因为是单纯使用docker进行contianer的创建与运行。下次除非我们删了container,不然激活及停止只需透过。
docker start gitlab
或是
docker stop gitlab
关於设置
gitlab的设置就会存放在挂载的数据夹,gitlab.rb档在上方的docker命令中,我们使用的是标准的port 3080:80,会看到HTTP的连结是HTTP,非下方的HTTPS连结。
在Synology的Nas上,是使用HTTPS为入口的,而Container内是用HTTP,为了让GitLab显示正确的HTTPS协议,
在gitlab.rb档内,我进行设置如下:
external_url 'https://git.ccc.tc:3443'
但是,如果单纯上方的设置,会造成nginx启动失败,推测是没设置证书造成,没去深究了。再补上下方设置即可覆写gitlab的container启动时,nginx依然采用port 80非上方的external_url。
##! **Override only if you use a reverse proxy**
##! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html#setting-the-nginx-listen-port
# nginx['listen_port'] = nil
nginx['listen_port'] = 80
##! **Override only if your reverse proxy internally communicates over HTTP**
##! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html#supporting-proxied-ssl
nginx['listen_https'] = false
完成设置后,进入gitlab的container内
docker exec -ti gitlab bash
再进行设置档重载重作: (下方命令,是在gitlab的容器内运行的)
gitlab-ctl reconfigure
补充
我们知道git有多种的传输协议,除了http外也有ssh。在docker run时,已指定了port开在3022了。因此,当我们要采用SSH进行clone并且在非标准的连接埠时,最简单做法就是新建~/.ssh/config
Host cclab
Hostname git.ccc.tc
User git
Port 3022
这样,就可以经由ssh加上自定义的host名称进行clone罗。
git clone cclab:devin/testing.git
这是我朋友邀求创建的测试帐号(ironma/thor),私有仓库完成罗。
除了他自己外,另外两个使用者,我问说,谁要当管理者,他说他。
我说,好歹索尔也是个神,所以....私有仓库搞定罗。
下方即是创建的测试帐号..:D
Docker真是方便好用。D-Laravel也是....:p
No Comment
Post your comment