Unraid安装GitLab记录
这个过程本来没打算写下来, 最开始以为在网上找个文章安装一下就行, 没想到折腾了好几个小时,为了以后省事整理一下.
安装环境和目标功能
- Unraid 6.11.1
- 安装的镜像: gitlab/gitlab-ce
因为nas有公网, 所以希望二级域名能访问仓库, 并且外网时http和ssh都可以拉取推送.
安装开始
1.安装应用并填写配置信息
-
应用商店搜索gitlab 安装 GitLab-CE镜像
-
配置容器的端口转发, 3个可以随意填写.如下:
-
点击应用安装即可, 这个镜像有点大,需要等一会.
2.更改root初始密码
安装后, 不能注册新用户, 只能使用root账号登陆.所以
容器运行后, 进入到容器控制台, 查看root初始密码
cat /etc/gitlab/initial_root_password
然后 点击WebUI, 或者输入主机ip:5010进入到GitLab首页面
- 账户名: root
- 密码: 获取到的初始密码
登陆后, 先把密码改一下, 因为初始密码只存在24小时.
头像 -> Edit Profile -> password
3.更改生成仓库clone的域名和端口
这时仓库的路径是存在问题的. 如下.
场景
可以看到这两个地址的域名显示的是unraid而不是本机ip, 并且9080是容器内端口, 并不是之前在配置时填写的5010外部转发端口.
再次进入容器环境控制台.修改 /etc/gitlab/gitlab.rb 文件, 这里要注意不要修改其他的如xxx.yml文件, 因为很多文件都是自动生成的, 当你容器重启时会全部重置, 这会让你之前的配置都失效.
这个文件夹已经在容器配置时挂载了, 也就是主机里的config文件夹. 因为这个文件特别大, 如果不熟练vi的, 那就在修改文件权限在本地操作.
###### 修改前
#33行左右, 生成http地址时的域名 http://ip:port
# external_url 'GENERATED_EXTERNAL_URL'
#638行左右, 生成ssh地址时的端口
# gitlab_rails['gitlab_shell_ssh_port'] = 22
#66行左右 生成ssh地址时的域名
# gitlab_rails['gitlab_ssh_host'] = 'ssh.host_example.com'
###### 修改后
external_url 'http://gitlab.xxx.com'
gitlab_rails['gitlab_shell_ssh_port'] = 5013
gitlab_rails['gitlab_ssh_host'] = 'ddns.xxx.com'
确定好自己的环境,和目标效果
我这里这么设置是因为我的nas使用反向代理, xxx.com为一级域名, gitlab.xxx.com为二级域名并且指向的是 公网ip 的5010端口, ddns.xxx.com为二级域名指向的公网ip. 因为GitLab在容器中, 容器又在Nas中, 所以生成的ssh地址必须要有端口号(不然就要修改最外部nas22端口), 所以gitlab_shell_ssh_port也进行了更改.
修改完之后, 回到容器的控制台, 进行重新生成配置和重启,注意(不是容器的重启) 执行下面两条命令
$ gitlab-ctl reconfigure
$ gitlab-ctl restart
这个时候应该就出现问题了, 主页无法访问. 通过netstat -ntl
命令查看, 之前配置的内部9080端口没有监听活跃, 应该变成了80端口, 此时再次编译gitlab.br文件. 修改nginx[’listen_port’] 的默认值.
#1395行左右
# nginx['listen_port'] = nil
# 修改如下
nginx['listen_port'] = 9080
再次执行如下命令
$ gitlab-ctl reconfigure
$ gitlab-ctl restart
查看一下主页能否访问, 不能就重新启动一下容器.
(还有一种情况502, 说明主页可以访问,nginx端口没问题, 但是其他端口可能冲突)
4.简单测试下
再次进入项目查看:
现在生成的两个地址就是正确可用的, 在终端拉取验证一下. ssh拉取先把自己电脑的公钥添加到GitLab的账号上. 并且把需要外放的端口都在路由器进行转发.
至此, 一个基本的仓库搭建就完成了.