2022年11月29日 星期二

使用Synology LDAP帳號與自架設Gitlab帳號系統串接

目前Synology已經將Gitlab移除維護名單之外。依照很多不同的文章都說明要在Synology NAS上架設Gitlab,最簡單的方式還是採用Docker進行。但Synology的docker只能跑在x86系列的機器上,所以就只能購買plus系列的機器。現在就假設大家都已經有Synology的plus系列的NAS,並且已經安裝好docker。


設定LDAP帳號系統:

方法可以參考: http://murmur.markliou.tw/2022/11/synology-ldap-server-ubuntu-ldap-client.html 
上半部設定LDAP的方式。


使用環境設定如下:

  1. 使用Synology LDAP service
  2. 透過Docker架設gitlab
  3. 最終目標為在Synology NAS上架設Gitlab(使用Docker),並經由Webstation的reverse proxy將服務導至gitlab上。(需搭配DNS)

Gitlab安裝:
假設已經完成gitlab的docker架設。使用的版本是 gitlab/gitlab-ce:15.6.2-ce.0。Gitlab在使用上有幾個比較重要的Data需要保留,分別是data、config、logs,詳細掛載方式可以參考官方文件。以下還是提供官方建議的docker指令下法:

sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 22:22 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/gitlab \ --volume $GITLAB_HOME/logs:/var/log/gitlab \ --volume $GITLAB_HOME/data:/var/opt/gitlab \ --shm-size 256m \ gitlab/gitlab-ee:latest


不過在synology的Docker設定上就需要透過GUI進行。不難操作,就先額外開三個資料夾然後到設定中進行掛載。如果還是不清楚也可以參考其他人的文章


Gitlab設定檔:
主要設定檔放在 /etc/gitlab/gitlab.rb 。對應到docker掛載folder就應該落在config資料夾中。
找到以下幾行進行修改:
gitlab_rails['ldap_servers'] = {
  'main' => {
    'label' => 'LDAP',
    'host' =>  '192.168.81.51',
    'port' => 389,
    'uid' => 'cn',
    'encryption' => 'plain',
    'verify_certificates' => false,
    'bind_dn' => 'uid=root,cn=users,dc=cri,dc=lab',
    'password' => '????????',
    'timeout' => 10,
    'active_directory' => false,
    'allow_username_or_email_login' => true,
    'block_auto_created_users' => false,
    'base' => 'dc=cri,dc=lab',
    'user_filter' => '',
    'lowercase_usernames' => false,
    # EE Only
    'group_base' => '',
    'admin_group' => '',
    'external_groups' => [],
    'sync_ssh_keys' => false
  }
}

其中:
  • host是LDAP server的位置
  • port是LDAP對應的port,389是不加密,636就是加密。我的server是設定不加密,因此用389。
  • uid: 這邊是決定user在哪一層。Synology是訂在層
  • encryption是加密方式。我用的是不加密,因此是plain
  • bind_dn就直接到synology的LDAP server上就有提供
  • password是LDAP的密碼。
  • active_directory是windows的AD格式,我用的是synology的openLDAP格式,所以AD這邊設定為false。
  • base也用synology的LDAP server底下提供的就行了。

特殊設定的部分,就是要同步gitlab的LDAP權限。因為gitlab呼叫LDAP以後會把資訊站存。但是如果有人離開要把他的權限關閉,單純在LDAP server設定gitlab還是吃不到。必須要讓gitlab主動去跟LDAP server同步:
gitlab_rails['ldap_sync_worker_cron'] = "0 */12 * * *"
這樣就是12小時同步一次。詳細可以參考這邊

reverse proxy:
位置在:   控制台 > 登入入口 > 進階
把原本的 domain name的443對應到docker開出來的port就可以了。


Reference:
https://docs.gitlab.com/ee/administration/auth/ldap/
https://docs.gitlab.com/ee/administration/auth/ldap/ldap_synchronization.html
https://www.796t.com/article.php?id=100546

沒有留言:

張貼留言

DGX 分散儲存系統筆記

以torch的DDP(distributed data parallel)作為基底考慮: 1. 進行torchrun的時候僅需指定master node IP 2. 掛載資料區時建議以rank0的機器做下載,其他機器都Share同一個資料夾,所以需要透過iSCSI或是NFS進行 ...