前言
首先,确保服务器有4G以上的内存,gitlab非常吃内存,实测一个gitlab需要4G左右的内存,随着使用可能还会慢慢增加
1.获取邮箱授权码,让gitlab具有发送邮件功能
以QQ邮箱为例
邮箱首页有个设置
选择账户
开启POP3/SMTP服务
验证密保后会生成一串授权码
163邮箱为例
首页中进入设置
开启smtp服务
163会要求你发送短信认证,认证成功后会得到一串授权码
2.拉取镜像
docker pull gitlab/gitlab-ce
3.创建配置文件gitlab.rb
这个配置文件是踩着坑过来的,大伙们不要配错了,请仔细阅读并理解里面的注释
如果不需要发送邮件功能,下面的邮箱配置可以不用配
网上很多博客都有配置gitlab.yml,亲测没啥用,配了重启容器后也会被覆盖
# 外部访问的域名,如果在服务器上,则是公网ip
external_url 'http://192.168.100.3:8090'
# 外部访问的ssh地址,clone里面显示的地址,如果在服务器上,则是公网ip
gitlab_rails['gitlab_ssh_host'] = '192.168.100.3'
# ssh内部端口默认是22,无法改的,这里的填是宿主机的端口,一会儿要通过8091:22映射到容器内部
gitlab_rails['gitlab_shell_ssh_port'] = 8091
# 内存优化配置,不用去改
gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
sidekiq['max_concurrency'] = 8
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 2
prometheus_monitoring['enable'] = false
# QQ邮箱配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "243920161"
gitlab_rails['smtp_password'] = "刚刚生成的授权码"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_pool'] = false
gitlab_rails['gitlab_email_from'] = "243920161@qq.com"
# 163邮箱配置
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = "smtp.163.com"
# gitlab_rails['smtp_port'] = 465
# gitlab_rails['smtp_user_name'] = "l243920161@163.com"
# gitlab_rails['smtp_password'] = "刚刚生成的授权码"
# gitlab_rails['smtp_domain'] = "smtp.163.com"
# gitlab_rails['smtp_authentication'] = "login"
# gitlab_rails['smtp_enable_starttls_auto'] = false
# gitlab_rails['smtp_tls'] = true
# gitlab_rails['smtp_pool'] = false
# gitlab_rails['gitlab_email_from'] = "l243920161@163.com"
4.启动容器
docker run -d --name gitlab \
-p 0.0.0.0:8090:8090 \
-p 0.0.0.0:8091:22 \
-v /data/gitlab/gitlab.rb:/etc/gitlab/gitlab.rb \
--restart=always \
gitlab/gitlab-ce
出现这个界面不要慌,说明还正在启动,需要等个一两分钟
出现这个就说明启动成功了
5.查看管理员密码
进入容器
docker exec -it gitlab bash
查看密码
cat /etc/gitlab/initial_root_password
会看到一串Password就是密码了
然后就可以使用root账号进行登录,登录后可自行修改密码
6.测试邮件发送
进入容器
docker exec -it gitlab bash
进入控制台(执行这句会有点久,可能需要1分钟)
gitlab-rails console
发送测试邮件
Notify.test_email('要发送的邮箱@163.com','邮件标题','邮件内容').deliver_now
如果有收到一封测试邮件,说明邮箱配置没问题
7.重置管理员密码
如果忘记root密码,可以通过命令去重置
进入容器
docker exec -it gitlab bash
进入控制台(执行这句会执行比较久,可能需要1分钟)
gitlab-rails console -e production
进行重置(密码最少要8个字符)
user = User.where(id: 1).first
user.password = '12345678'
user.password_confirmation = '12345678'
user.save!
重置完成就可以通过root/12345678登录管理员账号了
8.修改root邮箱
为什么要修改root邮箱,因为gitlab有事件通知的时候,会给超管发邮件,超管就能及时收到最新的动态信息,如果没修改超管邮箱的话,给超管发邮件就会收到以下退信
原因是超级管理员的邮箱是admin@example.com,所以发送失败
登录root账号,进入admin设置
Users里面中对超级管理员进行编辑
改成你真实的邮箱
9.让用户可自行注册
这个设置在内网用就好了,公网上千万不要让用户自己注册,不然会有很多机器人恶意注册,而且还删不掉,公网上最好要让管理员审核
登录gitlab后,进入admin设置
进入通用设置
展开注册设置
修改这两个地方
修改完别忘了点保存
回到注册页面,我们去注册一个用户
到注册的邮箱看下,会收到一封确认信息,点击链接,即可完成注册
这时候用刚刚注册的号就可以登录了
登录成功如图所示