群晖NAS搭建私有Gitlab仓库

背景

Github网站经常卡壳,Gitee免费版又有诸多限制,于是就打算自建Git服务。

群晖其实自带一个叫Git Server的套件,不过没有图形界面,而且还要开放ssh端口(ssh端口开放容易被攻击),不建议使用,建议使用Docker配合gitlab-ce来搭建。

Gitlab有企业版和社区版,个人用户就选择社区版够用了。

注:Gitlab依赖很多,启动速度很慢,而且比较耗资源,如果NAS的配置较差的话,建议不要安装了。

群晖NAS搭建私有Gitlab仓库

下载Gitlab镜像

安装参考文档:https://docs.gitlab.com/ee/install/docker.html

首先打开Docker套件,搜索gitlab-ce,然后双击安装,选择latest最新版。

群晖NAS搭建私有Gitlab仓库

文件有点大(2G),需要忍一忍。

配置并启动Gitlab容器

首先需要把相关目录建立起来,参考文档配置,本地设置根目录配置为/docker/gitlab,新建目录

数据目录:/docker/gitlab/data
日志目录:/docker/gitlab/logs
配置目录:/docker/gitlab/config

下载后配置:

群晖NAS搭建私有Gitlab仓库

配置路径映射

本地路径 容器路径 说明
/docker/gitlab/data /var/opt/gitlab 数据目录
/docker/gitlab/logs /var/log/gitlab 日志目录
/docker/gitlab/config /etc/gitlab 配置文件等

群晖NAS搭建私有Gitlab仓库

配置端口映射,其他端口可以不改变,配置一个需要使用的web端端口。

群晖NAS搭建私有Gitlab仓库

配置一些环境变量:

参考环境变量:https://docs.gitlab.com/ee/administration/environment_variables.html#supported-environment-variables

群晖NAS搭建私有Gitlab仓库

配置常用的即可

变量名 配置值 说明
GITLAB_HOST http://nas_ip_or_domain:8888 访问地址,测试下来似乎没有什么效果,还是要添加external_url
GITLAB_ROOT_PASSWORD root配置密码 可以不配置,后面通过文件去找生成的默认密码即可

基本配置完成,可以继续启动了。

Gitlab启动速度很慢,需要耐心等待。

配置启动好之后,可以通过http://nas_ip_or_domain:8888/来访问。

启动慢访问可能是404(直接无法访问),稍后可以得到502页面,再等等就好了。

群晖NAS搭建私有Gitlab仓库

启动完成后得到登录页面:

账号:root

密码:GITLAB_ROOT_PASSWORD配置的值

登录系统:

群晖NAS搭建私有Gitlab仓库

后续一些基本操作可以在图形界面完成。

Web基本操作

关闭注册

默认情况下是开放注册,可以关闭注册,手动来添加用户。

群晖NAS搭建私有Gitlab仓库

群晖NAS搭建私有Gitlab仓库

需要点击【Save Changes】保存。

修改密码

群晖NAS搭建私有Gitlab仓库

修改管理员密码:

群晖NAS搭建私有Gitlab仓库

配置Gitlab

Gitlab一些常规配置都在/docker/gitlab/config/gitlab.rb文件中。

配置SMTP邮箱

新建账户等很多操作需要发送邮件,因此需要先配置好SMTP邮箱,这里假设已经提前从邮件服务商获取到SMTP登录相关账户密码等信息了。

编辑/docker/gitlab/config/gitlab.rb文件,我这里使用qq的邮箱

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "stmp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxxx@vip.qq.com"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "stmp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_pool'] = true
gitlab_rails['gitlab_email_from'] = 'xxxxx@vip.qq.com'

# 其他附加配置
# 时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'

有不少文章说修改配置文件:/docker/gitlab/data/gitlab-rails/etc/gitlab.yml,其实这个文件是不建议修改,因为执行gitlab-ctl reconfigure后会被覆盖,要修改只能修改/docker/gitlab/config/gitlab.rb文件。

# This file is managed by gitlab-ctl. Manual changes will be
# erased! To change the contents below, edit /etc/gitlab/gitlab.rb
# and run `sudo gitlab-ctl reconfigure`.

修改完成后需要重新配置,可以在docker中进入终端执行:

群晖NAS搭建私有Gitlab仓库

进入终端,执行命令:

群晖NAS搭建私有Gitlab仓库

gitlab-ctl reconfigure

可以尝试重发一封邮件来测试:

地址:http://nas_ip_or_domain:8888/users/confirmation/new

新建账户

找到Menu-> Admin菜单:

群晖NAS搭建私有Gitlab仓库

新建账户:

群晖NAS搭建私有Gitlab仓库

重置密码邮件会通过邮件发送到邮箱,然后就可以修改密码。

群晖NAS搭建私有Gitlab仓库

管理员也可以再次打开编辑用户的页面,手动设置密码。

后续操作基本都可以在网页上完成操作了。

Gitlab HTTPS支持

一般比较推荐使用HTTPS访问,因此可以添加https支持。

申请免费证书

可以从https://freessl.cn申请证书,参考:https://fugary.com/?p=280

可以从KeyManager导出的zip文件中获取keycrt文件。

配置https

还是在/docker/gitlab/config/gitlab.rb文件中配置:

external_url配置的时候http改成https

把证书和秘钥文件上传到/docker/gitlab/config/ssl/(本地,对应容器的/etc/gitlab/ssl/)文件夹

external_url "https://xxxxxx.com:8888"
# 禁用letsencrypt
letsencrypt['enable'] = false
# http转https跳转
nginx['redirect_http_to_https'] = true
# 证书文件
nginx['ssl_certificate'] = "/etc/gitlab/ssl/xxxxxx.com_chain.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/xxxxxx.com_key.key"

然后一样重新配置gitlab-ctl reconfigure

常见问题

上面配置完成后一般都会遇到激活邮件的地址打开报错问题。

邮件链接报错

收到邮件后可以看到,邮箱激活链接不正确:http://gitlab-gitlab-ce1

而且clone地址也不正确,因此需要配置外部访问地址,还是在配置文件/docker/gitlab/config/gitlab.rb中配置

# host(clone地址有问题,需要配置这个,不过端口映射也要改,从8888:80改成8888:8888)
external_url "http://nas_ip_or_domain:8888"

修改后如果使用gitlab-ctl reconfigure,将会访问失败,需要停止容器,改一下映射端口再启动:

群晖NAS搭建私有Gitlab仓库

配置完成,可以发现新用户邮箱地址正确,clone地址也正确了。

漏掉配置密码

如果漏掉指定GITLAB_ROOT_PASSWORD环境变量

密码可以在/docker/gitlab/config/initial_root_password文件中找到,可以用文本编辑器打开看到:

看说明是提示增加环境变量GITLAB_ROOT_PASSWORD=xxxx

# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: xxxxxxxxxxxxxxxxxxxxxxxx

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

给TA打赏
共{{data.count}}人
人已打赏
运维

iOS开发者账号申请推送证书并导出P12文件

2024-11-19 10:37:41

运维

记录下Gitlab删除项目

2024-11-19 10:37:45

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索