Gitlab整合群晖Synology Active Directory

群晖自己的文章并没有相关的帮助文档,网上也搜不到,这里留下来做个备份吧。

1、群晖先创建AD域

这里假定你设置的域名是wu.work,NetBIOS是wu,域管理员账号是ad-admin。大概类似截图中的样子

域管理员账号是你创建AD时输入的,不是NAS的管理员账号,别搞错了!

2、编辑gitlab.rb

如果你是用docker-compose安装的,应该会在docker-compose.yml里面指定了config目录的volume,在config目录里面就可以找到gitlab.rb。如果你是其他方式安装,文件在/etc/gitlab。如果还是找不着,自己Google。

打开gitlab.rb文件,找到ldap部分,然后把下面的内容贴进去(自己根据情况修改)

注意空格和缩进,注意空格和缩进,注意空格和缩进!!!
# LDAP
gitlab_rails['ldap_enabled'] = true
gitlab_rails['prevent_ldap_sign_in'] = false
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
  main: # 'main' is the GitLab 'provider ID' of this LDAP server
    label: 'LDAP'
    # NAS的IP地址
    host: '<IP>'
    port: 389
    uid: 'sAMAccountName'
    # 域管理员账号。格式:域\账号
    # 比如wu\ad-admin
    bind_dn: '<域\AD管理员>'
    password: '<域管理员密码>'
    encryption: 'start_tls' # 注意,这里用start_tls来加密传输
    verify_certificates: false # 证书都是NAS自己签发的,所以不验证SSL证书
    smartcard_auth: false
    active_directory: true # 这里设置为true,表示是AD,不是LDAP
    allow_username_or_email_login: false
    lowercase_usernames: false
    block_auto_created_users: false
    # 下面注意了,baseDN要参考初始化AD时所输入的域名。这里我的域名是wu.work
    # 所以baseDN是CN=Users,DC=wu,DC=work
    # 如果你创建时输入的是三级域名,比如ad.wu.work
    # 那么baseDN就是CN=Users,DC=ad,DC=wu,DC=work
    base: 'CN=Users,DC=wu,DC=work'
    user_filter: ''
    ## EE only
    group_base: ''
    admin_group: ''
    sync_ssh_keys: false
EOS

baseDN是个很容易出问题的地方,如果设置不对,就会导致不能登陆,或者抓不到用户信息。如果还是没搞懂,或者不太确定,那可以装一个Apache Directory Studio来确认下。如下图

直接在Users上,点击右键,选择Copy Entry/DN,拷贝出来的就是baseDN。

3、重启Gitlab

gitlab-ctl reconfigure

如果一切正常,Gitlab的登录界面就出现了LDAP选项