目录

Unraid安装GitLab记录

这个过程本来没打算写下来, 最开始以为在网上找个文章安装一下就行, 没想到折腾了好几个小时,为了以后省事整理一下.

安装环境和目标功能

  • Unraid 6.11.1
  • 安装的镜像: gitlab/gitlab-ce

因为nas有公网, 所以希望二级域名能访问仓库, 并且外网时httpssh都可以拉取推送.

安装开始

1.安装应用并填写配置信息

  • 应用商店搜索gitlab 安装 GitLab-CE镜像

  • 配置容器的端口转发, 3个可以随意填写.如下: 1.png

  • 点击应用安装即可, 这个镜像有点大,需要等一会.

2.更改root初始密码

安装后, 不能注册新用户, 只能使用root账号登陆.所以

容器运行后, 进入到容器控制台, 查看root初始密码

cat /etc/gitlab/initial_root_password 2.png

然后 点击WebUI, 或者输入主机ip:5010进入到GitLab首页面

  • 账户名: root
  • 密码: 获取到的初始密码

登陆后, 先把密码改一下, 因为初始密码只存在24小时.

头像 -> Edit Profile -> password

3.更改生成仓库clone的域名和端口

这时仓库的路径是存在问题的. 如下. 3.png

场景

可以看到这两个地址的域名显示的是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为二级域名并且指向的是 公网ip5010端口, 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.简单测试下

再次进入项目查看: 4.png

现在生成的两个地址就是正确可用的, 在终端拉取验证一下. ssh拉取先把自己电脑的公钥添加到GitLab的账号上. 并且把需要外放的端口都在路由器进行转发.

5.png

至此, 一个基本的仓库搭建就完成了.