Skip to content

群晖NAS搭建私有Gitlab仓库

✨文章摘要(AI生成)

本文介绍了如何在群晖NAS上搭建私有GitLab仓库,旨在解决使用公共Git服务时遇到的速度和限制问题。文章首先指出了群晖自带的Git Server套件的不足,建议使用Docker结合gitlab-ce进行搭建。

主要步骤包括:

1.下载GitLab镜像:通过Docker搜索并安装最新版本的gitlab-ce镜像。

2.配置并启动GitLab容器:设置数据、日志和配置目录,并进行路径和端口映射。

3.基本操作:包括关闭注册、修改管理员密码等。

4.SMTP邮箱配置:为了发送邮件,配置SMTP邮箱,确保能够进行账户激活和密码重置等操作。

5.HTTPS支持:推荐使用HTTPS访问,提供了申请免费证书和配置HTTPS的步骤。

6.常见问题:解决了激活邮件链接错误和密码配置遗漏等常见问题。

通过这些步骤,用户可以成功在群晖NAS上搭建一个功能齐全的私有GitLab仓库。

背景

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

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

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

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

下载Gitlab镜像

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

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

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

配置并启动Gitlab容器

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

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

下载后配置:

配置路径映射

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

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

配置一些环境变量:

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

配置常用的即可

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

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

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

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

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

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

账号:root

密码:GITLAB_ROOT_PASSWORD配置的值

登录系统:

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

Web基本操作

关闭注册

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

需要点击【Save Changes】保存。

修改密码

修改管理员密码:

配置Gitlab

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

配置SMTP邮箱

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

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

ruby
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文件。

yml
# 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中进入终端执行:

进入终端,执行命令:

sh
gitlab-ctl reconfigure

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

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

新建账户

找到Menu-> Admin菜单:

新建账户:

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

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

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

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/)文件夹

yml
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中配置

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

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

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

漏掉配置密码

如果漏掉指定GITLAB_ROOT_PASSWORD环境变量

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

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

properties
# 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.

原文地址

群晖NAS搭建私有Gitlab仓库