背景
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.