群晖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_HOST | http://nas_ip_or_domain:8888 | 访问地址,测试下来似乎没有什么效果,还是要添加external_url |
GITLAB_ROOT_PASSWORD | root 配置密码 | 可以不配置,后面通过文件去找生成的默认密码即可 |
基本配置完成,可以继续启动了。
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
的邮箱
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
中进入终端执行:
进入终端,执行命令:
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
文件中获取key
和crt
文件。
配置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
,将会访问失败,需要停止容器,改一下映射端口再启动:
配置完成,可以发现新用户邮箱地址正确,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.
原文地址