gitlab docker安装配置ldap

时间:2022-01-20 06:27:10

镜像下载

直接从dockerhub 下载官方镜像即可

docker pull gitlab/gitlab-ce

首次运行

在某个位置创建一个文件夹并运行如下命令:

docker run --hostname example.com -p 0.0.0.0:8443:443 -p 0.0.0.0:8080:80 -p 0.0.0.0:8022:22 --name gitlab -v $(pwd)/config:/etc/gitlab -v $(pwd)/logs:/var/log/gitlab -v $(pwd)/data:/var/opt/gitlab gitlab/gitlab-ce:latest

需要注意的是,这里的端口需要加上0.0.0.0才能提供给外部访问。

运行完成后,会在config下面生成gitlab.rb

设置ldap

编辑config目录下面的gitlab.rb,然后重新运行docker容器。

gitlab_rails['ldap_enabled'] = true

###! **remember to close this block with 'EOS' below**
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: 'ldap.host.com'
port:389
uid: 'uid' # 这里是个很坑的地方,在这里,用的是ldap的uid字段作为用户登录名,所以直接写了uid,换句话说,冒号前面的uid跟ldap不是一个意思的。
bind_dn: 'cn=admin,dc=domain,dc=cn'
password: 'password'
encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
verify_certificates: false # 如果用的证书是自签名的,那么这里需要设置为false以保证不会出现服务器证书验证错误。
ca_file: ''
ssl_version: ''
active_directory: false # 我用的slapd,如果用微软的ad,这里需要设置为true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'ou=person,dc=domain,dc=cn' # 这里设置用户名查找位置
user_filter: '' # 这里可以设置过滤规则,包括memberof操作符也可以用。
attributes:
username: ['uid', 'userid', 'sAMAccountName']
email: ['mail', 'email', 'userPrincipalName']
name: 'cn'
first_name: 'givenName'
last_name: 'sn'
## EE only
group_base: ''
admin_group: ''
sync_ssh_keys: false
EOS

其他设置

smtp设置,禁止注册,权限设置等等。